Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dart2js crashes when MirrorsUsed annotations contains symbols. #16682

Closed
floitschG opened this issue Feb 10, 2014 · 1 comment
Closed

dart2js crashes when MirrorsUsed annotations contains symbols. #16682

floitschG opened this issue Feb 10, 2014 · 1 comment
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

Comments

@floitschG
Copy link
Contributor

dart2js crashes when MirrorsUsed annotations contains symbols.

My current take:
The validate method in MirrorUsageAnalyzerTask 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)

@floitschG
Copy link
Contributor Author

I went back to November and at that time this was not working either.
Maybe we should just disallow symbols and require the input to be strings.

@kevmoo kevmoo added type-bug Incorrect behavior (everything from a crash to more subtle misbehavior) and removed priority-unassigned labels Feb 29, 2016
@matanlurey matanlurey added the closed-obsolete Closed as the reported issue is no longer relevant label Jun 19, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
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
Projects
None yet
Development

No branches or pull requests

3 participants