Daniel Wirtz 39b489bee2
Rename memory instructions; Rework constant handling ()
* Rename memory instructions as proposed by the bulk-memory-operations spec.
* Rename memory manager functions to memory.* as well
* Remove automatic inlining of constant globals (Binaryen does this now)
* Improve 'const' enum compatibility
* Improve module-level export generation
* Enable the inline decorator for constant variables
* Add ERROR, WARNING and INFO macros that emit a user-defined diagnostic
* Reintroduce builtin decorator so these can appear anywhere in stdlib again
* Inline isNaN and isFinite by default
* Make an interface around gc.* similar to memory.*
* Emit an error when trying to inline a mutable variable
* Slim down CI stages
* Add a more convenient tracing utility for debugging
* Implement some prequesites for an eventual bundled GC
2018-07-20 22:53:33 +02:00

47 lines
854 B
TypeScript

import "allocator/arena";
export const COLOR: string = "red";
export function strlen(str: string): i32 {
return str.length;
}
export namespace math {
export function add(a: i32, b: i32): i32 {
return a + b;
}
}
export class Car {
static readonly MAX_DOORS: i32 = 5;
static usualDoors: i32 = 3;
numDoors: i32;
private doorsOpen: bool = false;
get isDoorsOpen(): bool { return this.doorsOpen; }
set isDoorsOpen(value: bool) { this.doorsOpen = value; }
constructor(numDoors: i32) {
this.numDoors = numDoors;
}
openDoors(): bool {
if (this.doorsOpen) return false;
this.doorsOpen = true;
return true;
}
closeDoors(): bool {
if (!this.doorsOpen) return false;
this.doorsOpen = false;
return true;
}
dispose(): void {
memory.free(changetype<usize>(this));
}
}
export { memory };