diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart index 3a2d1db3eca..2bb2bfcaa26 100644 --- a/pkg/analyzer/lib/src/fasta/ast_builder.dart +++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart @@ -4196,6 +4196,7 @@ class AstBuilder extends StackListener { debugEvent("ExpressionFunctionBody"); var expression = pop() as ExpressionImpl; + reportErrorIfSuper(expression); var star = pop() as Token?; var asyncKeyword = pop() as Token?; if (parseFunctionBodies) { diff --git a/pkg/analyzer/test/generated/error_parser_test.dart b/pkg/analyzer/test/generated/error_parser_test.dart index 1e143667379..f95e5cb2a55 100644 --- a/pkg/analyzer/test/generated/error_parser_test.dart +++ b/pkg/analyzer/test/generated/error_parser_test.dart @@ -1865,6 +1865,18 @@ class Wrong { parseExpression("x(y)(z).a++"); } + void test_missingAssignableSelector_superAsExpressionFunctionBody() { + CompilationUnit unit = parseCompilationUnit('main() => super;', errors: [ + error(ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR, 10, 5), + ]); + var declaration = unit.declarations.first as FunctionDeclaration; + var body = declaration.functionExpression.body as ExpressionFunctionBody; + var expression = body.expression; + expect(expression, isSuperExpression); + var superExpression = expression as SuperExpression; + expect(superExpression.superKeyword, isNotNull); + } + void test_missingAssignableSelector_superPrimaryExpression() { CompilationUnit unit = parseCompilationUnit('main() {super;}', errors: [ expectedError(ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR, 8, 5)