Skip to content

Commit 20f4562

Browse files
committed
embind - Disable wasm2js when emitting types.
Fixes #21315
1 parent d666035 commit 20f4562

File tree

3 files changed

+118
-0
lines changed

3 files changed

+118
-0
lines changed

test/other/embind_tsgen_ignore_3.d.ts

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

test/test_other.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3143,6 +3143,10 @@ def test_embind_tsgen_ignore(self):
31433143
'-sEXPORT_ES6=1']
31443144
self.emcc(test_file('other/embind_tsgen.cpp'), extra_args)
31453145
self.assertFileContents(test_file('other/embind_tsgen_ignore_2.d.ts'), read_file('embind_tsgen.d.ts'))
3146+
# Also test this separately since it conflicts with other settings.
3147+
extra_args = ['-sWASM=0']
3148+
self.emcc(test_file('other/embind_tsgen.cpp'), extra_args)
3149+
self.assertFileContents(test_file('other/embind_tsgen_ignore_3.d.ts'), read_file('embind_tsgen.d.ts'))
31463150

31473151
def test_embind_tsgen_test_embind(self):
31483152
self.run_process([EMXX, test_file('embind/embind_test.cpp'),

tools/link.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1904,6 +1904,8 @@ def run_embind_gen(wasm_target, js_syms, extra_settings):
19041904
# Disable proxying and thread pooling so a worker is not automatically created.
19051905
settings.PROXY_TO_PTHREAD = False
19061906
settings.PTHREAD_POOL_SIZE = 0
1907+
# Assume wasm support at binding generation time
1908+
settings.WASM2JS = 0
19071909
# Disable minify since the binaryen pass has not been run yet to change the
19081910
# import names.
19091911
settings.MINIFY_WASM_IMPORTED_MODULES = False

0 commit comments

Comments
 (0)