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 Exception "LUB/GLB with unexpected types: DynamicTypeImpl/InterfaceTypeImpl" #45574

Closed
nipunasudha opened this issue Apr 2, 2021 · 2 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

@nipunasudha
Copy link

nipunasudha commented Apr 2, 2021

Description

I am using RxDart (v0.26.0) ValueStreamExtensions.value getter extension. Here is the extension definition in the library.

// rxdart-0.26.0/lib/src/streams/value_stream.dart
extension ValueStreamExtensions<T> on ValueStream<T> {
  /// Returns last emitted value, or null if there has been no emission yet.
  T? get value => valueWrapper?.value;
}

Here is how I use it in one of my methods.

import 'package:rxdart/rxdart.dart';

class DefaultFileUploader {
  final BehaviorSubject<List<UploadHandler>> handlersStream =
      BehaviorSubject<List<UploadHandler>>.seeded([]);

  void forceUpdateHandlerStream() {
    final List<UploadHandler> currentHandlers = handlersStream.value ?? []; /// error line
    handlersStream.add(currentHandlers);
  }
}

Error Occurred

When I run dart migrate the following error occurs. My personal guess is the migrate tool is not configured to handle extension method getter with a ?? null check operator.

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.2) in your bug report.

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

Exception details:

UnimplementedError: LUB/GLB with unexpected types: DynamicTypeImpl/InterfaceTypeImpl in "handlersStream.value ?? []" on line 53 of "/home/nipuna/panda/flutter_projects/project-manager/lib/managers/upload_manager/definitions/default_file_uploader.dart" at offset 1777 in /home/nipuna/panda/flutter_projects/project-manager/lib/managers/upload_manager/definitions/default_file_uploader.dart (handlersStream.value ?? [])

#0 EdgeBuilder._unimplemented (package:nnbd_migration/src/edge_builder.dart:3253:5)
#1 EdgeBuilder._decorateUpperOrLowerBound (package:nnbd_migration/src/edge_builder.dart:2129:11)
#2 EdgeBuilder._decorateUpperOrLowerBound (package:nnbd_migration/src/edge_builder.dart:2058:14)
#3 EdgeBuilder.visitBinaryExpression (package:nnbd_migration/src/edge_builder.dart:495:26)
#4 BinaryExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:967:49)
#5 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2207:24)
#6 EdgeBuilder._handleAssignment (package:nnbd_migration/src/edge_builder.dart:2329:20)
#7 EdgeBuilder.visitVariableDeclarationList (package:nnbd_migration/src/edge_builder.dart:1924:11)
#8 VariableDeclarationListImpl.accept (package:analyzer/src/dart/ast/ast.dart:10655:15)
#9 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2207:24)
#10 EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1340:9)
#11 GeneralizingAstVisitor.visitStatement (package:analyzer/dart/ast/visitor.dart:517:39)
#12 GeneralizingAstVisitor.visitVariableDeclarationStatement (package:analyzer/dart/ast/visitor.dart:589:7)
#13 VariableDeclarationStatementImpl.accept (package:analyzer/src/dart/ast/ast.dart:10705:15)
#14 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2207:24)
#15 EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1340:9)
#16 GeneralizingAstVisitor.visitStatement (package:analyzer/dart/ast/visitor.dart:517:39)
#17 GeneralizingAstVisitor.visitBlock (package:analyzer/dart/ast/visitor.dart:165:31)
#18 BlockImpl.accept (package:analyzer/src/dart/ast/ast.dart:1083:49)
#19 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2207:24)
#20 EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1340:9)
#21 GeneralizingAstVisitor.visitFunctionBody (package:analyzer/dart/ast/visitor.dart:324:45)
#22 GeneralizingAstVisitor.visitBlockFunctionBody (package:analyzer/dart/ast/visitor.dart:168:55)
#23 BlockFunctionBodyImpl.accept (package:analyzer/src/dart/ast/ast.dart:1038:49)
#24 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2207:24)
#25 EdgeBuilder._handleExecutableDeclaration (package:nnbd_migration/src/edge_builder.dart:2488:7)
#26 EdgeBuilder.visitMethodDeclaration (package:nnbd_migration/src/edge_builder.dart:1243:5)
#27 MethodDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:7033:49)
#28 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2207:24)
#29 EdgeBuilder._dispatchList (package:nnbd_migration/src/edge_builder.dart:2229:7)
#30 EdgeBuilder.visitClassOrMixinOrExtensionDeclaration (package:nnbd_migration/src/edge_builder.dart:607:7)
#31 EdgeBuilder.visitClassDeclaration (package:nnbd_migration/src/edge_builder.dart:574:5)
#32 ClassDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:1536:49)
#33 EdgeBuilder._dispatch (package:nnbd_migration/src/edge_builder.dart:2207:24)
#34 EdgeBuilder.visitNode (package:nnbd_migration/src/edge_builder.dart:1340:9)
#35 GeneralizingAstVisitor.visitCompilationUnit (package:analyzer/dart/ast/visitor.dart:202:51)
#36 CompletenessTracker.visitCompilationUnit. (package:nnbd_migration/src/utilities/completeness_tracker.dart:52:24)
#37 PermissiveModeVisitor.reportExceptionsIfPermissive (package:nnbd_migration/src/utilities/permissive_mode.dart:26:24)
#38 CompletenessTracker.visitCompilationUnit (package:nnbd_migration/src/utilities/completeness_tracker.dart:43:5)
#39 CompilationUnitImpl.accept (package:analyzer/src/dart/ast/ast.dart:2134:49)
#40 NullabilityMigrationImpl.processInput (package:nnbd_migration/src/nullability_migration_impl.dart:244:12)
#41 NonNullableFix.processUnit (package:nnbd_migration/src/front_end/non_nullable_fix.dart:164:15)
#42 _FixCodeProcessor.runLaterPhases. (package:nnbd_migration/migration_cli.dart:1154:19)
#43 _FixCodeProcessor.runLaterPhases. (package:nnbd_migration/migration_cli.dart:1152:28)
#44 _FixCodeProcessor.processResources (package:nnbd_migration/migration_cli.dart:1081:30)
#45 _FixCodeProcessor.runLaterPhases (package:nnbd_migration/migration_cli.dart:1152:5)
#46 MigrationCliRunner.run (package:nnbd_migration/migration_cli.dart:749:24)
#47 MigrateCommand.run (package:nnbd_migration/migration_cli.dart:185:7)
#48 CommandRunner.runCommand (package:args/command_runner.dart:196:13)
#49 DartdevRunner.runCommand (package:dartdev/dartdev.dart:199:18)
#50 runDartdev (package:dartdev/dartdev.dart:53:16)
#51 main (file:///tmp/tmpTqI70l/dart-2.12.2/dart/pkg/dartdev/bin/dartdev.dart:11:3)

