compiler: Check shared lowerer state initialization
09c34aea681485a2d37574fb0351d7c5ff0c25eebada8dbf9357c855627a331a
1 parent
bc981908
lib/std/lang/lower.rad
+13 -14
| 812 | 812 | pkgName: *[u8], |
|
| 813 | 813 | arena: &mut alloc::Arena |
|
| 814 | 814 | ) -> il::Program throws (LowerError) { |
|
| 815 | 815 | let functionArena = (&mut *arena) as *unsafe mut alloc::Arena; |
|
| 816 | 816 | let resolved: 'phase = &*res where 'arena: 'phase in { |
|
| 817 | - | let mut low = Lowerer 'arena 'phase { |
|
| 818 | - | arena: (&mut *arena) as *unsafe mut alloc::Arena, |
|
| 819 | - | resolver: resolved, |
|
| 820 | - | moduleGraph: nil, |
|
| 821 | - | pkgName, |
|
| 822 | - | currentMod: nil, |
|
| 823 | - | data: &mut [], |
|
| 824 | - | packageDataStart: 0, |
|
| 825 | - | functions: &mut [], |
|
| 826 | - | symbolNames: &mut [], |
|
| 827 | - | errTags: &mut [], |
|
| 828 | - | errTagCounter: 1, |
|
| 829 | - | options: LowerOptions { debug: false, buildTest: false }, |
|
| 830 | - | }; |
|
| 817 | + | let mut low = lowererState(resolved, nil, pkgName, functionArena, |
|
| 818 | + | LowerOptions { debug: false, buildTest: false }); |
|
| 831 | 819 | try lowerDecls(&mut low, root, true, functionArena); |
|
| 832 | 820 | ||
| 833 | 821 | return finalize(low); |
|
| 834 | 822 | } |
|
| 835 | 823 | } |
| 844 | 832 | res: &'phase resolver::Resolver 'arena, |
|
| 845 | 833 | graph: &'phase module::ModuleGraph, |
|
| 846 | 834 | pkgName: *[u8], |
|
| 847 | 835 | arena: *unsafe mut alloc::Arena, |
|
| 848 | 836 | options: LowerOptions |
|
| 837 | + | ) -> Lowerer 'arena 'phase where 'arena: 'phase { |
|
| 838 | + | return lowererState(res, graph, pkgName, arena, options); |
|
| 839 | + | } |
|
| 840 | + | ||
| 841 | + | /// Initialize lowering state with empty owned collections and borrowed metadata. |
|
| 842 | + | fn lowererState 'arena 'phase ( |
|
| 843 | + | res: &'phase resolver::Resolver 'arena, |
|
| 844 | + | graph: ?&'phase module::ModuleGraph, |
|
| 845 | + | pkgName: *[u8], |
|
| 846 | + | arena: *unsafe mut alloc::Arena, |
|
| 847 | + | options: LowerOptions |
|
| 849 | 848 | ) -> Lowerer 'arena 'phase where 'arena: 'phase { |
|
| 850 | 849 | return Lowerer 'arena 'phase { |
|
| 851 | 850 | arena, |
|
| 852 | 851 | resolver: res, |
|
| 853 | 852 | moduleGraph: graph, |