Skip to content

Commit cb06945

Browse files
committed
[embind] Always enable assertions during TypeScript generation.
Fixes #21641
1 parent 249becf commit cb06945

File tree

3 files changed

+117
-0
lines changed

3 files changed

+117
-0
lines changed
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
// TypeScript bindings for emscripten-generated code. Automatically generated at compile time.
2+
interface WasmModule {
3+
}
4+
5+
export interface Test {
6+
x: number;
7+
readonly y: number;
8+
functionOne(_0: number, _1: number): number;
9+
functionTwo(_0: number, _1: number): number;
10+
functionFour(_0: boolean): number;
11+
functionFive(x: number, y: number): number;
12+
constFn(): number;
13+
longFn(_0: number): number;
14+
functionThree(_0: ArrayBuffer|Uint8Array|Uint8ClampedArray|Int8Array|string): number;
15+
functionSix(str: ArrayBuffer|Uint8Array|Uint8ClampedArray|Int8Array|string): number;
16+
delete(): void;
17+
}
18+
19+
export interface BarValue<T extends number> {
20+
value: T;
21+
}
22+
export type Bar = BarValue<0>|BarValue<1>|BarValue<2>;
23+
24+
export interface EmptyEnumValue<T extends number> {
25+
value: T;
26+
}
27+
export type EmptyEnum = never/* Empty Enumerator */;
28+
29+
export type ValArrIx = [ Bar, Bar, Bar, Bar ];
30+
31+
export interface IntVec {
32+
push_back(_0: number): void;
33+
resize(_0: number, _1: number): void;
34+
size(): number;
35+
get(_0: number): number | undefined;
36+
set(_0: number, _1: number): boolean;
37+
delete(): void;
38+
}
39+
40+
export interface MapIntInt {
41+
keys(): IntVec;
42+
get(_0: number): number | undefined;
43+
set(_0: number, _1: number): void;
44+
size(): number;
45+
delete(): void;
46+
}
47+
48+
export interface Foo {
49+
process(_0: Test): void;
50+
delete(): void;
51+
}
52+
53+
export type ValObj = {
54+
foo: Foo,
55+
bar: Bar
56+
};
57+
58+
export interface ClassWithConstructor {
59+
fn(_0: number): number;
60+
delete(): void;
61+
}
62+
63+
export interface ClassWithTwoConstructors {
64+
delete(): void;
65+
}
66+
67+
export interface ClassWithSmartPtrConstructor {
68+
fn(_0: number): number;
69+
delete(): void;
70+
}
71+
72+
export interface BaseClass {
73+
fn(_0: number): number;
74+
delete(): void;
75+
}
76+
77+
export interface DerivedClass extends BaseClass {
78+
fn2(_0: number): number;
79+
delete(): void;
80+
}
81+
82+
export type ValArr = [ number, number, number ];
83+
84+
interface EmbindModule {
85+
Test: {staticFunction(_0: number): number; staticFunctionWithParam(x: number): number; staticProperty: number};
86+
class_returning_fn(): Test;
87+
class_unique_ptr_returning_fn(): Test;
88+
a_class_instance: Test;
89+
an_enum: Bar;
90+
Bar: {valueOne: BarValue<0>, valueTwo: BarValue<1>, valueThree: BarValue<2>};
91+
EmptyEnum: {};
92+
enum_returning_fn(): Bar;
93+
IntVec: {new(): IntVec};
94+
MapIntInt: {new(): MapIntInt};
95+
Foo: {};
96+
ClassWithConstructor: {new(_0: number, _1: ValArr): ClassWithConstructor};
97+
ClassWithTwoConstructors: {new(): ClassWithTwoConstructors; new(_0: number): ClassWithTwoConstructors};
98+
ClassWithSmartPtrConstructor: {new(_0: number, _1: ValArr): ClassWithSmartPtrConstructor};
99+
BaseClass: {};
100+
DerivedClass: {};
101+
a_bool: boolean;
102+
an_int: number;
103+
optional_test(_0: Foo | undefined): number | undefined;
104+
global_fn(_0: number, _1: number): number;
105+
smart_ptr_function(_0: ClassWithSmartPtrConstructor): number;
106+
smart_ptr_function_with_params(foo: ClassWithSmartPtrConstructor): number;
107+
function_with_callback_param(_0: (message: string) => void): number;
108+
string_test(_0: ArrayBuffer|Uint8Array|Uint8ClampedArray|Int8Array|string): string;
109+
wstring_test(_0: string): string;
110+
}
111+
export type MainModule = WasmModule & EmbindModule;

test/test_other.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3200,6 +3200,10 @@ def test_embind_tsgen_ignore(self):
32003200
self.emcc(test_file('other/embind_tsgen.cpp'), extra_args)
32013201
self.assertFileContents(test_file('other/embind_tsgen_ignore_3.d.ts'), read_file('embind_tsgen.d.ts'))
32023202

3203+
extra_args = ['-sASSERTIONS=0', '-sSTRICT=1', '--no-entry']
3204+
self.emcc(test_file('other/embind_tsgen.cpp'), extra_args)
3205+
self.assertFileContents(test_file('other/embind_tsgen_ignore_4.d.ts'), read_file('embind_tsgen.d.ts'))
3206+
32033207
def test_embind_tsgen_test_embind(self):
32043208
self.run_process([EMXX, test_file('embind/embind_test.cpp'),
32053209
'-lembind', '--emit-tsd', 'embind_tsgen_test_embind.d.ts',

tools/link.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1962,6 +1962,8 @@ def run_embind_gen(wasm_target, js_syms, extra_settings):
19621962
settings.SINGLE_FILE = False
19631963
# Embind may be included multiple times, de-duplicate the list first.
19641964
settings.JS_LIBRARIES = dedup_list(settings.JS_LIBRARIES)
1965+
# Assertions are always used.
1966+
settings.ASSERTIONS = 1
19651967
# Replace embind with the TypeScript generation version.
19661968
embind_index = settings.JS_LIBRARIES.index('embind/embind.js')
19671969
settings.JS_LIBRARIES[embind_index] = 'embind/embind_gen.js'

0 commit comments

Comments
 (0)