dart2js crashes when MirrorsUsed annotations contains symbols. #16682
Labels
closed-obsolete
Closed as the reported issue is no longer relevant
type-bug
Incorrect behavior (everything from a crash to more subtle misbehavior)
web-dart2js
dart2js crashes when MirrorsUsed annotations contains symbols.
My current take:
The
validate
method inMirrorUsageAnalyzerTask
uses the ConstantMapper visitor which evaluates the constant. However at that time the Symbol constructor hasn't been completely resolved yet.Example:
@MirrorsUsed(symbols: #foo)
import 'dart:mirrors';
main() {
}
Backtrace:
NoSuchMethodError : method not found: 'getType'
Receiver: null
Arguments: [Instance of 'Send']
0 Object.noSuchMethod (dart:core-patch/object_patch.dart:45)
1 ResolverTask.resolveRedirectionChain (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart:669:31)
2 CompileTimeConstantEvaluator.makeConstructedConstant (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/compile_time_constants.dart:720:46)
3 CompileTimeConstantEvaluator.visitLiteralSymbol (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/compile_time_constants.dart:404:35)
4 LiteralSymbol.accept (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/tree/nodes.dart:976:56)
5 CompileTimeConstantEvaluator.evaluate (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/compile_time_constants.dart:252:23)
6 ConstantMapper.visitNode (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart:1250:43)
7 Visitor.visitExpression (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/tree/nodes.dart:25:50)
8 Visitor.visitLiteralSymbol (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/tree/nodes.dart:80:62)
9 LiteralSymbol.accept (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/tree/nodes.dart:976:56)
10 MirrorUsageAnalyzerTask.validate (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/mirrors_used.dart:141:30)
11 ResolverVisitor.visitNewExpression (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart:3101:48)
12 NewExpression.accept (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/tree/nodes.dart:494:56)
13 ResolverTask.resolveMetadataAnnotation.<anonymous closure>.<anonymous closure> (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart:1223:18)
14 CompilerTask.measure (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/compiler.dart:1623:37)
15 ResolverTask.resolveMetadataAnnotation.<anonymous closure> (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart:1212:75)
16 Compiler.withCurrentElement (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/compiler.dart:499:15)
17 Compiler.withCurrentElement (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/compiler.dart:520:7)
18 Compiler.withCurrentElement (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/compiler.dart:500:7)
19 ResolverTask.resolveMetadataAnnotation (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart:1212:32)
20 MetadataAnnotationX.ensureResolved (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/elements/modelx.dart:2502:50)
21 MirrorUsageAnalyzer.mirrorsUsedOnLibraryTag (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/mirrors_used.dart:269:30)
22 MirrorUsageAnalyzer.collectMirrorsUsedAnnotation.<anonymous closure> (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/mirrors_used.dart:211:38)
23 Compiler.withCurrentElement (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/compiler.dart:499:15)
24 Compiler.withCurrentElement (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/compiler.dart:514:23)
25 Compiler.withCurrentElement (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/compiler.dart:500:7)
26 MirrorUsageAnalyzer.collectMirrorsUsedAnnotation (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/mirrors_used.dart:209:36)
27 run (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/mirrors_used.dart:186:37)
28 CompilerTask.measure (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/compiler.dart:1623:37)
29 MirrorUsageAnalyzerTask.analyzeUsage (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/mirrors_used.dart:107:12)
30 Compiler.compileLoadedLibraries (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/compiler.dart:1059:43)
31 Compiler.runCompiler.<anonymous closure> (file:///mnt/ssd/floitsch/code/dart/dart/sdk/lib/_internal/compiler/implementation/compiler.dart:1008:29)
32 _rootRunUnary (dart:async/zone.dart:717)
33 _RootZone.runUnary (dart:async/zone.dart:854)
34 _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:439)
35 _Future._propagateToListeners (dart:async/future_impl.dart:522)
36 _Future._complete (dart:async/future_impl.dart:303)
37 Future.forEach.nextElement (dart:async/future.dart:286)
38 _rootRunUnary (dart:async/zone.dart:717)
39 _RootZone.runUnary (dart:async/zone.dart:854)
40 _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:439)
41 _Future._propagateToListeners (dart:async/future_impl.dart:522)
42 _Future._complete (dart:async/future_impl.dart:303)
43 _Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:354)
44 _asyncRunCallbackLoop (dart:async/schedule_microtask.dart:23)
45 _asyncRunCallback (dart:async/schedule_microtask.dart:32)
46 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:119)
The text was updated successfully, but these errors were encountered: