Fix external names of class exports and similar; Support a few more kinds in TSDBuilder, see #74

This commit is contained in:
dcodeIO
2018-04-15 00:34:19 +02:00
parent 78a679759a
commit 81223977d0
15 changed files with 713 additions and 202 deletions

View File

@ -18,20 +18,20 @@
(global $enum/SelfReference.ZERO i32 (i32.const 0))
(global $enum/SelfReference.ONE i32 (i32.const 1))
(memory $0 1)
(export "enum/Implicit.ZERO" (global $enum/Implicit.ZERO))
(export "enum/Implicit.ONE" (global $enum/Implicit.ONE))
(export "enum/Implicit.TWO" (global $enum/Implicit.TWO))
(export "enum/Implicit.THREE" (global $enum/Implicit.THREE))
(export "enum/Explicit.ZERO" (global $enum/Explicit.ZERO))
(export "enum/Explicit.ONE" (global $enum/Explicit.ONE))
(export "enum/Explicit.TWO" (global $enum/Explicit.TWO))
(export "enum/Explicit.THREE" (global $enum/Explicit.THREE))
(export "enum/Mixed.ZERO" (global $enum/Mixed.ZERO))
(export "enum/Mixed.ONE" (global $enum/Mixed.ONE))
(export "enum/Mixed.THREE" (global $enum/Mixed.THREE))
(export "enum/Mixed.FOUR" (global $enum/Mixed.FOUR))
(export "enum/SelfReference.ZERO" (global $enum/SelfReference.ZERO))
(export "enum/SelfReference.ONE" (global $enum/SelfReference.ONE))
(export "Implicit.ZERO" (global $enum/Implicit.ZERO))
(export "Implicit.ONE" (global $enum/Implicit.ONE))
(export "Implicit.TWO" (global $enum/Implicit.TWO))
(export "Implicit.THREE" (global $enum/Implicit.THREE))
(export "Explicit.ZERO" (global $enum/Explicit.ZERO))
(export "Explicit.ONE" (global $enum/Explicit.ONE))
(export "Explicit.TWO" (global $enum/Explicit.TWO))
(export "Explicit.THREE" (global $enum/Explicit.THREE))
(export "Mixed.ZERO" (global $enum/Mixed.ZERO))
(export "Mixed.ONE" (global $enum/Mixed.ONE))
(export "Mixed.THREE" (global $enum/Mixed.THREE))
(export "Mixed.FOUR" (global $enum/Mixed.FOUR))
(export "SelfReference.ZERO" (global $enum/SelfReference.ZERO))
(export "SelfReference.ONE" (global $enum/SelfReference.ONE))
(export "memory" (memory $0))
(start $start)
(func $enum/getZero (; 0 ;) (type $i) (result i32)

View File

@ -19,20 +19,20 @@
(global $enum/SelfReference.ONE i32 (i32.const 1))
(global $HEAP_BASE i32 (i32.const 4))
(memory $0 1)
(export "enum/Implicit.ZERO" (global $enum/Implicit.ZERO))
(export "enum/Implicit.ONE" (global $enum/Implicit.ONE))
(export "enum/Implicit.TWO" (global $enum/Implicit.TWO))
(export "enum/Implicit.THREE" (global $enum/Implicit.THREE))
(export "enum/Explicit.ZERO" (global $enum/Explicit.ZERO))
(export "enum/Explicit.ONE" (global $enum/Explicit.ONE))
(export "enum/Explicit.TWO" (global $enum/Explicit.TWO))
(export "enum/Explicit.THREE" (global $enum/Explicit.THREE))
(export "enum/Mixed.ZERO" (global $enum/Mixed.ZERO))
(export "enum/Mixed.ONE" (global $enum/Mixed.ONE))
(export "enum/Mixed.THREE" (global $enum/Mixed.THREE))
(export "enum/Mixed.FOUR" (global $enum/Mixed.FOUR))
(export "enum/SelfReference.ZERO" (global $enum/SelfReference.ZERO))
(export "enum/SelfReference.ONE" (global $enum/SelfReference.ONE))
(export "Implicit.ZERO" (global $enum/Implicit.ZERO))
(export "Implicit.ONE" (global $enum/Implicit.ONE))
(export "Implicit.TWO" (global $enum/Implicit.TWO))
(export "Implicit.THREE" (global $enum/Implicit.THREE))
(export "Explicit.ZERO" (global $enum/Explicit.ZERO))
(export "Explicit.ONE" (global $enum/Explicit.ONE))
(export "Explicit.TWO" (global $enum/Explicit.TWO))
(export "Explicit.THREE" (global $enum/Explicit.THREE))
(export "Mixed.ZERO" (global $enum/Mixed.ZERO))
(export "Mixed.ONE" (global $enum/Mixed.ONE))
(export "Mixed.THREE" (global $enum/Mixed.THREE))
(export "Mixed.FOUR" (global $enum/Mixed.FOUR))
(export "SelfReference.ZERO" (global $enum/SelfReference.ZERO))
(export "SelfReference.ONE" (global $enum/SelfReference.ONE))
(export "memory" (memory $0))
(start $start)
(func $enum/getZero (; 0 ;) (type $i) (result i32)

View File

@ -11,7 +11,7 @@
(export "a" (global $export/a))
(export "b" (global $export/b))
(export "renamed_c" (global $export/c))
(export "two" (func $export/ns.two))
(export "ns.two" (func $export/ns.two))
(export "memory" (memory $0))
(func $export/add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.add

View File

@ -12,7 +12,7 @@
(export "a" (global $export/a))
(export "b" (global $export/b))
(export "renamed_c" (global $export/c))
(export "two" (func $export/ns.two))
(export "ns.two" (func $export/ns.two))
(export "memory" (memory $0))
(func $export/add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(return

View File

@ -0,0 +1,66 @@
(module
(type $iii (func (param i32 i32) (result i32)))
(type $i (func (result i32)))
(type $ii (func (param i32) (result i32)))
(type $iiv (func (param i32 i32)))
(type $iv (func (param i32)))
(global $exports/Animal.CAT i32 (i32.const 0))
(global $exports/Animal.DOG i32 (i32.const 1))
(global $exports/animals.Animal.CAT i32 (i32.const 0))
(global $exports/animals.Animal.DOG i32 (i32.const 1))
(global $exports/Car.TIRES i32 (i32.const 4))
(global $exports/vehicles.Car.TIRES i32 (i32.const 4))
(global $exports/outer.inner.a i32 (i32.const 42))
(memory $0 1)
(export "add" (func $exports/add))
(export "math.sub" (func $exports/math.sub))
(export "Animal.CAT" (global $exports/Animal.CAT))
(export "Animal.DOG" (global $exports/Animal.DOG))
(export "animals.Animal.CAT" (global $exports/animals.Animal.CAT))
(export "animals.Animal.DOG" (global $exports/animals.Animal.DOG))
(export "Car.TIRES" (global $exports/Car.TIRES))
(export "Car.getNumTires" (func $exports/Car.getNumTires))
(export "Car#get:doors" (func $Car#get:doors))
(export "Car#set:doors" (func $Car#set:doors))
(export "Car#get:numDoors" (func $Car#get:doors))
(export "Car#set:numDoors" (func $Car#set:doors))
(export "Car#openDoors" (func $exports/Car#openDoors))
(export "vehicles.Car.TIRES" (global $exports/vehicles.Car.TIRES))
(export "vehicles.Car.getNumTires" (func $exports/Car.getNumTires))
(export "vehicles.Car#get:doors" (func $Car#get:doors))
(export "vehicles.Car#set:doors" (func $Car#set:doors))
(export "vehicles.Car#get:numDoors" (func $Car#get:doors))
(export "vehicles.Car#set:numDoors" (func $Car#set:doors))
(export "vehicles.Car#openDoors" (func $exports/Car#openDoors))
(export "outer.inner.a" (global $exports/outer.inner.a))
(export "memory" (memory $0))
(func $exports/add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.add
(get_local $0)
(get_local $1)
)
)
(func $exports/math.sub (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(i32.sub
(get_local $0)
(get_local $1)
)
)
(func $exports/Car.getNumTires (; 2 ;) (type $i) (result i32)
(i32.const 4)
)
(func $Car#get:doors (; 3 ;) (type $ii) (param $0 i32) (result i32)
(i32.load
(get_local $0)
)
)
(func $Car#set:doors (; 4 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
)
(func $exports/Car#openDoors (; 5 ;) (type $iv) (param $0 i32)
(nop)
)
)

54
tests/compiler/exports.ts Normal file
View File

@ -0,0 +1,54 @@
// top-level function
export function add(a: i32, b: i32): i32 {
return a + b;
}
// namespaced function
export namespace math {
export function sub(a: i32, b: i32): i32 {
return a - b;
}
}
// top-level enum
export enum Animal {
CAT,
DOG
}
// namespaced enum
export namespace animals {
export enum Animal {
CAT,
DOG
}
}
// top-level class
export class Car {
static readonly TIRES: i32 = 4;
static getNumTires(): i32 { return this.TIRES; }
constructor(public doors: i32 = 2) { this.doors = doors; }
get numDoors(): i32 { return this.doors; }
set numDoors(doors: i32) { this.doors = doors; }
openDoors(): void {}
}
// namespaced class
export namespace vehicles {
export class Car {
static readonly TIRES: i32 = 4;
static getNumTires(): i32 { return this.TIRES; }
constructor(public doors: i32 = 2) { this.doors = doors; }
get numDoors(): i32 { return this.doors; }
set numDoors(doors: i32) { this.doors = doors; }
openDoors(): void {}
}
}
// namespaced namespace
export namespace outer {
export namespace inner {
export const a = 42;
}
}

View File

@ -0,0 +1,116 @@
(module
(type $iii (func (param i32 i32) (result i32)))
(type $i (func (result i32)))
(type $ii (func (param i32) (result i32)))
(type $iiv (func (param i32 i32)))
(type $iv (func (param i32)))
(global $exports/Animal.CAT i32 (i32.const 0))
(global $exports/Animal.DOG i32 (i32.const 1))
(global $exports/animals.Animal.CAT i32 (i32.const 0))
(global $exports/animals.Animal.DOG i32 (i32.const 1))
(global $exports/Car.TIRES i32 (i32.const 4))
(global $exports/vehicles.Car.TIRES i32 (i32.const 4))
(global $exports/outer.inner.a i32 (i32.const 42))
(global $HEAP_BASE i32 (i32.const 4))
(memory $0 1)
(export "add" (func $exports/add))
(export "math.sub" (func $exports/math.sub))
(export "Animal.CAT" (global $exports/Animal.CAT))
(export "Animal.DOG" (global $exports/Animal.DOG))
(export "animals.Animal.CAT" (global $exports/animals.Animal.CAT))
(export "animals.Animal.DOG" (global $exports/animals.Animal.DOG))
(export "Car.TIRES" (global $exports/Car.TIRES))
(export "Car.getNumTires" (func $exports/Car.getNumTires))
(export "Car#get:doors" (func $Car#get:doors))
(export "Car#set:doors" (func $Car#set:doors))
(export "Car#get:numDoors" (func $exports/Car#get:numDoors))
(export "Car#set:numDoors" (func $exports/Car#set:numDoors))
(export "Car#openDoors" (func $exports/Car#openDoors))
(export "vehicles.Car.TIRES" (global $exports/vehicles.Car.TIRES))
(export "vehicles.Car.getNumTires" (func $exports/vehicles.Car.getNumTires))
(export "vehicles.Car#get:doors" (func $vehicles.Car#get:doors))
(export "vehicles.Car#set:doors" (func $vehicles.Car#set:doors))
(export "vehicles.Car#get:numDoors" (func $exports/vehicles.Car#get:numDoors))
(export "vehicles.Car#set:numDoors" (func $exports/vehicles.Car#set:numDoors))
(export "vehicles.Car#openDoors" (func $exports/vehicles.Car#openDoors))
(export "outer.inner.a" (global $exports/outer.inner.a))
(export "memory" (memory $0))
(func $exports/add (; 0 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(return
(i32.add
(get_local $0)
(get_local $1)
)
)
)
(func $exports/math.sub (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(return
(i32.sub
(get_local $0)
(get_local $1)
)
)
)
(func $exports/Car.getNumTires (; 2 ;) (type $i) (result i32)
(return
(i32.const 4)
)
)
(func $Car#get:doors (; 3 ;) (type $ii) (param $0 i32) (result i32)
(i32.load
(get_local $0)
)
)
(func $Car#set:doors (; 4 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
)
(func $exports/Car#get:numDoors (; 5 ;) (type $ii) (param $0 i32) (result i32)
(return
(i32.load
(get_local $0)
)
)
)
(func $exports/Car#set:numDoors (; 6 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
)
(func $exports/Car#openDoors (; 7 ;) (type $iv) (param $0 i32)
)
(func $exports/vehicles.Car.getNumTires (; 8 ;) (type $i) (result i32)
(return
(i32.const 4)
)
)
(func $vehicles.Car#get:doors (; 9 ;) (type $ii) (param $0 i32) (result i32)
(i32.load
(get_local $0)
)
)
(func $vehicles.Car#set:doors (; 10 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
)
(func $exports/vehicles.Car#get:numDoors (; 11 ;) (type $ii) (param $0 i32) (result i32)
(return
(i32.load
(get_local $0)
)
)
)
(func $exports/vehicles.Car#set:numDoors (; 12 ;) (type $iiv) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
)
(func $exports/vehicles.Car#openDoors (; 13 ;) (type $iv) (param $0 i32)
)
)

View File

@ -54,10 +54,10 @@
(export "anExportedConstantGlobal" (global $showcase/anExportedConstantGlobal))
(export "aConstantGlobal" (global $showcase/aConstantGlobal))
(export "anAliasedConstantGlobal" (global $showcase/anExportedConstantGlobal))
(export "showcase/AnEnum.ONE" (global $showcase/AnEnum.ONE))
(export "showcase/AnEnum.TWO" (global $showcase/AnEnum.TWO))
(export "showcase/AnEnum.FOUR" (global $showcase/AnEnum.FOUR))
(export "showcase/AnEnum.FIVE" (global $showcase/AnEnum.FIVE))
(export "AnEnum.ONE" (global $showcase/AnEnum.ONE))
(export "AnEnum.TWO" (global $showcase/AnEnum.TWO))
(export "AnEnum.FOUR" (global $showcase/AnEnum.FOUR))
(export "AnEnum.FIVE" (global $showcase/AnEnum.FIVE))
(export "anExportedFunction" (func $showcase/anExportedFunction))
(export "memory" (memory $0))
(start $start)

View File

@ -64,10 +64,10 @@
(export "anExportedConstantGlobal" (global $showcase/anExportedConstantGlobal))
(export "aConstantGlobal" (global $showcase/aConstantGlobal))
(export "anAliasedConstantGlobal" (global $showcase/anExportedConstantGlobal))
(export "showcase/AnEnum.ONE" (global $showcase/AnEnum.ONE))
(export "showcase/AnEnum.TWO" (global $showcase/AnEnum.TWO))
(export "showcase/AnEnum.FOUR" (global $showcase/AnEnum.FOUR))
(export "showcase/AnEnum.FIVE" (global $showcase/AnEnum.FIVE))
(export "AnEnum.ONE" (global $showcase/AnEnum.ONE))
(export "AnEnum.TWO" (global $showcase/AnEnum.TWO))
(export "AnEnum.FOUR" (global $showcase/AnEnum.FOUR))
(export "AnEnum.FIVE" (global $showcase/AnEnum.FIVE))
(export "anExportedFunction" (func $showcase/anExportedFunction))
(export "memory" (memory $0))
(start $start)