mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-25 15:12:12 +00:00
* Rework IR and resolver to use nested lookup tables * Integrate types into IR * Make components prefer IR, slimmed down AST * Implement `export *` * Add `@lazy` annotation and remove `--noTreeShaking` * Add `@start` annotation and remove magic `main` * Related refactoring, cleanup and docs
72 lines
2.1 KiB
TypeScript
72 lines
2.1 KiB
TypeScript
// variable can be shadowed by a type
|
|
const globalType: i32 = 2;
|
|
type globalType = bool;
|
|
globalType;
|
|
var globalType_test: globalType;
|
|
|
|
type typeGlobal = bool;
|
|
const typeGlobal: i32 = 3;
|
|
var typeGlobal_test: typeGlobal;
|
|
typeGlobal;
|
|
|
|
// namespace can be shadowed by a type
|
|
namespace namespaceType { export function test(): void {} }
|
|
type namespaceType = i32;
|
|
namespaceType.test();
|
|
var namespaceType_test: namespaceType;
|
|
|
|
type typeNamespace = i32;
|
|
namespace typeNamespace { export function test(): void {} }
|
|
var typeNamespace_test: typeNamespace;
|
|
typeNamespace.test();
|
|
|
|
// function can be shadowed by a type
|
|
function functionType(): void {}
|
|
type functionType = i32;
|
|
functionType();
|
|
var functionType_test: functionType;
|
|
|
|
type typeFunction = i32;
|
|
function typeFunction(): void {}
|
|
var typeFunction_test: typeFunction;
|
|
typeFunction();
|
|
|
|
// class can join with namespace
|
|
class classNamespace { static test1(): void {} }
|
|
namespace classNamespace { export function test2(): void {} }
|
|
classNamespace.test1();
|
|
classNamespace.test2();
|
|
|
|
namespace namespaceClass { export function test1(): void {} } // TS2434, but possible in AS
|
|
class namespaceClass { static test2(): void {} }
|
|
namespaceClass.test1();
|
|
namespaceClass.test2();
|
|
|
|
// function can join with namespace
|
|
function functionNamespace(): void {}
|
|
namespace functionNamespace { export function test(): void {} }
|
|
functionNamespace();
|
|
functionNamespace.test();
|
|
|
|
namespace namespaceFunction { export function test(): void {} } // TS2434, but possible in AS
|
|
function namespaceFunction(): void {}
|
|
namespaceFunction.test();
|
|
namespaceFunction();
|
|
|
|
// enum can join with namespace
|
|
enum enumNamespace { val = 1 }
|
|
namespace enumNamespace { export function test(): void {} }
|
|
enumNamespace.val;
|
|
enumNamespace.test();
|
|
|
|
namespace namespaceEnum { export function test(): void {} }
|
|
enum namespaceEnum { val = 2 }
|
|
namespaceEnum.test();
|
|
namespaceEnum.val;
|
|
|
|
// namespace can join with namespace
|
|
namespace namespaceNamespace { export function test1(): void {} }
|
|
namespace namespaceNamespace { export function test2(): void {} }
|
|
namespaceNamespace.test1();
|
|
namespaceNamespace.test2();
|