analyzer: Report bare 'super' expression as ExpressionFunctionBody

Fixes https://github.com/dart-lang/sdk/issues/55525

Change-Id: Id6e1321d093b4b77f0504748e931db8f460c1b45
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/369122
Auto-Submit: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index 3a2d1db..2bb2bfc 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -4196,6 +4196,7 @@
     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 1e14366..f95e5cb 100644
--- a/pkg/analyzer/test/generated/error_parser_test.dart
+++ b/pkg/analyzer/test/generated/error_parser_test.dart
@@ -1865,6 +1865,18 @@
     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)