|
| 1 | +from typing import cast |
| 2 | + |
1 | 3 | from kirin import ir, types |
| 4 | +from kirin.ir import Block, Region |
2 | 5 | from kirin.decl import info, statement |
3 | 6 | from kirin.print.printer import Printer |
4 | 7 |
|
@@ -31,31 +34,29 @@ def __init__( |
31 | 34 | else_body: ir.Region | ir.Block | None = None, |
32 | 35 | ): |
33 | 36 | if then_body.IS_REGION: |
34 | | - then_body_region = then_body |
| 37 | + then_body_region = cast(Region, then_body) |
35 | 38 | if then_body_region.blocks: |
36 | 39 | then_body_block = then_body_region.blocks[-1] |
37 | 40 | else: |
38 | 41 | then_body_block = None |
39 | | - elif then_body.IS_BLOCK: |
40 | | - then_body_block = then_body |
41 | | - then_body_region = ir.Region(then_body) |
| 42 | + else: # then_body.IS_BLOCK: |
| 43 | + then_body_block = cast(Block, then_body) |
| 44 | + then_body_region = Region(then_body) |
42 | 45 |
|
43 | | - if else_body.IS_REGION: |
| 46 | + if else_body is None: |
| 47 | + else_body_region = ir.Region() |
| 48 | + else_body_block = None |
| 49 | + elif else_body.IS_REGION: |
| 50 | + else_body_region = cast(Region, else_body) |
44 | 51 | if not else_body.blocks: # empty region |
45 | | - else_body_region = else_body |
46 | 52 | else_body_block = None |
47 | 53 | elif len(else_body.blocks) == 0: |
48 | | - else_body_region = else_body |
49 | 54 | else_body_block = None |
50 | 55 | else: |
51 | | - else_body_region = else_body |
52 | 56 | else_body_block = else_body_region.blocks[0] |
53 | | - elif else_body.IS_BLOCK: |
54 | | - else_body_region = ir.Region(else_body) |
| 57 | + else: # else_body.IS_BLOCK: |
| 58 | + else_body_region = ir.Region(cast(Block, else_body)) |
55 | 59 | else_body_block = else_body |
56 | | - else: |
57 | | - else_body_region = ir.Region() |
58 | | - else_body_block = None |
59 | 60 |
|
60 | 61 | # if either then or else body has yield, we generate results |
61 | 62 | # we assume if both have yields, they have the same number of results |
|
0 commit comments