System Information

Here's my Flutter doctor output:

[✓] Flutter (Channel unknown, 2.0.3, on Linux, locale en_US.UTF-8)
• Flutter version 2.0.3 at /home/nipuna/fvm/versions/2.0.3
• Framework revision 4d7946a68d (2 weeks ago), 2021-03-18 17:24:33 -0700
• Engine revision 3459eb2436
• Dart version 2.12.2

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
• Android SDK at /home/nipuna/Android/Sdk
• Platform android-30, build-tools 30.0.2
• ANDROID_HOME = /home/nipuna/Android/Sdk
• Java binary at: /home/nipuna/.local/share/JetBrains/Toolbox/apps/AndroidStudio/ch-0/193.6626763/jre/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
• All Android licenses accepted.

[✓] Chrome - develop for the web
• CHROME_EXECUTABLE = /usr/bin/google-chrome-stable

[✓] Android Studio (version 4.0)
• Android Studio at /home/nipuna/.local/share/JetBrains/Toolbox/apps/AndroidStudio/ch-0/193.6626763
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] IntelliJ IDEA Ultimate Edition (version 2020.3)
• IntelliJ at /home/nipuna/.local/share/JetBrains/Toolbox/apps/IDEA-U/ch-0/203.6682.168
• Flutter plugin version 55.0.3
• Dart plugin version 203.7759

[✓] IntelliJ IDEA Ultimate Edition (version 2020.2)
• IntelliJ at /home/nipuna/.local/share/JetBrains/Toolbox/apps/IDEA-U/ch-0/202.8194.7
• Flutter plugin version 51.0.3
• Dart plugin version 202.7319.5

[✓] Connected device (2 available)
• Android SDK built for x86 (mobile) • emulator-5554 • android-x86 • Android 6.0 (API 23) (emulator)
• Chrome (web) • chrome • web-javascript • Google Chrome 88.0.4324.150

• No issues found!

I will post more information if required, please ask :)

@stereotype441
Copy link
Member

@nipunasudha thanks for the detailed information! I believe this is enough information that I will be able to reproduce and fix the bug.

Were you able make progress by re-running migration with --ignore-exceptions?

@nipunasudha
Copy link
Author

Migration tool runs successfully with no errors when I use --ignore-exceptions. Migration is applied successfully, with no changes to the line with the ?? operator.

@mraleph mraleph added area-migration (deprecated) Deprecated: this label is no longer actively used (was: issues with the `dart migrate` tool). type-bug Incorrect behavior (everything from a crash to more subtle misbehavior) labels Apr 5, 2021
@stereotype441 stereotype441 added the P1 A high priority bug; for example, a single project is unusable or has many test failures label Apr 5, 2021
@stereotype441 stereotype441 self-assigned this Apr 13, 2021
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

3 participants