-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Closed
Labels
P0A serious issue requiring immediate resolutionA serious issue requiring immediate resolutionfront-end-kernellegacy-area-front-endLegacy: Use area-dart-model instead.Legacy: Use area-dart-model instead.type-bugIncorrect behavior (everything from a crash to more subtle misbehavior)Incorrect behavior (everything from a crash to more subtle misbehavior)
Milestone
Description
import "dart:async";
class Foo {
Future<List<Bar>> get bars => null;
Future<int> get boom async => (await bars)
.map((Bar bar) => bar.value)
.reduce((int a, int b) => a + b);
}
class Bar {
int value;
}
main() {}Crash when compiling null,
at character offset null:
dynamic is not a subtype of dart.core::Iterable in :result
#0 TypeEnvironment.typeError (package:kernel/type_environment.dart:103:7)
#1 Expression.getStaticTypeAsInstanceOf (package:kernel/ast.dart:2135:11)
#2 MethodInvocation.getStaticType (package:kernel/ast.dart:2744:35)
#3 AnnotateWithStaticTypes.visitMethodInvocation (package:vm/transformations/call_site_annotator.dart:76:39)
#4 MethodInvocation.accept (package:kernel/ast.dart:2773:36)
#5 VariableSet.visitChildren (package:kernel/ast.dart:2204:12)
#6 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#7 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#8 TreeVisitor.defaultExpression (package:kernel/visitor.dart:135:43)
#9 TreeVisitor.visitVariableSet (package:kernel/visitor.dart:139:43)
#10 VariableSet.accept (package:kernel/ast.dart:2200:36)
#11 ExpressionStatement.visitChildren (package:kernel/ast.dart:3604:17)
#12 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#13 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#14 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#15 TreeVisitor.visitExpressionStatement (package:kernel/visitor.dart:188:7)
#16 ExpressionStatement.accept (package:kernel/ast.dart:3600:35)
#17 visitList (package:kernel/ast.dart:5539:14)
#18 Block.visitChildren (package:kernel/ast.dart:3632:5)
#19 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#20 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#21 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#22 TreeVisitor.visitBlock (package:kernel/visitor.dart:189:31)
#23 Block.accept (package:kernel/ast.dart:3628:35)
#24 LabeledStatement.visitChildren (package:kernel/ast.dart:3735:11)
#25 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#26 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#27 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#28 TreeVisitor.visitLabeledStatement (package:kernel/visitor.dart:193:53)
#29 LabeledStatement.accept (package:kernel/ast.dart:3731:35)
#30 visitList (package:kernel/ast.dart:5539:14)
#31 Block.visitChildren (package:kernel/ast.dart:3632:5)
#32 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#33 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#34 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#35 TreeVisitor.visitBlock (package:kernel/visitor.dart:189:31)
#36 Block.accept (package:kernel/ast.dart:3628:35)
#37 TryCatch.visitChildren (package:kernel/ast.dart:4078:11)
#38 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#39 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#40 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#41 TreeVisitor.visitTryCatch (package:kernel/visitor.dart:204:37)
#42 TryCatch.accept (package:kernel/ast.dart:4074:35)
#43 FunctionNode.visitChildren (package:kernel/ast.dart:2033:11)
#44 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#45 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#46 TreeVisitor.visitFunctionNode (package:kernel/visitor.dart:242:45)
#47 FunctionNode.accept (package:kernel/ast.dart:2026:30)
#48 FunctionDeclaration.visitChildren (package:kernel/ast.dart:4374:15)
#49 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#50 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#51 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#52 TreeVisitor.visitFunctionDeclaration (package:kernel/visitor.dart:210:7)
#53 FunctionDeclaration.accept (package:kernel/ast.dart:4369:35)
#54 visitList (package:kernel/ast.dart:5539:14)
#55 Block.visitChildren (package:kernel/ast.dart:3632:5)
#56 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#57 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#58 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#59 TreeVisitor.visitBlock (package:kernel/visitor.dart:189:31)
#60 Block.accept (package:kernel/ast.dart:3628:35)
#61 FunctionNode.visitChildren (package:kernel/ast.dart:2033:11)
#62 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#63 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#64 TreeVisitor.visitFunctionNode (package:kernel/visitor.dart:242:45)
#65 FunctionNode.accept (package:kernel/ast.dart:2026:30)
#66 Procedure.visitChildren (package:kernel/ast.dart:1695:15)
#67 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#68 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#69 TreeVisitor.defaultMember (package:kernel/visitor.dart:213:35)
#70 TreeVisitor.visitProcedure (package:kernel/visitor.dart:215:39)
#71 AnnotateWithStaticTypes.visitProcedure (package:vm/transformations/call_site_annotator.dart:46:11)
#72 Procedure.accept (package:kernel/ast.dart:1688:32)
#73 visitList (package:kernel/ast.dart:5539:14)
#74 Class.visitChildren (package:kernel/ast.dart:969:5)
#75 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#76 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#77 TreeVisitor.visitClass (package:kernel/visitor.dart:222:31)
#78 Class.accept (package:kernel/ast.dart:921:30)
#79 visitList (package:kernel/ast.dart:5539:14)
#80 Library.visitChildren (package:kernel/ast.dart:416:5)
#81 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#82 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#83 TreeVisitor.visitLibrary (package:kernel/visitor.dart:236:35)
#84 List.forEach (dart:core/runtime/libgrowable_array.dart:278:8)
#85 transformLibraries (package:vm/transformations/call_site_annotator.dart:29:13)
#86 VmTarget.performModularTransformationsOnLibraries (package:vm/target/vm.dart:72:5)
#87 KernelTarget.runBuildTransformations (package:front_end/src/fasta/kernel/kernel_target.dart:782:19)
#88 KernelTarget.buildComponent.<anonymous closure> (package:front_end/src/fasta/kernel/kernel_target.dart:301:11)
<asynchronous suspension>
#89 withCrashReporting (package:front_end/src/fasta/deprecated_problems.dart:69:24)
<asynchronous suspension>
#90 KernelTarget.buildComponent (package:front_end/src/fasta/kernel/kernel_target.dart:291:12)
<asynchronous suspension>
#91 generateKernelInternal.<anonymous closure> (package:front_end/src/kernel_generator_impl.dart:150:42)
<asynchronous suspension>
#92 withCrashReporting (package:front_end/src/fasta/deprecated_problems.dart:69:24)
<asynchronous suspension>
#93 generateKernelInternal (package:front_end/src/kernel_generator_impl.dart:57:10)
<asynchronous suspension>
#94 generateKernel.<anonymous closure> (package:front_end/src/kernel_generator_impl.dart:42:18)
<asynchronous suspension>
#95 CompilerContext.runWithOptions.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:131:20)
<asynchronous suspension>
#96 CompilerContext.runInContext.<anonymous closure>.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:120:46)
#97 new Future.sync (dart:async/future.dart:224:31)
#98 CompilerContext.runInContext.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:120:19)
#99 _rootRun (dart:async/zone.dart:1124:13)
#100 _CustomZone.run (dart:async/zone.dart:1021:19)
#101 _runZoned (dart:async/zone.dart:1516:10)
#102 runZoned (dart:async/zone.dart:1463:12)
#103 CompilerContext.runInContext (package:front_end/src/fasta/compiler_context.dart:119:12)
#104 CompilerContext.runWithOptions (package:front_end/src/fasta/compiler_context.dart:129:10)
#105 generateKernel (package:front_end/src/kernel_generator_impl.dart:41:32)
<asynchronous suspension>
#106 kernelForComponent (package:front_end/src/api_prototype/kernel_generator.dart:83:17)
<asynchronous suspension>
#107 SingleShotCompilerWrapper.compileInternal (file:///usr/local/google/home/alexmarkov/work/dart/sdk/pkg/vm/bin/kernel_service.dart:186:11)
<asynchronous suspension>
#108 Compiler.compile.<anonymous closure> (file:///usr/local/google/home/alexmarkov/work/dart/sdk/pkg/vm/bin/kernel_service.dart:134:39)
#109 new Future.<anonymous closure> (dart:async/future.dart:176:37)
#110 _rootRun (dart:async/zone.dart:1120:38)
#111 _CustomZone.run (dart:async/zone.dart:1021:19)
#112 _CustomZone.runGuarded (dart:async/zone.dart:923:7)
#113 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:963:23)
#114 _rootRun (dart:async/zone.dart:1124:13)
#115 _CustomZone.run (dart:async/zone.dart:1021:19)
#116 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:947:23)
#117 Timer._createTimer.<anonymous closure> (dart:async/runtime/libtimer_patch.dart:21:15)
#118 _Timer._runTimers (dart:isolate/runtime/libtimer_impl.dart:382:19)
#119 _Timer._handleMessage (dart:isolate/runtime/libtimer_impl.dart:416:5)
#120 _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12)
#0 TypeEnvironment.typeError (package:kernel/type_environment.dart:103:7)
#1 Expression.getStaticTypeAsInstanceOf (package:kernel/ast.dart:2135:11)
#2 MethodInvocation.getStaticType (package:kernel/ast.dart:2744:35)
#3 AnnotateWithStaticTypes.visitMethodInvocation (package:vm/transformations/call_site_annotator.dart:76:39)
#4 MethodInvocation.accept (package:kernel/ast.dart:2773:36)
#5 VariableSet.visitChildren (package:kernel/ast.dart:2204:12)
#6 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#7 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#8 TreeVisitor.defaultExpression (package:kernel/visitor.dart:135:43)
#9 TreeVisitor.visitVariableSet (package:kernel/visitor.dart:139:43)
#10 VariableSet.accept (package:kernel/ast.dart:2200:36)
#11 ExpressionStatement.visitChildren (package:kernel/ast.dart:3604:17)
#12 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#13 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#14 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#15 TreeVisitor.visitExpressionStatement (package:kernel/visitor.dart:188:7)
#16 ExpressionStatement.accept (package:kernel/ast.dart:3600:35)
#17 visitList (package:kernel/ast.dart:5539:14)
#18 Block.visitChildren (package:kernel/ast.dart:3632:5)
#19 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#20 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#21 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#22 TreeVisitor.visitBlock (package:kernel/visitor.dart:189:31)
#23 Block.accept (package:kernel/ast.dart:3628:35)
#24 LabeledStatement.visitChildren (package:kernel/ast.dart:3735:11)
#25 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#26 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#27 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#28 TreeVisitor.visitLabeledStatement (package:kernel/visitor.dart:193:53)
#29 LabeledStatement.accept (package:kernel/ast.dart:3731:35)
#30 visitList (package:kernel/ast.dart:5539:14)
#31 Block.visitChildren (package:kernel/ast.dart:3632:5)
#32 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#33 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#34 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#35 TreeVisitor.visitBlock (package:kernel/visitor.dart:189:31)
#36 Block.accept (package:kernel/ast.dart:3628:35)
#37 TryCatch.visitChildren (package:kernel/ast.dart:4078:11)
#38 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#39 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#40 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#41 TreeVisitor.visitTryCatch (package:kernel/visitor.dart:204:37)
#42 TryCatch.accept (package:kernel/ast.dart:4074:35)
#43 FunctionNode.visitChildren (package:kernel/ast.dart:2033:11)
#44 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#45 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#46 TreeVisitor.visitFunctionNode (package:kernel/visitor.dart:242:45)
#47 FunctionNode.accept (package:kernel/ast.dart:2026:30)
#48 FunctionDeclaration.visitChildren (package:kernel/ast.dart:4374:15)
#49 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#50 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#51 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#52 TreeVisitor.visitFunctionDeclaration (package:kernel/visitor.dart:210:7)
#53 FunctionDeclaration.accept (package:kernel/ast.dart:4369:35)
#54 visitList (package:kernel/ast.dart:5539:14)
#55 Block.visitChildren (package:kernel/ast.dart:3632:5)
#56 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#57 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#58 TreeVisitor.defaultStatement (package:kernel/visitor.dart:186:41)
#59 TreeVisitor.visitBlock (package:kernel/visitor.dart:189:31)
#60 Block.accept (package:kernel/ast.dart:3628:35)
#61 FunctionNode.visitChildren (package:kernel/ast.dart:2033:11)
#62 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#63 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#64 TreeVisitor.visitFunctionNode (package:kernel/visitor.dart:242:45)
#65 FunctionNode.accept (package:kernel/ast.dart:2026:30)
#66 Procedure.visitChildren (package:kernel/ast.dart:1695:15)
#67 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#68 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#69 TreeVisitor.defaultMember (package:kernel/visitor.dart:213:35)
#70 TreeVisitor.visitProcedure (package:kernel/visitor.dart:215:39)
#71 AnnotateWithStaticTypes.visitProcedure (package:vm/transformations/call_site_annotator.dart:46:11)
#72 Procedure.accept (package:kernel/ast.dart:1688:32)
#73 visitList (package:kernel/ast.dart:5539:14)
#74 Class.visitChildren (package:kernel/ast.dart:969:5)
#75 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#76 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#77 TreeVisitor.visitClass (package:kernel/visitor.dart:222:31)
#78 Class.accept (package:kernel/ast.dart:921:30)
#79 visitList (package:kernel/ast.dart:5539:14)
#80 Library.visitChildren (package:kernel/ast.dart:416:5)
#81 RecursiveVisitor.defaultNode (package:kernel/visitor.dart:385:10)
#82 Visitor.defaultTreeNode (package:kernel/visitor.dart:305:39)
#83 TreeVisitor.visitLibrary (package:kernel/visitor.dart:236:35)
#84 List.forEach (dart:core/runtime/libgrowable_array.dart:278:8)
#85 transformLibraries (package:vm/transformations/call_site_annotator.dart:29:13)
#86 VmTarget.performModularTransformationsOnLibraries (package:vm/target/vm.dart:72:5)
#87 KernelTarget.runBuildTransformations (package:front_end/src/fasta/kernel/kernel_target.dart:782:19)
#88 KernelTarget.buildComponent.<anonymous closure> (package:front_end/src/fasta/kernel/kernel_target.dart:301:11)
<asynchronous suspension>
#89 withCrashReporting (package:front_end/src/fasta/deprecated_problems.dart:69:24)
<asynchronous suspension>
#90 KernelTarget.buildComponent (package:front_end/src/fasta/kernel/kernel_target.dart:291:12)
<asynchronous suspension>
#91 generateKernelInternal.<anonymous closure> (package:front_end/src/kernel_generator_impl.dart:150:42)
<asynchronous suspension>
#92 withCrashReporting (package:front_end/src/fasta/deprecated_problems.dart:69:24)
<asynchronous suspension>
#93 generateKernelInternal (package:front_end/src/kernel_generator_impl.dart:57:10)
<asynchronous suspension>
#94 generateKernel.<anonymous closure> (package:front_end/src/kernel_generator_impl.dart:42:18)
<asynchronous suspension>
#95 CompilerContext.runWithOptions.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:131:20)
<asynchronous suspension>
#96 CompilerContext.runInContext.<anonymous closure>.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:120:46)
#97 new Future.sync (dart:async/future.dart:224:31)
#98 CompilerContext.runInContext.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:120:19)
#99 _rootRun (dart:async/zone.dart:1124:13)
#100 _CustomZone.run (dart:async/zone.dart:1021:19)
#101 _runZoned (dart:async/zone.dart:1516:10)
#102 runZoned (dart:async/zone.dart:1463:12)
#103 CompilerContext.runInContext (package:front_end/src/fasta/compiler_context.dart:119:12)
#104 CompilerContext.runWithOptions (package:front_end/src/fasta/compiler_context.dart:129:10)
#105 generateKernel (package:front_end/src/kernel_generator_impl.dart:41:32)
<asynchronous suspension>
#106 kernelForComponent (package:front_end/src/api_prototype/kernel_generator.dart:83:17)
<asynchronous suspension>
#107 SingleShotCompilerWrapper.compileInternal (file:///usr/local/google/home/alexmarkov/work/dart/sdk/pkg/vm/bin/kernel_service.dart:186:11)
<asynchronous suspension>
#108 Compiler.compile.<anonymous closure> (file:///usr/local/google/home/alexmarkov/work/dart/sdk/pkg/vm/bin/kernel_service.dart:134:39)
#109 new Future.<anonymous closure> (dart:async/future.dart:176:37)
#110 _rootRun (dart:async/zone.dart:1120:38)
#111 _CustomZone.run (dart:async/zone.dart:1021:19)
#112 _CustomZone.runGuarded (dart:async/zone.dart:923:7)
#113 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:963:23)
#114 _rootRun (dart:async/zone.dart:1124:13)
#115 _CustomZone.run (dart:async/zone.dart:1021:19)
#116 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:947:23)
#117 Timer._createTimer.<anonymous closure> (dart:async/runtime/libtimer_patch.dart:21:15)
#118 _Timer._runTimers (dart:isolate/runtime/libtimer_impl.dart:382:19)
#119 _Timer._handleMessage (dart:isolate/runtime/libtimer_impl.dart:416:5)
#120 _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12)
It looks like async transformer produces kernel AST which is not strongly typed.
Then, call_site_annotator queries static type of a receiver which triggers the crash.
Metadata
Metadata
Assignees
Labels
P0A serious issue requiring immediate resolutionA serious issue requiring immediate resolutionfront-end-kernellegacy-area-front-endLegacy: Use area-dart-model instead.Legacy: Use area-dart-model instead.type-bugIncorrect behavior (everything from a crash to more subtle misbehavior)Incorrect behavior (everything from a crash to more subtle misbehavior)