-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Closed
Labels
P1A high priority bug; for example, a single project is unusable or has many test failuresA high priority bug; for example, a single project is unusable or has many test failuresarea-web-jsIssues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop.Issues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop.crashProcess exits with SIGSEGV, SIGABRT, etc. An unhandled exception is not a crash.Process exits with SIGSEGV, SIGABRT, etc. An unhandled exception is not a crash.customer-dart2jscustomer-flutterdart2js-crashweb-js-interopIssues that impact all js interopIssues that impact all js interop
Description
I'm getting the following error trying to compile a Flutter app with engine changes in flutter/engine@4776107.
Target dart2js failed: Exception: Unhandled exception:
NoSuchMethodError: The getter 'isChecks' was called on null.
Receiver: null
Tried calling: isChecks
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
#1 ProgramBuilder._buildClass.<anonymous closure> (package:compiler/src/js_emitter/program_builder/program_builder.dart:754:14)
#2 TypeTestProperties.forEachProperty.handleTypeTest (package:compiler/src/js_emitter/runtime_type_generator.dart:73:8)
#3 TypeTestProperties.forEachProperty (package:compiler/src/js_emitter/runtime_type_generator.dart:78:21)
#4 ProgramBuilder._buildClass (package:compiler/src/js_emitter/program_builder/program_builder.dart:752:17)
#5 List.forEach (dart:core-patch/growable_array.dart:290:8)
#6 ProgramBuilder.buildProgram.<anonymous closure> (package:compiler/src/js_emitter/program_builder/program_builder.dart:197:15)
#7 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8)
#8 ProgramBuilder.buildProgram (package:compiler/src/js_emitter/program_builder/program_builder.dart:196:10)
#9 EmitterImpl.emitProgram.<anonymous closure> (package:compiler/src/js_emitter/startup_emitter/emitter.dart:193:29)
#10 CompilerTask.measureSubtask (package:compiler/src/common/tasks.dart:179:35)
#11 EmitterImpl.emitProgram (package:compiler/src/js_emitter/startup_emitter/emitter.dart:192:29)
#12 CodeEmitterTask.assembleProgram.<anonymous closure> (package:compiler/src/js_emitter/code_emitter_task.dart:147:26)
#13 CompilerTask.measure (package:compiler/src/common/tasks.dart:64:51)
#14 CodeEmitterTask.assembleProgram (package:compiler/src/js_emitter/code_emitter_task.dart:117:12)
#15 JsBackendStrategy.assembleProgram (package:compiler/src/js_model/js_strategy.dart:359:35)
#16 Compiler.runCodegenEnqueuer (package:compiler/src/compiler.dart:390:39)
#17 Compiler.generateJavaScriptCode (package:compiler/src/compiler.dart:284:9)
#18 Compiler.compileFromKernel.<anonymous closure> (package:compiler/src/compiler.dart:432:9)
#19 CompilerTask.measureSubtask (package:compiler/src/common/tasks.dart:179:35)
#20 Compiler.compileFromKernel (package:compiler/src/compiler.dart:405:14)
#21 Compiler.runInternal (package:compiler/src/compiler.dart:257:13)
<asynchronous suspension>
#22 Compiler.run.<anonymous closure>.<anonymous closure> (package:compiler/src/compiler.dart:212:38)
#23 new Future.sync (dart:async/future.dart:223:31)
#24 Compiler.run.<anonymous closure> (package:compiler/src/compiler.dart:212:20)
#25 CompilerTask.measureSubtask (package:compiler/src/common/tasks.dart:179:35)
#26 Compiler.run (package:compiler/src/compiler.dart:209:41)
#27 CompilerImpl.run.<anonymous closure>.<anonymous closure> (package:compiler/src/apiimpl.dart:91:22)
#28 _RootZone.runUnary (dart:async/zone.dart:1450:54)
#29 _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
#30 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
#31 Future._propagateToListeners (dart:async/future_impl.dart:725:32)
#32 Future._completeWithValue (dart:async/future_impl.dart:529:5)
#33 Future._asyncCompleteWithValue.<anonymous closure> (dart:async/future_impl.dart:567:7)
#34 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#35 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
#36 _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
#37 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:169:5)
The pattern that seems to be triggering the error is the one we use to convert between Dart-side enums to an enum-like API in the CanvasKit JavaScript library. Here's an example:
@JS()
class SkFilterQualityEnum {
external SkFilterQuality get None;
external SkFilterQuality get Low;
external SkFilterQuality get Medium;
external SkFilterQuality get High;
}
@JS()
class SkFilterQuality {
external int get value;
}
final List<SkFilterQuality> _skFilterQualitys = <SkFilterQuality>[
canvasKitJs.FilterQuality.None,
canvasKitJs.FilterQuality.Low,
canvasKitJs.FilterQuality.Medium,
canvasKitJs.FilterQuality.High,
];
SkFilterQuality toSkFilterQuality(ui.FilterQuality filterQuality) {
return _skFilterQualitys[filterQuality.index];
}
If I comment out all usages of toSkFilterQuality
(and similar functions) dart2js is happy.
Metadata
Metadata
Assignees
Labels
P1A high priority bug; for example, a single project is unusable or has many test failuresA high priority bug; for example, a single project is unusable or has many test failuresarea-web-jsIssues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop.Issues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop.crashProcess exits with SIGSEGV, SIGABRT, etc. An unhandled exception is not a crash.Process exits with SIGSEGV, SIGABRT, etc. An unhandled exception is not a crash.customer-dart2jscustomer-flutterdart2js-crashweb-js-interopIssues that impact all js interopIssues that impact all js interop