Better testing infrastructure; Initial exports/imports/re-exports

This commit is contained in:
dcodeIO
2017-12-02 01:14:15 +01:00
parent 00303fdf30
commit ef859937a8
34 changed files with 713 additions and 248 deletions

15
tests/compiler/export.ts Normal file
View File

@ -0,0 +1,15 @@
export function add(a: i32, b: i32): i32 {
return a + b;
}
function sub(a: i32, b: i32): i32 {
return a - b;
}
export { sub as renamed_sub };
export let a: i32 = 1;
let b: i32 = 2;
export { b as renamed_b };

View File

@ -0,0 +1,52 @@
(module
(type $iii (func (param i32 i32) (result i32)))
(global $export/a i32 (i32.const 1))
(global $export/b i32 (i32.const 2))
(memory $0 1)
(data (i32.const 4) "\08\00\00\00")
(export "memory" (memory $0))
(func $export/add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(return
(i32.add
(get_local $0)
(get_local $1)
)
)
)
(func $export/sub (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(return
(i32.sub
(get_local $0)
(get_local $1)
)
)
)
)
(;
[program.elements]
clz
ctz
popcnt
rotl
rotr
abs
ceil
copysign
floor
max
min
nearest
sqrt
trunc
isNaN
isFinite
export/add
export/sub
export/a
export/b
[program.exports]
export/add
export/renamed_sub
export/a
export/renamed_b
;)

3
tests/compiler/import.ts Normal file
View File

@ -0,0 +1,3 @@
import { add, renamed_sub as sub, a, renamed_b as b } from "./export";
add(a, b) + sub(b, a);

View File

@ -0,0 +1,72 @@
(module
(type $iii (func (param i32 i32) (result i32)))
(type $v (func))
(global $export/a i32 (i32.const 1))
(global $export/b i32 (i32.const 2))
(memory $0 1)
(data (i32.const 4) "\08\00\00\00")
(export "memory" (memory $0))
(start $start)
(func $export/add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(return
(i32.add
(get_local $0)
(get_local $1)
)
)
)
(func $export/sub (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(return
(i32.sub
(get_local $0)
(get_local $1)
)
)
)
(func $start (; 2 ;) (type $v)
(drop
(i32.add
(call $export/add
(get_global $export/a)
(get_global $export/b)
)
(call $export/sub
(get_global $export/b)
(get_global $export/a)
)
)
)
)
)
(;
[program.elements]
clz
ctz
popcnt
rotl
rotr
abs
ceil
copysign
floor
max
min
nearest
sqrt
trunc
isNaN
isFinite
export/add
export/sub
export/a
export/b
import/add
import/sub
import/a
import/b
[program.exports]
export/add
export/renamed_sub
export/a
export/renamed_b
;)

View File

@ -0,0 +1,7 @@
export { add, renamed_sub } from "./export";
import { add as imported_add, renamed_sub as imported_sub } from "./export";
export { imported_add as renamed_add, imported_sub as rerenamed_sub };
imported_add(1, 2) + imported_sub(3, 4);

View File

@ -0,0 +1,72 @@
(module
(type $iii (func (param i32 i32) (result i32)))
(type $v (func))
(memory $0 1)
(data (i32.const 4) "\08\00\00\00")
(export "memory" (memory $0))
(start $start)
(func $export/add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(return
(i32.add
(get_local $0)
(get_local $1)
)
)
)
(func $export/sub (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(return
(i32.sub
(get_local $0)
(get_local $1)
)
)
)
(func $start (; 2 ;) (type $v)
(drop
(i32.add
(call $export/add
(i32.const 1)
(i32.const 2)
)
(call $export/sub
(i32.const 3)
(i32.const 4)
)
)
)
)
)
(;
[program.elements]
clz
ctz
popcnt
rotl
rotr
abs
ceil
copysign
floor
max
min
nearest
sqrt
trunc
isNaN
isFinite
export/add
export/sub
export/a
export/b
reexport/imported_add
reexport/imported_sub
[program.exports]
export/add
export/renamed_sub
export/a
export/renamed_b
reexport/add
reexport/renamed_sub
reexport/renamed_add
reexport/rerenamed_sub
;)