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

The front end is not happy about wrong constructor declaration #55648

Open
eernstg opened this issue May 6, 2024 · 0 comments
Open

The front end is not happy about wrong constructor declaration #55648

eernstg opened this issue May 6, 2024 · 0 comments
Labels
area-front-end Use area-front-end for front end / CFE / kernel format related issues. cfe-crashes Crashes in the CFE type-bug Incorrect behavior (everything from a crash to more subtle misbehavior)

Comments

@eernstg
Copy link
Member

eernstg commented May 6, 2024

Consider the following declaration:

class _A<X> { const _A(); }

class B<X> {
  const B._(_A _);
  const B<X>(): this._(_A<X>());
}

This program is rejected (rightfully) by the analyzer, but it causes the common front end to incur a dynamic type error.

Stack dump
Crash when compiling file:///usr/local/google/home/eernst/lang/dart/scratch/202405/n012.dart at character offset 74:
type 'Constructor' is not a subtype of type 'GenericDeclaration' in type cast

#0      TypeParameter.declaration (package:kernel/ast.dart:13138:28)
#1      BodyBuilder._validateTypeVariableUseInternal (package:front_end/src/fasta/kernel/body_builder.dart:9262:29)
#2      BodyBuilder.validateTypeVariableUse (package:front_end/src/fasta/kernel/body_builder.dart:9245:5)
#3      BodyBuilder.buildDartType (package:front_end/src/fasta/kernel/body_builder.dart:9490:12)
#4      BodyBuilder.buildDartTypeArguments.<anonymous closure> (package:front_end/src/fasta/kernel/body_builder.dart:9502:20)
#5      new _GrowableList.generate (dart:core-patch/growable_array.dart:136:28)
#6      BodyBuilder.buildDartTypeArguments (package:front_end/src/fasta/kernel/body_builder.dart:9500:16)
#7      BodyBuilder.handleSend (package:front_end/src/fasta/kernel/body_builder.dart:2492:11)
#8      Parser.parseSend (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7637:14)
#9      Parser.parseSendOrFunctionLiteral (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7159:12)
#10     Parser.parsePrimary (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6540:14)
#11     Parser.parseUnaryExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6431:12)
#12     Parser.parsePrecedenceExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5874:13)
#13     Parser.parseExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5814:15)
#14     Parser.parseArgumentsRest (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7740:15)
#15     Parser.parseArguments (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7716:12)
#16     Parser.parseArgumentsOpt (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7697:14)
#17     Parser.parseSend (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7636:13)
#18     Parser.parseSendOrFunctionLiteral (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7144:14)
#19     Parser.parsePrimary (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6540:14)
#20     Parser._parsePrecedenceExpressionLoop (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6005:21)
#21     Parser.parsePrecedenceExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5898:12)
#22     Parser.parseExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5814:15)
#23     Parser.parseInitializerExpressionRest (package:_fe_analyzer_shared/src/parser/parser_impl.dart:4180:13)
#24     Parser.parseInitializer (package:_fe_analyzer_shared/src/parser/parser_impl.dart:4074:17)
#25     Parser.parseInitializers (package:_fe_analyzer_shared/src/parser/parser_impl.dart:3988:15)
#26     Parser.parseInitializersOpt (package:_fe_analyzer_shared/src/parser/parser_impl.dart:3967:14)
#27     DietListener.buildFunctionBody (package:front_end/src/fasta/source/diet_listener.dart:1237:22)
#28     DietListener._endClassMethod (package:front_end/src/fasta/source/diet_listener.dart:791:7)
#29     DietListener.endClassConstructor (package:front_end/src/fasta/source/diet_listener.dart:713:5)
#30     Parser.parseMethod (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5016:20)
#31     Parser.parseClassOrMixinOrExtensionOrEnumMemberImpl (package:_fe_analyzer_shared/src/parser/parser_impl.dart:4756:15)
#32     Parser.parseClassOrMixinOrExtensionBody (package:_fe_analyzer_shared/src/parser/parser_impl.dart:4373:15)
#33     Parser.parseClass (package:_fe_analyzer_shared/src/parser/parser_impl.dart:2712:13)
#34     Parser.parseClassOrNamedMixinApplication (package:_fe_analyzer_shared/src/parser/parser_impl.dart:2670:14)
#35     Parser._handleModifiersForClassDeclaration (package:_fe_analyzer_shared/src/parser/parser_impl.dart:821:12)
#36     Parser.parseTopLevelKeywordDeclaration (package:_fe_analyzer_shared/src/parser/parser_impl.dart:659:14)
#37     Parser.parseTopLevelDeclarationImpl (package:_fe_analyzer_shared/src/parser/parser_impl.dart:532:14)
#38     Parser.parseUnit (package:_fe_analyzer_shared/src/parser/parser_impl.dart:412:15)
#39     SourceLoader.buildBody (package:front_end/src/fasta/source/source_loader.dart:1267:12)
<asynchronous suspension>
#40     SourceLoader.buildBodies (package:front_end/src/fasta/source/source_loader.dart:690:7)
<asynchronous suspension>
#41     KernelTarget.buildComponent.<anonymous closure> (package:front_end/src/fasta/kernel/kernel_target.dart:630:7)
<asynchronous suspension>
#42     withCrashReporting (package:front_end/src/fasta/crash.dart:133:12)
<asynchronous suspension>
#43     KernelTarget.buildComponent (package:front_end/src/fasta/kernel/kernel_target.dart:610:12)
<asynchronous suspension>
#44     _buildInternal (package:front_end/src/kernel_generator_impl.dart:216:19)
<asynchronous suspension>
#45     withCrashReporting (package:front_end/src/fasta/crash.dart:133:12)
<asynchronous suspension>
#46     generateKernel.<anonymous closure> (package:front_end/src/kernel_generator_impl.dart:50:12)
<asynchronous suspension>
#47     CompilerContext.clear (package:front_end/src/fasta/compiler_context.dart:130:3)
<asynchronous suspension>
#48     generateKernel (package:front_end/src/kernel_generator_impl.dart:49:10)
<asynchronous suspension>
#49     kernelForModule (package:front_end/src/api_prototype/kernel_generator.dart:106:11)
<asynchronous suspension>
#50     SingleShotCompilerWrapper.compileInternal (file:///b/f/w/pkg/vm/bin/kernel_service.dart:405:11)
<asynchronous suspension>
#51     Compiler.compile.<anonymous closure> (file:///b/f/w/pkg/vm/bin/kernel_service.dart:216:45)
<asynchronous suspension>
#52     _processLoadRequest (file:///b/f/w/pkg/vm/bin/kernel_service.dart:887:37)
<asynchronous suspension>
@eernstg eernstg added type-bug Incorrect behavior (everything from a crash to more subtle misbehavior) area-front-end Use area-front-end for front end / CFE / kernel format related issues. labels May 6, 2024
@johnniwinther johnniwinther added the cfe-crashes Crashes in the CFE label May 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-front-end Use area-front-end for front end / CFE / kernel format related issues. cfe-crashes Crashes in the CFE type-bug Incorrect behavior (everything from a crash to more subtle misbehavior)
Projects
None yet
Development

No branches or pull requests

2 participants