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

Dart produces StackOverflow on declaring class A<X extends FutureOr<X>> #34947

Open
iarkh opened this issue Oct 27, 2018 · 0 comments
Open

Dart produces StackOverflow on declaring class A<X extends FutureOr<X>> #34947

iarkh opened this issue Oct 27, 2018 · 0 comments
Labels
legacy-area-front-end Legacy: Use area-dart-model instead.

Comments

@iarkh
Copy link
Contributor

iarkh commented Oct 27, 2018

Dart SDK Version: 2.1.0-dev.8.0
OS: Windows 10 (64 bit)

This is a regression in dart 2.1.0-dev.8.0, not reproducible with dev.7.0.

Dart crashes when class A<X extends FutureOr<X>> is declared.

Here is a sample code:

import "dart:async";
class A<X extends FutureOr<X>> {}
main() {}

Dart crashes with this, sample output is:

Crash when compiling null,
at character offset null:
Stack Overflow
#0 __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin._getValueOrData (dart:collection/runtime/libcompact_hash.dart:324:3)
#1 _TopSubstitutor.lookup (package:kernel/type_algebra.dart:313:47)
#2 TypeParameterType.accept (package:kernel/ast.dart:731:31)
#3 ListIterable.toList (dart:_internal/iterable.dart)
#4 _TypeSubstitutor.visitInterfaceType (package:kernel/type_algebra.dart:540:55)
#5 InterfaceType.accept (package:kernel/ast.dart:4629:34)
#6 ClosedWorldClassHierarchy.getTypeAsInstanceOf (package:kernel/class_hierarchy.dart:501:31)
#7 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:475:21)
#8 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:458:14)
#9 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#10 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#11 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#12 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#13 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#14 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#15 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#16 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#17 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#18 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#19 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#20 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#21 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#22 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#23 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#24 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#25 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#26 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#27 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#28 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#29 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#30 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#31 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#32 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#33 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#34 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#35 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#36 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#37 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#38 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#39 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#40 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#41 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#42 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
...
...
#12356 _asyncThenWrapperHelper. (dart:async/runtime/libasync_patch.dart:77:64)
#12357 _rootRunUnary (dart:async/zone.dart:1132:38)
#12358 _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#12359 _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
#12360 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:642:45)
#12361 Future._propagateToListeners (dart:async/future_impl.dart:671:32)
#12362 Future._complete (dart:async/future_impl.dart:476:7)
#12363 _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
#12364 _AsyncAwaitCompleter.complete (dart:async/runtime/libasync_patch.dart:28:18)
#12365 _completeOnAsyncReturn (dart:async/runtime/libasync_patch.dart:295:13)
#12366 SourceLoader.tokenize (package:front_end/src/fasta/source/source_loader.dart)
#12367 _asyncThenWrapperHelper. (dart:async/runtime/libasync_patch.dart:77:64)
#12368 _rootRunUnary (dart:async/zone.dart:1132:38)
#12369 _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#12370 _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
#12371 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:642:45)
#12372 Future._propagateToListeners (dart:async/future_impl.dart:671:32)
#12373 Future._complete (dart:async/future_impl.dart:476:7)
#12374 _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
#12375 _AsyncAwaitCompleter.complete (dart:async/runtime/libasync_patch.dart:28:18)
#12376 _completeOnAsyncReturn (dart:async/runtime/libasync_patch.dart:295:13)
#12377 _IoFileSystemEntity.readAsBytes (package:front_end/src/api_prototype/standard_file_system.dart)
#12378 _asyncThenWrapperHelper. (dart:async/runtime/libasync_patch.dart:77:64)
#12379 _rootRunUnary (dart:async/zone.dart:1132:38)
#12380 _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#12381 _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
#12382 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:642:45)
#12383 Future._propagateToListeners (dart:async/future_impl.dart:671:32)
#12384 Future._completeWithValue (dart:async/future_impl.dart:486:5)
#12385 Future._asyncComplete. (dart:async/future_impl.dart:516:7)
#12386 _rootRun (dart:async/zone.dart:1124:13)
#12387 _CustomZone.run (dart:async/zone.dart:1021:19)
#12388 _CustomZone.bindCallback. (dart:async/zone.dart:947:23)
#12389 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#12390 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
#12391 _runPendingImmediateCallback (dart:isolate/runtime/libisolate_patch.dart:115:13)
#12392 _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:172:5)

