dart-lang / sdk

The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.
https://dart.dev
BSD 3-Clause "New" or "Revised" License
10.19k stars 1.56k forks source link

Migration tool crashed trying to migrate the dartx package #44775

Closed pinkfish closed 10 months ago

pinkfish commented 3 years ago

Thank you for taking the time to file an issue!

This tracker is for issues related to:

If you aren't sure, file the issue here and we'll find the right home for it. In your issue, please include:

Dart SDK version: 2.12.0-133.7.beta (beta) (Tue Jan 12 09:25:38 2021 +0100) on "macos_x64" On Mac

Migrating /Users/david/development/dartx

See https://dart.dev/go/null-safety-migration for a migration guide.

Analyzing project... [-----------------------------------------------------------------------------]No analysis issues found.

Generating migration suggestions... [--\ ]Aborting migration due to an exception. This most likely is due to a bug in the migration tool. Please consider filing a bug report at:

https://github.com/dart-lang/sdk/issues/new Please include the SDK version (2.12.0-133.7.beta) in your bug report.

To attempt to perform migration anyway, you may re-run with --ignore-exceptions.

Exception details:

UnimplementedError: Extension on R Function() (FunctionTypeImpl at offset 267 in /Users/david/development/dartx/test/function_test.dart (func.invoke())

0 EdgeBuilder._unimplemented (package:nnbd_migration/src/edge_builder.dart:3181:5)

1 EdgeBuilder.getOrComputeElementType (package:nnbd_migration/src/edge_builder.dart:270:11)

2 EdgeBuilder.visitMethodInvocation (package:nnbd_migration/src/edge_builder.dart:1244:20)

3 MethodInvocationImpl.accept (package:analyzer/src/dart/ast/ast.dart:7186:49)

4 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

5 EdgeBuilder._handleAssignment (package:nnbd_migration/src/edge_builder.dart:2266:20)

6 EdgeBuilder._handleInvocationArguments (package:nnbd_migration/src/edge_builder.dart:2862:7)

7 EdgeBuilder.visitMethodInvocation (package:nnbd_migration/src/edge_builder.dart:1256:24)

8 MethodInvocationImpl.accept (package:analyzer/src/dart/ast/ast.dart:7186:49)

9 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

10 EdgeBuilder.visitExpressionStatement (package:nnbd_migration/src/edge_builder.dart:795:25)

11 ExpressionStatementImpl.accept (package:analyzer/src/dart/ast/ast.dart:3676:49)

12 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

13 EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1300:9)

14 GeneralizingAstVisitor.visitStatement (package:analyzer/dart/ast/visitor.dart:517:39)

15 GeneralizingAstVisitor.visitBlock (package:analyzer/dart/ast/visitor.dart:165:31)

16 BlockImpl.accept (package:analyzer/src/dart/ast/ast.dart:1083:49)

17 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

18 EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1300:9)

19 GeneralizingAstVisitor.visitFunctionBody (package:analyzer/dart/ast/visitor.dart:324:45)

20 GeneralizingAstVisitor.visitBlockFunctionBody (package:analyzer/dart/ast/visitor.dart:168:55)

21 BlockFunctionBodyImpl.accept (package:analyzer/src/dart/ast/ast.dart:1038:49)

22 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

23 EdgeBuilder.visitFunctionExpression. (package:nnbd_migration/src/edge_builder.dart:909:25)

24 ScopedSet.doScoped (package:nnbd_migration/src/utilities/scoped_set.dart:44:13)

25 EdgeBuilder.visitFunctionExpression (package:nnbd_migration/src/edge_builder.dart:907:28)

26 FunctionExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:5004:49)

27 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

28 EdgeBuilder._handleAssignment (package:nnbd_migration/src/edge_builder.dart:2266:20)

29 EdgeBuilder._handleInvocationArguments (package:nnbd_migration/src/edge_builder.dart:2862:7)

30 EdgeBuilder.visitMethodInvocation (package:nnbd_migration/src/edge_builder.dart:1256:24)

31 MethodInvocationImpl.accept (package:analyzer/src/dart/ast/ast.dart:7186:49)

32 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

33 EdgeBuilder.visitExpressionStatement (package:nnbd_migration/src/edge_builder.dart:795:25)

34 ExpressionStatementImpl.accept (package:analyzer/src/dart/ast/ast.dart:3676:49)

35 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

36 EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1300:9)

37 GeneralizingAstVisitor.visitStatement (package:analyzer/dart/ast/visitor.dart:517:39)

