Skip to content

Commit f4d82ea

Browse files
committed
add warning on closure use
1 parent f1bf214 commit f4d82ea

7 files changed

+35
-27
lines changed

src/compiler.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8220,11 +8220,16 @@ export class Compiler extends DiagnosticEmitter {
82208220
var wasm64 = nativeUsize == NativeType.I64;
82218221

82228222
if(instance.closedLocals.size > 0) {
8223+
this.warning(
8224+
DiagnosticCode.Closure_support_is_experimental,
8225+
instance.prototype.declaration.range
8226+
)
8227+
82238228
// Append the appropriate signature and flags for this closure type, then set it to currentType
82248229
this.currentType = Type.closure32;
82258230
this.currentType.signatureReference = instance.signature;
82268231

8227-
// create a local which will hold our closure class instance
8232+
// create a local which will hold our closure
82288233
var tempLocal = flow.getAutoreleaseLocal(this.currentType);
82298234
var tempLocalIndex = tempLocal.index;
82308235

src/diagnosticMessages.generated.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ export enum DiagnosticCode {
173173
File_0_not_found = 6054,
174174
Numeric_separators_are_not_allowed_here = 6188,
175175
Multiple_consecutive_numeric_separators_are_not_permitted = 6189,
176+
Closure_support_is_experimental = 6190,
176177
_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class = 17009,
177178
_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class = 17011
178179
}
@@ -346,6 +347,7 @@ export function diagnosticCodeToString(code: DiagnosticCode): string {
346347
case 6054: return "File '{0}' not found.";
347348
case 6188: return "Numeric separators are not allowed here.";
348349
case 6189: return "Multiple consecutive numeric separators are not permitted.";
350+
case 6190: return "Closure support is experimental.";
349351
case 17009: return "'super' must be called before accessing 'this' in the constructor of a derived class.";
350352
case 17011: return "'super' must be called before accessing a property of 'super' in the constructor of a derived class.";
351353
default: return "";

src/diagnosticMessages.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@
170170
"File '{0}' not found.": 6054,
171171
"Numeric separators are not allowed here.": 6188,
172172
"Multiple consecutive numeric separators are not permitted.": 6189,
173+
"Closure support is experimental.": 6190,
173174
"'super' must be called before accessing 'this' in the constructor of a derived class.": 17009,
174175
"'super' must be called before accessing a property of 'super' in the constructor of a derived class.": 17011
175176
}

tests/compiler/closure-limitations-runtime.optimized.wat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
i32.store
7979
local.get $0
8080
i32.const 0
81-
i32.store offset=4
81+
i32.store offset=1
8282
local.get $0
8383
i32.const 4
8484
i32.shr_s

tests/compiler/closure-limitations-runtime.untouched.wat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@
155155
local.set $2
156156
local.get $2
157157
local.get $0
158-
i32.store offset=4
158+
i32.store offset=1
159159
local.get $2
160160
i32.const 4
161161
i32.shr_s

tests/compiler/closure.optimized.wat

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,13 +1203,13 @@
12031203
i32.store
12041204
local.get $0
12051205
i32.const 11
1206-
i32.store offset=4
1206+
i32.store offset=1
12071207
local.get $0
12081208
i32.const 4
1209-
i32.store offset=8
1209+
i32.store offset=1
12101210
local.get $0
12111211
i32.const 7
1212-
i32.store offset=12
1212+
i32.store offset=1
12131213
local.get $0
12141214
i32.const 4
12151215
i32.shr_s
@@ -1242,10 +1242,10 @@
12421242
i32.store
12431243
local.get $0
12441244
i32.const 1
1245-
i32.store offset=4
1245+
i32.store offset=1
12461246
local.get $0
12471247
i32.const 7
1248-
i32.store offset=8
1248+
i32.store offset=1
12491249
local.get $0
12501250
local.get $1
12511251
local.get $0
@@ -1284,7 +1284,7 @@
12841284
i32.store
12851285
local.get $0
12861286
i32.const 1
1287-
i32.store offset=4
1287+
i32.store offset=1
12881288
local.get $0
12891289
i32.const 4
12901290
i32.shr_s
@@ -1337,7 +1337,7 @@
13371337
i32.store
13381338
local.get $0
13391339
i32.const 2
1340-
i32.store offset=4
1340+
i32.store offset=1
13411341
local.get $0
13421342
i32.const 4
13431343
i32.shr_s
@@ -1379,7 +1379,7 @@
13791379
i32.store
13801380
local.get $0
13811381
i32.const 0
1382-
i32.store offset=4
1382+
i32.store offset=1
13831383
local.get $0
13841384
i32.const 4
13851385
i32.shr_s
@@ -1421,7 +1421,7 @@
14211421
i32.store
14221422
local.get $0
14231423
i32.const 0
1424-
i32.store offset=4
1424+
i32.store offset=1
14251425
local.get $0
14261426
i32.const 4
14271427
i32.shr_s
@@ -1518,13 +1518,13 @@
15181518
i32.store
15191519
local.get $0
15201520
i32.const 1
1521-
i32.store offset=4
1521+
i32.store offset=1
15221522
local.get $0
15231523
i32.const 1
1524-
i32.store offset=8
1524+
i32.store offset=1
15251525
local.get $0
15261526
i32.const 1
1527-
i32.store offset=12
1527+
i32.store offset=1
15281528
local.get $0
15291529
i32.const 4
15301530
i32.shr_s

tests/compiler/closure.untouched.wat

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1561,7 +1561,7 @@
15611561
local.set $3
15621562
local.get $3
15631563
local.get $1
1564-
i32.store offset=4
1564+
i32.store offset=1
15651565
local.get $3
15661566
i32.const 4
15671567
i32.shr_s
@@ -1612,7 +1612,7 @@
16121612
local.set $2
16131613
local.get $2
16141614
local.get $0
1615-
i32.store offset=4
1615+
i32.store offset=1
16161616
local.get $2
16171617
i32.const 4
16181618
i32.shr_s
@@ -1663,7 +1663,7 @@
16631663
local.set $2
16641664
local.get $2
16651665
local.get $0
1666-
i32.store offset=4
1666+
i32.store offset=1
16671667
local.get $2
16681668
i32.const 4
16691669
i32.shr_s
@@ -1755,13 +1755,13 @@
17551755
local.set $8
17561756
local.get $8
17571757
local.get $2
1758-
i32.store offset=4
1758+
i32.store offset=1
17591759
local.get $8
17601760
local.get $3
1761-
i32.store offset=8
1761+
i32.store offset=1
17621762
local.get $8
17631763
local.get $1
1764-
i32.store offset=12
1764+
i32.store offset=1
17651765
local.get $8
17661766
i32.const 4
17671767
i32.shr_s
@@ -1887,10 +1887,10 @@
18871887
local.set $4
18881888
local.get $4
18891889
local.get $0
1890-
i32.store offset=4
1890+
i32.store offset=1
18911891
local.get $4
18921892
local.get $1
1893-
i32.store offset=8
1893+
i32.store offset=1
18941894
local.get $4
18951895
local.get $2
18961896
i32.const 1
@@ -1944,7 +1944,7 @@
19441944
local.set $3
19451945
local.get $3
19461946
local.get $0
1947-
i32.store offset=4
1947+
i32.store offset=1
19481948
local.get $3
19491949
i32.const 4
19501950
i32.shr_s
@@ -2091,13 +2091,13 @@
20912091
local.set $4
20922092
local.get $4
20932093
local.get $0
2094-
i32.store offset=4
2094+
i32.store offset=1
20952095
local.get $4
20962096
local.get $1
2097-
i32.store offset=8
2097+
i32.store offset=1
20982098
local.get $4
20992099
local.get $2
2100-
i32.store offset=12
2100+
i32.store offset=1
21012101
local.get $4
21022102
i32.const 4
21032103
i32.shr_s

0 commit comments

Comments
 (0)