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.2k stars 1.57k forks source link

"Exception:: Missing implementation of visitAugmentedExpression" #55514

Open DanTup opened 6 months ago

DanTup commented 6 months ago

I triggered this exception when I used augmented in some code. I believe augmented is still incomplete so this may be known, but raising it just in case:

foo.dart

import augment 'foo_augmentation.dart';

class A {
  String get p => '';
}

foo_augmentation.dart

augment library 'foo.dart';

augment class A {
  augment String get p => augmented + augmented;
}

Generates the following exception:

1713522077839:Ex:Analysis failed:: C::\Dev\Test Projects\augmentation_testing2\lib\foo.dart context:: exception_20240419_112117_837
Exception:: Missing implementation of visitAugmentedExpression
#0      ThrowingAstVisitor._throw (package::analyzer/dart/ast/visitor.dart::2986::5)
#1      ThrowingAstVisitor.visitAugmentedExpression (package::analyzer/dart/ast/visitor.dart::2457::60)
#2      AugmentedExpressionImpl.resolveExpression (package::analyzer/src/dart/ast/ast.dart::1716::14)
#3      ResolverVisitor.dispatchExpression (package::analyzer/src/generated/resolver.dart::724::16)
#4      TypeAnalyzer.analyzeExpression (package::_fe_analyzer_shared/src/type_inference/type_analyzer.dart::540::9)
#5      BinaryExpressionResolver._resolveUserDefinable (package::analyzer/src/dart/resolver/binary_expression_resolver.dart::279::15)
#6      BinaryExpressionResolver.resolve (package::analyzer/src/dart/resolver/binary_expression_resolver.dart::67::7)
#7      ResolverVisitor.visitBinaryExpression (package::analyzer/src/generated/resolver.dart::1843::31)
#8      BinaryExpressionImpl.resolveExpression (package::analyzer/src/dart/ast/ast.dart::1945::14)
#9      ResolverVisitor.dispatchExpression (package::analyzer/src/generated/resolver.dart::724::16)
#10     TypeAnalyzer.analyzeExpression (package::_fe_analyzer_shared/src/type_inference/type_analyzer.dart::540::9)
#11     ResolverVisitor.visitExpressionFunctionBody (package::analyzer/src/generated/resolver.dart::2327::7)
#12     ExpressionFunctionBodyImpl.resolve (package::analyzer/src/dart/ast/ast.dart::5973::16)
#13     ResolverVisitor.visitMethodDeclaration (package::analyzer/src/generated/resolver.dart::2832::17)
#14     MethodDeclarationImpl.accept (package::analyzer/src/dart/ast/ast.dart::11627::50)
#15     NodeListImpl.accept (package::analyzer/src/dart/ast/ast.dart::12525::20)
#16     ClassDeclarationImpl.visitChildren (package::analyzer/src/dart/ast/ast.dart::2948::13)
#17     ResolverVisitor.visitClassDeclaration (package::analyzer/src/generated/resolver.dart::1935::12)
#18     ClassDeclarationImpl.accept (package::analyzer/src/dart/ast/ast.dart::2938::50)
#19     ResolverVisitor.visitCompilationUnit (package::analyzer/src/generated/resolver.dart::1979::23)
#20     CompilationUnitImpl.accept (package::analyzer/src/dart/ast/ast.dart::3629::50)
#21     LibraryAnalyzer._resolveFile (package::analyzer/src/dart/analysis/library_analyzer.dart::897::10)
#22     LibraryAnalyzer._parseAndResolve (package::analyzer/src/dart/analysis/library_analyzer.dart::594::7)
#23     LibraryAnalyzer.analyze (package::analyzer/src/dart/analysis/library_analyzer.dart::105::5)
#24     AnalysisDriver._analyzeFileImpl.<anonymous closure> (package::analyzer/src/dart/analysis/driver.dart::1386::11)

@scheglov fyi

Btw there are a few things I've been holding off doing (like TextMate grammar updates for macros/augmented) waiting for augmented (so I can write valid tests and ensure I understand syntax for things like augmented in setters correctly) so I'd be interested to know when you think that it's far enough that it's worth trying to proceed with them.

sgrekhov commented 5 months ago

There are also Exception: Missing implementation of visitAugmentedInvocation which, I believe, the same issue. For an example see https://github.com/dart-lang/co19/blob/master/LanguageFeatures/Augmentation-libraries/augmenting_functions_A06_t01.dart