38 GeneralizingAstVisitor.visitBlock (package:analyzer/dart/ast/visitor.dart:165:31)

39 BlockImpl.accept (package:analyzer/src/dart/ast/ast.dart:1083:49)

40 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

41 EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1300:9)

42 GeneralizingAstVisitor.visitFunctionBody (package:analyzer/dart/ast/visitor.dart:324:45)

43 GeneralizingAstVisitor.visitBlockFunctionBody (package:analyzer/dart/ast/visitor.dart:168:55)

44 BlockFunctionBodyImpl.accept (package:analyzer/src/dart/ast/ast.dart:1038:49)

45 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

46 EdgeBuilder.visitFunctionExpression. (package:nnbd_migration/src/edge_builder.dart:909:25)

47 ScopedSet.doScoped (package:nnbd_migration/src/utilities/scoped_set.dart:44:13)

48 EdgeBuilder.visitFunctionExpression (package:nnbd_migration/src/edge_builder.dart:907:28)

49 FunctionExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:5004:49)

50 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

51 EdgeBuilder._handleAssignment (package:nnbd_migration/src/edge_builder.dart:2266:20)

52 EdgeBuilder._handleInvocationArguments (package:nnbd_migration/src/edge_builder.dart:2862:7)

53 EdgeBuilder.visitMethodInvocation (package:nnbd_migration/src/edge_builder.dart:1256:24)

54 MethodInvocationImpl.accept (package:analyzer/src/dart/ast/ast.dart:7186:49)

55 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

56 EdgeBuilder.visitExpressionStatement (package:nnbd_migration/src/edge_builder.dart:795:25)

57 ExpressionStatementImpl.accept (package:analyzer/src/dart/ast/ast.dart:3676:49)

58 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

59 EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1300:9)

60 GeneralizingAstVisitor.visitStatement (package:analyzer/dart/ast/visitor.dart:517:39)

61 GeneralizingAstVisitor.visitBlock (package:analyzer/dart/ast/visitor.dart:165:31)

62 BlockImpl.accept (package:analyzer/src/dart/ast/ast.dart:1083:49)

63 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

64 EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1300:9)

65 GeneralizingAstVisitor.visitFunctionBody (package:analyzer/dart/ast/visitor.dart:324:45)

66 GeneralizingAstVisitor.visitBlockFunctionBody (package:analyzer/dart/ast/visitor.dart:168:55)

67 BlockFunctionBodyImpl.accept (package:analyzer/src/dart/ast/ast.dart:1038:49)

68 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

69 EdgeBuilder.visitFunctionExpression. (package:nnbd_migration/src/edge_builder.dart:909:25)

70 ScopedSet.doScoped (package:nnbd_migration/src/utilities/scoped_set.dart:44:13)

71 EdgeBuilder.visitFunctionExpression (package:nnbd_migration/src/edge_builder.dart:907:28)

72 FunctionExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:5004:49)

73 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

74 EdgeBuilder._handleAssignment (package:nnbd_migration/src/edge_builder.dart:2266:20)

75 EdgeBuilder._handleInvocationArguments (package:nnbd_migration/src/edge_builder.dart:2862:7)

76 EdgeBuilder.visitMethodInvocation (package:nnbd_migration/src/edge_builder.dart:1256:24)

77 MethodInvocationImpl.accept (package:analyzer/src/dart/ast/ast.dart:7186:49)

78 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

79 EdgeBuilder.visitExpressionStatement (package:nnbd_migration/src/edge_builder.dart:795:25)

80 ExpressionStatementImpl.accept (package:analyzer/src/dart/ast/ast.dart:3676:49)

81 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

82 EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1300:9)

83 GeneralizingAstVisitor.visitStatement (package:analyzer/dart/ast/visitor.dart:517:39)

84 GeneralizingAstVisitor.visitBlock (package:analyzer/dart/ast/visitor.dart:165:31)

85 BlockImpl.accept (package:analyzer/src/dart/ast/ast.dart:1083:49)

86 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

87 EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1300:9)

88 GeneralizingAstVisitor.visitFunctionBody (package:analyzer/dart/ast/visitor.dart:324:45)

89 GeneralizingAstVisitor.visitBlockFunctionBody (package:analyzer/dart/ast/visitor.dart:168:55)

90 BlockFunctionBodyImpl.accept (package:analyzer/src/dart/ast/ast.dart:1038:49)

91 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

92 EdgeBuilder.visitFunctionExpression. (package:nnbd_migration/src/edge_builder.dart:909:25)

