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

Migration: Expressions in annotations don't get control flow instance, cause NPE #42295

Closed
MichaelRFairhurst opened this issue Jun 11, 2020 · 5 comments
Assignees
Labels
area-migration (deprecated) Deprecated: this label is no longer actively used (was: issues with the `dart migrate` tool). P1 A high priority bug; for example, a single project is unusable or has many test failures type-bug Incorrect behavior (everything from a crash to more subtle misbehavior)

Comments

@MichaelRFairhurst
Copy link
Contributor

class Foo {                                                                      
  const Foo(bool x);                                                             
}                                                                                
                                                                                 
@Foo(true)                                                                       
int x;

Boolean literals can affect control flow, so EdgeBuilder tries to inform control flow about this true literal, but we have not created an instance of control flow, so it crashes.

The solution is to create control flow for annotation expressions.

NoSuchMethodError: The method 'booleanLiteral' was called on null.
Receiver: null
Tried calling: booleanLiteral(Instance of 'BooleanLiteralImpl', true)

#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
#1      EdgeBuilder.visitBooleanLiteral (package:nnbd_migration/src/edge_builder.dart:474:19)
#2      BooleanLiteralImpl.accept (package:analyzer/src/dart/ast/ast.dart:1116:49)
#3      EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2038:22)
#4      EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1198:9)
#5      GeneralizingAstVisitor.visitArgumentList (package:analyzer/dart/ast/visitor.dart:140:45)
#6      ArgumentListImpl.accept (package:analyzer/src/dart/ast/ast.dart:359:49)
#7      EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2038:22)
#8      EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1198:9)
#9      GeneralizingAstVisitor.visitAnnotation (package:analyzer/dart/ast/visitor.dart:137:41)
#10     CompletenessTracker.visitAnnotation (package:nnbd_migration/src/utilities/completeness_tracker.dart:26:18)
#11     AnnotationImpl.accept (package:analyzer/src/dart/ast/ast.dart:284:49)
#12     EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2038:22)
#13     EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1198:9)
#14     GeneralizingAstVisitor.visitAnnotatedNode (package:analyzer/dart/ast/visitor.dart:134:47)
#15     GeneralizingAstVisitor.visitDeclaration (package:analyzer/dart/ast/visitor.dart:227:43)
#16     GeneralizingAstVisitor.visitCompilationUnitMember (package:analyzer/dart/ast/visitor.dart:202:7)
#17     GeneralizingAstVisitor.visitTopLevelVariableDeclaration (package:analyzer/dart/ast/visitor.dart:551:7)
#18     TopLevelVariableDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:9866:15)
#19     EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2038:22)
#20     EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1198:9)
#21     GeneralizingAstVisitor.visitCompilationUnit (package:analyzer/dart/ast/visitor.dart:199:51)
#22     CompletenessTracker.visitCompilationUnit.<anonymous closure> (package:nnbd_migration/src/utilities/completeness_tracker.dart:48:24)
#23     PermissiveModeVisitor.reportExceptionsIfPermissive (package:nnbd_migration/src/utilities/permissive_mode.dart:26:24)
#24     CompletenessTracker.visitCompilationUnit (package:nnbd_migration/src/utilities/completeness_tracker.dart:39:5)
#25     CompilationUnitImpl.accept (package:analyzer/src/dart/ast/ast.dart:2125:49)
#26     NullabilityMigrationImpl.processInput (package:nnbd_migration/src/nullability_migration_impl.dart:191:12)
#27     NonNullableFix.processUnit (package:nnbd_migration/src/front_end/non_nullable_fix.dart:150:19)
#28     _FixCodeProcessor.runLaterPhases.<anonymous closure> (package:nnbd_migration/migration_cli.dart:923:21)
#29     _FixCodeProcessor.processResources (package:nnbd_migration/migration_cli.dart:869:30)
<asynchronous suspension>
#30     _FixCodeProcessor.runLaterPhases (package:nnbd_migration/migration_cli.dart:921:13)
#31     MigrationCli.run.<anonymous closure> (package:nnbd_migration/migration_cli.dart:445:45)
<asynchronous suspension>
#32     MigrationCli.run.<anonymous closure> (package:nnbd_migration/migration_cli.dart)
#33     MigrationCli._withProgress (package:nnbd_migration/migration_cli.dart:709:21)
#34     MigrationCli.run (package:nnbd_migration/migration_cli.dart:420:11)
#35     main (file:///home/mfairhurst/projects/dart/sdk/pkg/nnbd_migration/bin/migrate.dart:18:39)
#36     _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:299:32)
#37     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
@MichaelRFairhurst MichaelRFairhurst added area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. type-bug Incorrect behavior (everything from a crash to more subtle misbehavior) analyzer-nnbd-migration labels Jun 11, 2020
@srawlins srawlins self-assigned this Jun 11, 2020
@srawlins srawlins added the P1 A high priority bug; for example, a single project is unusable or has many test failures label Jun 11, 2020
@hillelcoren
Copy link
Contributor

We're seeing this error as well

@vsmenon vsmenon reopened this Jun 26, 2020
@vsmenon
Copy link
Member

vsmenon commented Jun 26, 2020

@kevmoo @mit-mit - do you know why the dart-bot closed this on us?

@srawlins
Copy link
Member

@vsmenon didn't the bot close this because I landed a fix in b907f99 ?

@vsmenon
Copy link
Member

vsmenon commented Jun 26, 2020

Ahh, sorry. I missed that! Thanks @srawlins . @hillelcoren - please open a new issue if you're still seeing the bug. See

b907f99

for what branches the fix is in.

@hillelcoren
Copy link
Contributor

Thanks for the info, sorry for the confusion!

@stereotype441 stereotype441 added area-migration (deprecated) Deprecated: this label is no longer actively used (was: issues with the `dart migrate` tool). and removed analyzer-nnbd-migration area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. labels Nov 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-migration (deprecated) Deprecated: this label is no longer actively used (was: issues with the `dart migrate` tool). P1 A high priority bug; for example, a single project is unusable or has many test failures type-bug Incorrect behavior (everything from a crash to more subtle misbehavior)
Projects
None yet
Development

No branches or pull requests

5 participants