mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-12 22:41:27 +00:00
Search parent namespaces when resolving identifiers
This commit is contained in:
@ -6,36 +6,36 @@
|
||||
(memory $0 1)
|
||||
(export "memory" (memory $0))
|
||||
(start $start)
|
||||
(func $getter-setter/Foo.get_bar (; 0 ;) (type $i) (result i32)
|
||||
(func $getter-setter/Foo.get:bar (; 0 ;) (type $i) (result i32)
|
||||
(get_global $getter-setter/Foo._bar)
|
||||
)
|
||||
(func $getter-setter/Foo.set_bar (; 1 ;) (type $iv) (param $0 i32)
|
||||
(func $getter-setter/Foo.set:bar (; 1 ;) (type $iv) (param $0 i32)
|
||||
(set_global $getter-setter/Foo._bar
|
||||
(get_local $0)
|
||||
)
|
||||
)
|
||||
(func $start (; 2 ;) (type $v)
|
||||
(if
|
||||
(call $getter-setter/Foo.get_bar)
|
||||
(call $getter-setter/Foo.get:bar)
|
||||
(unreachable)
|
||||
)
|
||||
(call $getter-setter/Foo.set_bar
|
||||
(call $getter-setter/Foo.set:bar
|
||||
(i32.const 1)
|
||||
)
|
||||
(if
|
||||
(i32.ne
|
||||
(call $getter-setter/Foo.get_bar)
|
||||
(call $getter-setter/Foo.get:bar)
|
||||
(i32.const 1)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(if
|
||||
(block (result i32)
|
||||
(call $getter-setter/Foo.set_bar
|
||||
(call $getter-setter/Foo.set:bar
|
||||
(i32.const 2)
|
||||
)
|
||||
(i32.ne
|
||||
(call $getter-setter/Foo.get_bar)
|
||||
(call $getter-setter/Foo.get:bar)
|
||||
(i32.const 2)
|
||||
)
|
||||
)
|
||||
|
@ -7,12 +7,12 @@
|
||||
(memory $0 1)
|
||||
(export "memory" (memory $0))
|
||||
(start $start)
|
||||
(func $getter-setter/Foo.get_bar (; 0 ;) (type $i) (result i32)
|
||||
(func $getter-setter/Foo.get:bar (; 0 ;) (type $i) (result i32)
|
||||
(return
|
||||
(get_global $getter-setter/Foo._bar)
|
||||
)
|
||||
)
|
||||
(func $getter-setter/Foo.set_bar (; 1 ;) (type $iv) (param $0 i32)
|
||||
(func $getter-setter/Foo.set:bar (; 1 ;) (type $iv) (param $0 i32)
|
||||
(set_global $getter-setter/Foo._bar
|
||||
(get_local $0)
|
||||
)
|
||||
@ -21,19 +21,19 @@
|
||||
(if
|
||||
(i32.eqz
|
||||
(i32.eq
|
||||
(call $getter-setter/Foo.get_bar)
|
||||
(call $getter-setter/Foo.get:bar)
|
||||
(i32.const 0)
|
||||
)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(call $getter-setter/Foo.set_bar
|
||||
(call $getter-setter/Foo.set:bar
|
||||
(i32.const 1)
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(i32.eq
|
||||
(call $getter-setter/Foo.get_bar)
|
||||
(call $getter-setter/Foo.get:bar)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
@ -43,10 +43,10 @@
|
||||
(i32.eqz
|
||||
(i32.eq
|
||||
(block (result i32)
|
||||
(call $getter-setter/Foo.set_bar
|
||||
(call $getter-setter/Foo.set:bar
|
||||
(i32.const 2)
|
||||
)
|
||||
(call $getter-setter/Foo.get_bar)
|
||||
(call $getter-setter/Foo.get:bar)
|
||||
)
|
||||
(i32.const 2)
|
||||
)
|
||||
|
@ -1,11 +1,17 @@
|
||||
(module
|
||||
(type $i (func (result i32)))
|
||||
(type $v (func))
|
||||
(global $namespace/Outer.Inner.aVar (mut i32) (i32.const 0))
|
||||
(memory $0 1)
|
||||
(export "test" (func $namespace/test))
|
||||
(export "memory" (memory $0))
|
||||
(func $namespace/test (; 0 ;) (type $v)
|
||||
(block $__inlined_func$namespace/Outer.Inner.aFunc
|
||||
(nop)
|
||||
(start $start)
|
||||
(func $start (; 0 ;) (type $v)
|
||||
(drop
|
||||
(block (result i32)
|
||||
(block $__inlined_func$namespace/Outer.Inner.aFunc (result i32)
|
||||
(get_global $namespace/Outer.Inner.aVar)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@ -1,12 +1,16 @@
|
||||
(module
|
||||
(type $i (func (result i32)))
|
||||
(type $v (func))
|
||||
(global $namespace/Outer.Inner.aVar (mut i32) (i32.const 0))
|
||||
(memory $0 1)
|
||||
(export "test" (func $namespace/test))
|
||||
(export "memory" (memory $0))
|
||||
(func $namespace/Outer.Inner.aFunc (; 0 ;) (type $v)
|
||||
(nop)
|
||||
(start $start)
|
||||
(func $namespace/Outer.Inner.aFunc (; 0 ;) (type $i) (result i32)
|
||||
(get_global $namespace/Outer.Inner.aVar)
|
||||
)
|
||||
(func $namespace/test (; 1 ;) (type $v)
|
||||
(call $namespace/Outer.Inner.aFunc)
|
||||
(func $start (; 1 ;) (type $v)
|
||||
(drop
|
||||
(call $namespace/Outer.Inner.aFunc)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@ -1,13 +1,11 @@
|
||||
namespace Outer {
|
||||
export namespace Inner {
|
||||
export let aVar: i32;
|
||||
export function aFunc(): void {}
|
||||
export let aVar: i32 = 0;
|
||||
export function aFunc(): i32 { return aVar; }
|
||||
export enum anEnum { ONE = 1, TWO = 2 }
|
||||
}
|
||||
}
|
||||
|
||||
export function test(): void {
|
||||
Outer.Inner.aVar;
|
||||
Outer.Inner.aFunc();
|
||||
Outer.Inner.anEnum.ONE;
|
||||
}
|
||||
Outer.Inner.aVar;
|
||||
Outer.Inner.aFunc();
|
||||
Outer.Inner.anEnum.ONE;
|
||||
|
@ -1,19 +1,25 @@
|
||||
(module
|
||||
(type $i (func (result i32)))
|
||||
(type $v (func))
|
||||
(global $namespace/Outer.Inner.aVar (mut i32) (i32.const 0))
|
||||
(global $namespace/Outer.Inner.anEnum.ONE i32 (i32.const 1))
|
||||
(global $namespace/Outer.Inner.anEnum.TWO i32 (i32.const 2))
|
||||
(global $HEAP_BASE i32 (i32.const 4))
|
||||
(memory $0 1)
|
||||
(export "test" (func $namespace/test))
|
||||
(export "memory" (memory $0))
|
||||
(func $namespace/Outer.Inner.aFunc (; 0 ;) (type $v)
|
||||
(start $start)
|
||||
(func $namespace/Outer.Inner.aFunc (; 0 ;) (type $i) (result i32)
|
||||
(return
|
||||
(get_global $namespace/Outer.Inner.aVar)
|
||||
)
|
||||
)
|
||||
(func $namespace/test (; 1 ;) (type $v)
|
||||
(func $start (; 1 ;) (type $v)
|
||||
(drop
|
||||
(get_global $namespace/Outer.Inner.aVar)
|
||||
)
|
||||
(call $namespace/Outer.Inner.aFunc)
|
||||
(drop
|
||||
(call $namespace/Outer.Inner.aFunc)
|
||||
)
|
||||
(drop
|
||||
(get_global $namespace/Outer.Inner.anEnum.ONE)
|
||||
)
|
||||
@ -70,7 +76,6 @@
|
||||
GLOBAL: namespace/Outer.Inner.aVar
|
||||
FUNCTION_PROTOTYPE: namespace/Outer.Inner.aFunc
|
||||
ENUM: namespace/Outer.Inner.anEnum
|
||||
FUNCTION_PROTOTYPE: namespace/test
|
||||
[program.exports]
|
||||
FUNCTION_PROTOTYPE: namespace/test
|
||||
|
||||
;)
|
||||
|
Reference in New Issue
Block a user