Report FieldInitializerOutsideConstructor error in BodyBuilder

Change-Id: I357b6164abc4d47ac558496ed3dbb149550e6f43
Reviewed-on: https://dart-review.googlesource.com/57180
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
This commit is contained in:
Dan Rubel 2018-05-31 11:44:02 +00:00 committed by commit-bot@chromium.org
parent e1ffb22078
commit 796f5301dd
5 changed files with 14 additions and 10 deletions

View file

@ -2245,8 +2245,8 @@ abstract class BodyBuilder<Expression, Statement, Arguments>
debugEvent("FormalParameter");
if (thisKeyword != null) {
if (!inConstructor) {
deprecated_addCompileTimeError(thisKeyword.charOffset,
"'this' parameters can only be used on constructors.");
handleRecoverableError(fasta.messageFieldInitializerOutsideConstructor,
thisKeyword, thisKeyword);
thisKeyword = null;
}
}

View file

@ -4,8 +4,9 @@ import self as self;
static const field dynamic #errors = const <dynamic>["pkg/front_end/testcases/regress/issue_29986.dart:8:13: Error: Expected a function body or '=>'.
Try adding {}.
C(this.name);
^", "pkg/front_end/testcases/regress/issue_29986.dart:8:3: Error: 'this' parameters can only be used on constructors.
^", "pkg/front_end/testcases/regress/issue_29986.dart:8:3: Error: Field formal parameters can only be used in a constructor.
Try removing 'this.'.
C(this.name);
^"]/* from null */;
^^^^"]/* from null */;
static method main() → dynamic {}
static abstract method C(dynamic name) → dynamic;

View file

@ -4,8 +4,9 @@ import self as self;
static const field dynamic #errors = const <dynamic>["pkg/front_end/testcases/regress/issue_29986.dart:8:13: Error: Expected a function body or '=>'.
Try adding {}.
C(this.name);
^", "pkg/front_end/testcases/regress/issue_29986.dart:8:3: Error: 'this' parameters can only be used on constructors.
^", "pkg/front_end/testcases/regress/issue_29986.dart:8:3: Error: Field formal parameters can only be used in a constructor.
Try removing 'this.'.
C(this.name);
^"]/* from null */;
^^^^"]/* from null */;
static method main() → dynamic {}
static abstract method C(dynamic name) → dynamic;

View file

@ -4,8 +4,9 @@ import self as self;
static const field dynamic #errors = const <dynamic>["pkg/front_end/testcases/regress/issue_29986.dart:8:13: Error: Expected a function body or '=>'.
Try adding {}.
C(this.name);
^", "pkg/front_end/testcases/regress/issue_29986.dart:8:3: Error: 'this' parameters can only be used on constructors.
^", "pkg/front_end/testcases/regress/issue_29986.dart:8:3: Error: Field formal parameters can only be used in a constructor.
Try removing 'this.'.
C(this.name);
^"]/* from null */;
^^^^"]/* from null */;
static method main() → dynamic {}
static abstract method C(dynamic name) → dynamic;

View file

@ -4,8 +4,9 @@ import self as self;
static const field dynamic #errors = const <dynamic>["pkg/front_end/testcases/regress/issue_29986.dart:8:13: Error: Expected a function body or '=>'.
Try adding {}.
C(this.name);
^", "pkg/front_end/testcases/regress/issue_29986.dart:8:3: Error: 'this' parameters can only be used on constructors.
^", "pkg/front_end/testcases/regress/issue_29986.dart:8:3: Error: Field formal parameters can only be used in a constructor.
Try removing 'this.'.
C(this.name);
^"]/* from null */;
^^^^"]/* from null */;
static method main() → dynamic {}
static abstract method C(dynamic name) → dynamic;