mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-25 15:12:12 +00:00
This catches the most common cases but doesn't yet implement inference involving the return type because some prequesites are not yet in place (see test case).
92 lines
1.7 KiB
Plaintext
92 lines
1.7 KiB
Plaintext
(module
|
|
(type $ii (func (param i32) (result i32)))
|
|
(type $iiiiv (func (param i32 i32 i32 i32)))
|
|
(type $FF (func (param f64) (result f64)))
|
|
(type $ff (func (param f32) (result f32)))
|
|
(type $v (func))
|
|
(import "env" "abort" (func $abort (param i32 i32 i32 i32)))
|
|
(memory $0 1)
|
|
(data (i32.const 4) "\10\00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s")
|
|
(export "memory" (memory $0))
|
|
(start $start)
|
|
(func $call-inferred/foo<i32> (; 1 ;) (type $ii) (param $0 i32) (result i32)
|
|
(get_local $0)
|
|
)
|
|
(func $call-inferred/foo<f64> (; 2 ;) (type $FF) (param $0 f64) (result f64)
|
|
(get_local $0)
|
|
)
|
|
(func $call-inferred/foo<f32> (; 3 ;) (type $ff) (param $0 f32) (result f32)
|
|
(get_local $0)
|
|
)
|
|
(func $start (; 4 ;) (type $v)
|
|
(if
|
|
(i32.ne
|
|
(call $call-inferred/foo<i32>
|
|
(i32.const 42)
|
|
)
|
|
(i32.const 42)
|
|
)
|
|
(block
|
|
(call $abort
|
|
(i32.const 0)
|
|
(i32.const 4)
|
|
(i32.const 5)
|
|
(i32.const 0)
|
|
)
|
|
(unreachable)
|
|
)
|
|
)
|
|
(if
|
|
(f64.ne
|
|
(call $call-inferred/foo<f64>
|
|
(f64.const 42)
|
|
)
|
|
(f64.const 42)
|
|
)
|
|
(block
|
|
(call $abort
|
|
(i32.const 0)
|
|
(i32.const 4)
|
|
(i32.const 6)
|
|
(i32.const 0)
|
|
)
|
|
(unreachable)
|
|
)
|
|
)
|
|
(if
|
|
(f32.ne
|
|
(call $call-inferred/foo<f32>
|
|
(f32.const 42)
|
|
)
|
|
(f32.const 42)
|
|
)
|
|
(block
|
|
(call $abort
|
|
(i32.const 0)
|
|
(i32.const 4)
|
|
(i32.const 7)
|
|
(i32.const 0)
|
|
)
|
|
(unreachable)
|
|
)
|
|
)
|
|
(if
|
|
(f32.ne
|
|
(call $call-inferred/foo<f32>
|
|
(f32.const 42)
|
|
)
|
|
(f32.const 42)
|
|
)
|
|
(block
|
|
(call $abort
|
|
(i32.const 0)
|
|
(i32.const 4)
|
|
(i32.const 13)
|
|
(i32.const 0)
|
|
)
|
|
(unreachable)
|
|
)
|
|
)
|
|
)
|
|
)
|