@@ -420,14 +420,20 @@ def _extract_elements(items: List) -> List[dict]:
420420 # for `if` flow elements, we have to go recursively
421421 if element ["_type" ] == "if" :
422422 if_element = element
423- then_elements = _extract_elements (if_element ["then" ])
424- else_elements = _extract_elements (if_element ["else" ])
423+ then_items = (
424+ if_element ["then" ] if isinstance (if_element ["then" ], list ) else []
425+ )
426+ else_items = (
427+ if_element ["else" ] if isinstance (if_element ["else" ], list ) else []
428+ )
429+ then_elements = _extract_elements (then_items )
430+ else_elements = _extract_elements (else_items )
425431
426432 # Remove the raw info
427433 del if_element ["then" ]
428434 del if_element ["else" ]
429435
430- if_element ["_next_else" ] = len (then_elements ) + 1
436+ if_element ["_next_else" ] = str ( len (then_elements ) + 1 )
431437
432438 # Add the "if"
433439 elements .append (if_element )
@@ -437,30 +443,35 @@ def _extract_elements(items: List) -> List[dict]:
437443
438444 # if we have "else" elements, we need to adjust also add a jump
439445 if len (else_elements ) > 0 :
440- elements .append ({"_type" : "jump" , "_next" : len (else_elements ) + 1 })
441- if_element ["_next_else" ] += 1
446+ elements .append (
447+ {"_type" : "jump" , "_next" : str (len (else_elements ) + 1 )}
448+ )
449+ if_element ["_next_else" ] = str (int (if_element ["_next_else" ]) + 1 )
442450
443451 # Add the "else" elements
444452 elements .extend (else_elements )
445453
446454 # WHILE
447455 elif element ["_type" ] == "while" :
448456 while_element = element
449- do_elements = _extract_elements (while_element ["do" ])
457+ do_items = (
458+ while_element ["do" ] if isinstance (while_element ["do" ], list ) else []
459+ )
460+ do_elements = _extract_elements (do_items )
450461 n = len (do_elements )
451462
452463 # Remove the raw info
453464 del while_element ["do" ]
454465
455466 # On break we have to skip n elements and 1 jump, hence we go to n+2
456- while_element ["_next_on_break" ] = n + 2
467+ while_element ["_next_on_break" ] = str ( n + 2 )
457468
458469 # We need to compute the jumps on break and on continue for each element
459470 for j in range (n ):
460471 # however, we make sure we don't override an inner loop
461472 if "_next_on_break" not in do_elements [j ]:
462- do_elements [j ]["_next_on_break" ] = n + 1 - j
463- do_elements [j ]["_next_on_continue" ] = - 1 * j - 1
473+ do_elements [j ]["_next_on_break" ] = str ( n + 1 - j )
474+ do_elements [j ]["_next_on_continue" ] = str ( - 1 * j - 1 )
464475
465476 # Add the "while"
466477 elements .append (while_element )
@@ -500,7 +511,7 @@ def _extract_elements(items: List) -> List[dict]:
500511 branch_element = {
501512 "_type" : "branch" ,
502513 # these are the relative positions to the current position
503- "branch_heads" : [],
514+ "branch_heads" : [], # type: ignore
504515 }
505516 branch_element_pos = len (elements )
506517 elements .append (branch_element )
@@ -520,7 +531,7 @@ def _extract_elements(items: List) -> List[dict]:
520531 branch_element ["_source_mapping" ] = branch_path [0 ]["_source_mapping" ]
521532
522533 # Create the jump element
523- jump_element = {"_type" : "jump" , "_next" : 1 }
534+ jump_element = {"_type" : "jump" , "_next" : 1 } # type: ignore
524535
525536 # We compute how far we need to jump based on the remaining branches
526537 j = branch_idx + 1
0 commit comments