diff --git a/tslang/test/tester/CMakeLists.txt b/tslang/test/tester/CMakeLists.txt index 157a2cf3..8fa42a21 100644 --- a/tslang/test/tester/CMakeLists.txt +++ b/tslang/test/tester/CMakeLists.txt @@ -868,6 +868,7 @@ add_test(NAME test-compile-shared-export-import-object-literal-structural-typed- add_test(NAME test-compile-shared-export-import-object-literal-structural-typed-extends-interface COMMAND test-runner -shared -gctors-as-method "${PROJECT_SOURCE_DIR}/test/tester/tests/import_object_literal_structural_typed_extends_interface.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_object_literal_structural_typed_extends_interface.ts") add_test(NAME test-compile-shared-export-import-object-literal-structural-typed-extends-interface-multilevel COMMAND test-runner -shared -gctors-as-method "${PROJECT_SOURCE_DIR}/test/tester/tests/import_object_literal_structural_typed_extends_interface_multilevel.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_object_literal_structural_typed_extends_interface_multilevel.ts") add_test(NAME test-compile-shared-export-import-object-literal-structural-typed-extends-interface-diamond COMMAND test-runner -shared -gctors-as-method "${PROJECT_SOURCE_DIR}/test/tester/tests/import_object_literal_structural_typed_extends_interface_diamond.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_object_literal_structural_typed_extends_interface_diamond.ts") +add_test(NAME test-compile-shared-export-import-object-literal-structural-typed-extends-interface-triple COMMAND test-runner -shared -gctors-as-method "${PROJECT_SOURCE_DIR}/test/tester/tests/import_object_literal_structural_typed_extends_interface_triple.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_object_literal_structural_typed_extends_interface_triple.ts") add_test(NAME test-compile-shared-export-import-vars COMMAND test-runner -shared "${PROJECT_SOURCE_DIR}/test/tester/tests/import_vars.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_vars.ts") add_test(NAME test-compile-shared-export-import-vars-2 COMMAND test-runner -shared -gctors-as-method "${PROJECT_SOURCE_DIR}/test/tester/tests/import_vars2.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_vars2.ts") add_test(NAME test-compile-shared-export-import-enum COMMAND test-runner -shared "${PROJECT_SOURCE_DIR}/test/tester/tests/import_enum.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_enum.ts") @@ -892,6 +893,7 @@ add_test(NAME test-jit-shared-export-import-object-literal-structural-typed-inte add_test(NAME test-jit-shared-export-import-object-literal-structural-typed-extends-interface COMMAND test-runner -jit -shared -gctors-as-method "${PROJECT_SOURCE_DIR}/test/tester/tests/import_object_literal_structural_typed_extends_interface.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_object_literal_structural_typed_extends_interface.ts") add_test(NAME test-jit-shared-export-import-object-literal-structural-typed-extends-interface-multilevel COMMAND test-runner -jit -shared -gctors-as-method "${PROJECT_SOURCE_DIR}/test/tester/tests/import_object_literal_structural_typed_extends_interface_multilevel.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_object_literal_structural_typed_extends_interface_multilevel.ts") add_test(NAME test-jit-shared-export-import-object-literal-structural-typed-extends-interface-diamond COMMAND test-runner -jit -shared -gctors-as-method "${PROJECT_SOURCE_DIR}/test/tester/tests/import_object_literal_structural_typed_extends_interface_diamond.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_object_literal_structural_typed_extends_interface_diamond.ts") +add_test(NAME test-jit-shared-export-import-object-literal-structural-typed-extends-interface-triple COMMAND test-runner -jit -shared -gctors-as-method "${PROJECT_SOURCE_DIR}/test/tester/tests/import_object_literal_structural_typed_extends_interface_triple.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_object_literal_structural_typed_extends_interface_triple.ts") add_test(NAME test-jit-shared-export-import-vars COMMAND test-runner -jit -shared "${PROJECT_SOURCE_DIR}/test/tester/tests/import_vars.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_vars.ts") add_test(NAME test-jit-shared-export-import-vars-2 COMMAND test-runner -jit -shared -gctors-as-method "${PROJECT_SOURCE_DIR}/test/tester/tests/import_vars2.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_vars2.ts") add_test(NAME test-jit-shared-export-import-enum COMMAND test-runner -jit -shared "${PROJECT_SOURCE_DIR}/test/tester/tests/import_enum.ts" "${PROJECT_SOURCE_DIR}/test/tester/tests/export_enum.ts") diff --git a/tslang/test/tester/tests/export_object_literal_structural_typed_extends_interface_triple.ts b/tslang/test/tester/tests/export_object_literal_structural_typed_extends_interface_triple.ts new file mode 100644 index 00000000..5f8a6d03 --- /dev/null +++ b/tslang/test/tester/tests/export_object_literal_structural_typed_extends_interface_triple.ts @@ -0,0 +1,38 @@ +namespace M3 { + export interface A { + a: number; + addA(n: number): void; + } + export interface B { + b: number; + addB(n: number): void; + } + export interface C { + c: number; + addC(n: number): void; + } + export interface Combined extends A, B, C { + combined: number; + addCombined(n: number): void; + } + + export var rawCombined: { + a: number; + addA(n: number): void; + b: number; + addB(n: number): void; + c: number; + addC(n: number): void; + combined: number; + addCombined(n: number): void; + } = { + a: 1.0, + addA(n: number) { this.a = this.a + n; }, + b: 2.0, + addB(n: number) { this.b = this.b + n; }, + c: 3.0, + addC(n: number) { this.c = this.c + n; }, + combined: 4.0, + addCombined(n: number) { this.combined = this.combined + n; }, + }; +} diff --git a/tslang/test/tester/tests/import_object_literal_structural_typed_extends_interface_triple.ts b/tslang/test/tester/tests/import_object_literal_structural_typed_extends_interface_triple.ts new file mode 100644 index 00000000..aad925a2 --- /dev/null +++ b/tslang/test/tester/tests/import_object_literal_structural_typed_extends_interface_triple.ts @@ -0,0 +1,21 @@ +import './export_object_literal_structural_typed_extends_interface_triple' + +let combined: M3.Combined = M3.rawCombined; + +combined.addA(10); +assert(combined.a == 11); +print(combined.a); + +combined.addB(20); +assert(combined.b == 22); +print(combined.b); + +combined.addC(30); +assert(combined.c == 33); +print(combined.c); + +combined.addCombined(40); +assert(combined.combined == 44); +print(combined.combined); + +print("done.");