#0 __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin._getValueOrData (dart:collection/runtime/libcompact_hash.dart:324:3)
#1 _TopSubstitutor.lookup (package:kernel/type_algebra.dart:313:47)
#2 TypeParameterType.accept (package:kernel/ast.dart:731:31)
#3 ListIterable.toList (dart:_internal/iterable.dart)
#4 _TypeSubstitutor.visitInterfaceType (package:kernel/type_algebra.dart:540:55)
#5 InterfaceType.accept (package:kernel/ast.dart:4629:34)
#6 ClosedWorldClassHierarchy.getTypeAsInstanceOf (package:kernel/class_hierarchy.dart:501:31)
#7 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:475:21)
#8 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:458:14)
#9 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#10 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#11 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#12 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#13 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#14 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#15 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#16 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#17 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#18 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#19 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#20 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#21 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#22 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#23 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#24 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#25 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#26 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#27 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#28 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#29 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#30 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#31 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#32 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#33 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#34 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#35 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#36 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#37 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#38 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#39 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#40 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
#41 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:501:14)
#42 SubtypeTester.isSubtypeOf (package:kernel/type_environment.dart:459:11)
...
...
#12356 _asyncThenWrapperHelper. (dart:async/runtime/libasync_patch.dart:77:64)
#12357 _rootRunUnary (dart:async/zone.dart:1132:38)
#12358 _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#12359 _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
#12360 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:642:45)
#12361 Future._propagateToListeners (dart:async/future_impl.dart:671:32)
#12362 Future._complete (dart:async/future_impl.dart:476:7)
#12363 _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
#12364 _AsyncAwaitCompleter.complete (dart:async/runtime/libasync_patch.dart:28:18)
#12365 _completeOnAsyncReturn (dart:async/runtime/libasync_patch.dart:295:13)
#12366 SourceLoader.tokenize (package:front_end/src/fasta/source/source_loader.dart)
#12367 _asyncThenWrapperHelper. (dart:async/runtime/libasync_patch.dart:77:64)
#12368 _rootRunUnary (dart:async/zone.dart:1132:38)
#12369 _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#12370 _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
#12371 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:642:45)
#12372 Future._propagateToListeners (dart:async/future_impl.dart:671:32)
#12373 Future._complete (dart:async/future_impl.dart:476:7)
#12374 _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
#12375 _AsyncAwaitCompleter.complete (dart:async/runtime/libasync_patch.dart:28:18)
#12376 _completeOnAsyncReturn (dart:async/runtime/libasync_patch.dart:295:13)
#12377 _IoFileSystemEntity.readAsBytes (package:front_end/src/api_prototype/standard_file_system.dart)
#12378 _asyncThenWrapperHelper. (dart:async/runtime/libasync_patch.dart:77:64)
#12379 _rootRunUnary (dart:async/zone.dart:1132:38)
#12380 _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#12381 _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
#12382 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:642:45)
#12383 Future._propagateToListeners (dart:async/future_impl.dart:671:32)
#12384 Future._completeWithValue (dart:async/future_impl.dart:486:5)
#12385 Future._asyncComplete. (dart:async/future_impl.dart:516:7)
#12386 _rootRun (dart:async/zone.dart:1124:13)
#12387 _CustomZone.run (dart:async/zone.dart:1021:19)
#12388 _CustomZone.bindCallback. (dart:async/zone.dart:947:23)
#12389 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#12390 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
#12391 _runPendingImmediateCallback (dart:isolate/runtime/libisolate_patch.dart:115:13)
#12392 _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:172:5)

@vsmenon vsmenon added the legacy-area-front-end Legacy: Use area-dart-model instead. label Oct 29, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
legacy-area-front-end Legacy: Use area-dart-model instead.
Projects
None yet
Development

No branches or pull requests

2 participants