93 ScopedSet.doScoped (package:nnbd_migration/src/utilities/scoped_set.dart:44:13)

94 EdgeBuilder.visitFunctionExpression (package:nnbd_migration/src/edge_builder.dart:907:28)

95 FunctionExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:5004:49)

96 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

97 EdgeBuilder.visitFunctionDeclaration (package:nnbd_migration/src/edge_builder.dart:865:9)

98 FunctionDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:4866:49)

99 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2148:24)

100 EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1300:9)

101 GeneralizingAstVisitor.visitCompilationUnit (package:analyzer/dart/ast/visitor.dart:202:51)

102 CompletenessTracker.visitCompilationUnit. (package:nnbd_migration/src/utilities/completeness_tracker.dart:52:24)

103 PermissiveModeVisitor.reportExceptionsIfPermissive (package:nnbd_migration/src/utilities/permissive_mode.dart:26:24)

104 CompletenessTracker.visitCompilationUnit (package:nnbd_migration/src/utilities/completeness_tracker.dart:43:5)

105 CompilationUnitImpl.accept (package:analyzer/src/dart/ast/ast.dart:2134:49)

106 NullabilityMigrationImpl.processInput (package:nnbd_migration/src/nullability_migration_impl.dart:244:12)

107 NonNullableFix.processUnit (package:nnbd_migration/src/front_end/non_nullable_fix.dart:153:15)

108 _FixCodeProcessor.runLaterPhases. (package:nnbd_migration/migration_cli.dart:1134:19)

109 _FixCodeProcessor.runLaterPhases. (package:nnbd_migration/migration_cli.dart:1132:28)

110 _FixCodeProcessor.processResources (package:nnbd_migration/migration_cli.dart:1061:30)

#111 _FixCodeProcessor.runLaterPhases (package:nnbd_migration/migration_cli.dart:1132:5) #112 MigrationCliRunner.run (package:nnbd_migration/migration_cli.dart:738:24) #113 MigrateCommand.run (package:nnbd_migration/migration_cli.dart:185:7) #114 CommandRunner.runCommand (package:args/command_runner.dart:196:13) #115 DartdevRunner.runCommand (package:dartdev/dartdev.dart:188:18) #116 runDartdev (package:dartdev/dartdev.dart:51:16) #117 main (file:///opt/s/w/ir/cache/builder/src/third_party/dart/pkg/dartdev/bin/dartdev.dart:11:3)
stereotype441 commented 3 years ago

Thanks for the bug report! I'm able to reproduce the problem using the following commands:

$ git clone git@github.com:pinkfish/dartx.git
$ cd dartx
$ git checkout d8fb660b49efef6fe1d81f43a60cc5e42c7c7e44
$ dart pub get
$ dart migrate --skip-import-check

(Note that --skip-import-check is probably not a good idea for a real migration but it was sufficient for reproducing the bug).

I was able to get a migration by adding the --ignore-exceptions flag. @pinkfish were you able to make progress using this flag?

Judging by the stack trace, the migration tool seems to be stumbling on a fairly uncommon code pattern (an extension whose extended type is a typedef), so I'm classifying this as a P2.

pinkfish commented 3 years ago

Yes. I used ignore exceptions and that worked. I made progress with it.

Thanks!

On Tue, 26 Jan 2021 at 09:21, Paul Berry notifications@github.com wrote:

Thanks for the bug report! I'm able to reproduce the problem using the following commands:

$ git clone git@github.com:pinkfish/dartx.git $ cd dartx $ git checkout d8fb660b49efef6fe1d81f43a60cc5e42c7c7e44 $ dart pub get $ dart migrate --skip-import-check

(Note that --skip-import-check is probably not a good idea for a real migration but it was sufficient for reproducing the bug).

I was able to get a migration by adding the --ignore-exceptions flag. @pinkfish https://github.com/pinkfish were you able to make progress using this flag?

Judging by the stack trace, the migration tool seems to be stumbling on a fairly uncommon code pattern (an extension whose extended type is a typedef), so I'm classifying this as a P2.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/dart-lang/sdk/issues/44775#issuecomment-767696912, or unsubscribe https://github.com/notifications/unsubscribe-auth/AATOMMPTX4FCV6EZ4XE5NE3S3322ZANCNFSM4WSCHQOA .

stereotype441 commented 10 months ago

As of 1c7fe7196dd7a542f7f91cd6ea2ac81e1a13146c, the null safety migration tool has been removed from active development and retired. No further work on the tool is planned.

If you still need help, or you believe this issue has been closed in error, please feel free to reopen.