-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Closed
Labels
area-dart2wasmIssues for the dart2wasm compiler.Issues for the dart2wasm compiler.type-bugIncorrect behavior (everything from a crash to more subtle misbehavior)Incorrect behavior (everything from a crash to more subtle misbehavior)
Description
The compilation error:
$> dart compile wasm web/main.dart -o build/main.wasm --verbose
Running dart compile wasm...
- input file name = file:///xxxx/web/main.dart
- output file name = build/main.wasm
- librariesSpecPath = null
- packagesPath file = null
- platformPath file = file:///usr/local/Cellar/dart/3.10.1/libexec/lib/_internal/dart2wasm_platform.dill
Translator options:
- enable asserts = false
- import shared memory = false
- inlining = true
- js compatibility = false
- omit implicit type checks = false
- omit explicit type checks = false
- omit bounds checks = false
- polymorphic specialization = false
- print kernel = false
- print wasm = false
- minify = false
- verity type checks = false
- enable experimental ffi = false
- enable experimental wasm interop = false
- generate source maps = true
- enable deferred loading = false
- enable multi module stress test mode = false
- inlining limit = 0
- shared memory max pages = null
- watch points = []
Exception in SwitchStatement at file:///xxxx/web/lib/ui_company.dart:340:5
Unhandled exception:
type 'NullConstant' is not a subtype of type 'IntConstant' in type cast
#0 new SwitchInfo (package:dart2wasm/code_generator.dart:4543)
#1 AstCodeGenerator.visitSwitchStatement (package:dart2wasm/code_generator.dart:1368)
#2 StateMachineCodeGenerator.visitSwitchStatement (package:dart2wasm/state_machine.dart:885)
#3 SwitchStatement.accept (package:kernel/src/ast/statements.dart:813)
#4 AstCodeGenerator.translateStatement (package:dart2wasm/code_generator.dart:666)
#5 StateMachineCodeGenerator.visitLabeledStatement (package:dart2wasm/state_machine.dart:865)
#6 LabeledStatement.accept (package:kernel/src/ast/statements.dart:306)
#7 AstCodeGenerator.translateStatement (package:dart2wasm/code_generator.dart:666)
#8 AstCodeGenerator.visitBlock (package:dart2wasm/code_generator.dart:770)
#9 Block.accept (package:kernel/src/ast/statements.dart:103)
#10 AstCodeGenerator.translateStatement (package:dart2wasm/code_generator.dart:666)
#11 AsyncStateMachineCodeGenerator.generateInner (package:dart2wasm/async.dart:251)
#12 StateMachineCodeGenerator.generateInternal (package:dart2wasm/state_machine.dart:746)
#13 AstCodeGenerator.generate (package:dart2wasm/code_generator.dart:217)
#14 CompilationTask.run (package:dart2wasm/translator.dart:1930)
#15 Translator.drainCompletionQueue (package:dart2wasm/translator.dart:542)
#16 Translator.translate (package:dart2wasm/translator.dart:567)
#17 compileToModule (package:dart2wasm/compile.dart:359)
<asynchronous suspension>
#18 generateWasm (package:dart2wasm/generate_wasm.dart:81)
<asynchronous suspension>
#19 main (file:///x/w/sdk/pkg/dart2wasm/bin/dart2wasm.dart:10)
<asynchronous suspension>
Dart version:
$> dart --version
Dart SDK version: 3.10.1 (stable) (Tue Nov 18 11:02:31 2025 -0800) on "macos_x64"The switch statement:
// ...
int? get countryCode => int.tryParse(property['countryCode'];
// ...
build() {
switch (countryCode) {
case 55:
return '...' ;
case 352:
return '...' ;
case null:
{
if (regulatory != null) {
return '...' ;
}
return '...' ;
}
}
}It seems that the case null is no compatible with the expected int type, but countryCode is a int?.
This is the line in the compiled that is triggering the error:
sdk/pkg/dart2wasm/lib/code_generator.dart
Line 4543 in 13d9290
| : ((e as ConstantExpression).constant as IntConstant).value; |
Metadata
Metadata
Assignees
Labels
area-dart2wasmIssues for the dart2wasm compiler.Issues for the dart2wasm compiler.type-bugIncorrect behavior (everything from a crash to more subtle misbehavior)Incorrect behavior (everything from a crash to more subtle misbehavior)