@@ -292,29 +292,33 @@ class PythonExpressionGenerator {
292292
293293 var funcNames = new ArrayList<String > ()
294294
295- for (i : 0 .. < expr. cases. size- 1 ) {
296- val thenExpr= expr. cases. get(i)
297- val thenExprDef = generateExpression(thenExpr. getExpression(), ifLevel + 1 , isLambda)
298- val funcName = ' ' ' _then_«funcNames.size()+1»' ' '
299- funcNames. add(funcName)
300- switchCondBlocks. add(
301- ' ' '
302- def «funcName»():
303- return «thenExprDef»
304- ' ' '
305- )
295+ for (i : 0 .. < expr. cases. size) {
296+ if (expr. cases. get(i). isDefault()){
297+ // default case
298+ val defaultExprDef = generateExpression(expr. getDefault(), 0 , isLambda)
299+ val defaultFuncName = ' ' ' _then_default' ' '
300+ funcNames. add(defaultFuncName)
301+ switchCondBlocks. add(
302+ ' ' '
303+ def «defaultFuncName»():
304+ return «defaultExprDef»
305+ ' ' '
306+ )}
307+ else {
308+ val thenExpr= expr. cases. get(i)
309+ val thenExprDef = generateExpression(thenExpr. getExpression(), ifLevel + 1 , isLambda)
310+ val funcName = ' ' ' _then_«funcNames.size()+1»' ' '
311+ funcNames. add(funcName)
312+ switchCondBlocks. add(
313+ ' ' '
314+ def «funcName»():
315+ return «thenExprDef»
316+ ' ' '
317+ )
318+ }
306319 }
307320
308- // default case
309- val defaultExprDef = generateExpression(expr. getDefault(), 0 , isLambda)
310- val defaultFuncName = ' ' ' _then_default' ' '
311- funcNames. add(defaultFuncName)
312- switchCondBlocks. add(
313- ' ' '
314- def «defaultFuncName»():
315- return «defaultExprDef»
316- ' ' '
317- )
321+
318322 var _builder = new StringConcatenation ()
319323
320324 // Generate switch logic
@@ -323,38 +327,41 @@ class PythonExpressionGenerator {
323327 _builder. append(attr)
324328 _builder. newLine()
325329 // Append each conditional
326- for (i : 0 .. < expr. cases. size- 1 ) {
327- val guard = expr. cases. get(i). getGuard()
328-
329- val prefix = (i == 0 ) ? " if " : " elif "
330- _builder. append(indent)
331- _builder. append(prefix)
332- if (guard. getLiteralGuard() !== null ) {
333- val guardExpr = generateExpression(guard. getLiteralGuard(), 0 , isLambda)
334- _builder. append(" switchAttribute == " )
335- _builder. append(guardExpr)
336- } else {
337- val guardExpr = getGuardExpression(guard, isLambda)
338- _builder. append(guardExpr)
330+ for (i : 0 .. < expr. cases. size) {
331+ if (expr. cases. get(i). isDefault()){
332+ // Default else
333+ _builder. append(indent)
334+ _builder. append(" else:" )
335+ _builder. newLine()
336+ _builder. append(indent)
337+ _builder. append(" return " )
338+ _builder. append(funcNames. last)
339+ _builder. append(" ()" )
340+ }
341+ else {
342+ val guard = expr. cases. get(i). getGuard()
343+
344+ val prefix = (i == 0 ) ? " if " : " elif "
345+ _builder. append(indent)
346+ _builder. append(prefix)
347+ if (guard. getLiteralGuard() !== null ) {
348+ val guardExpr = generateExpression(guard. getLiteralGuard(), 0 , isLambda)
349+ _builder. append(" switchAttribute == " )
350+ _builder. append(guardExpr)
351+ } else {
352+ val guardExpr = getGuardExpression(guard, isLambda)
353+ _builder. append(guardExpr)
354+ }
355+ _builder. append(" :" )
356+ _builder. newLine()
357+ _builder. append(indent)
358+ _builder. append(" return " )
359+ _builder. append(funcNames. get(i))
360+ _builder. append(" ()" )
361+ _builder. newLine()
339362 }
340- _builder. append(" :" )
341- _builder. newLine()
342- _builder. append(indent)
343- _builder. append(" return " )
344- _builder. append(funcNames. get(i))
345- _builder. append(" ()" )
346- _builder. newLine()
347363 }
348364
349- // Default else
350- _builder. append(indent)
351- _builder. append(" else:" )
352- _builder. newLine()
353- _builder. append(indent)
354- _builder. append(" return " )
355- _builder. append(funcNames. last)
356- _builder. append(" ()" )
357-
358365 return _builder. toString
359366 }
360367
0 commit comments