Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Unified Diff: pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart

Issue 2716433002: Add support for FieldFormalParameter. (Closed)
Patch Set: Rollback parser changes. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« pkg/front_end/front_end.iml ('K') | « pkg/front_end/front_end.iml ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
diff --git a/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart b/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
index 5e8711a31123b8d5edbd77d0f8edb89f5f9bb513..119629b9addf848b006cf5af34389a3bb14fba81 100644
--- a/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
+++ b/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
@@ -472,16 +472,35 @@ class AstBuilder extends ScopeListener {
void endFormalParameter(Token thisKeyword) {
debugEvent("FormalParameter");
- if (thisKeyword != null) {
- internalError("'this' can't be used here.");
- }
SimpleIdentifier name = pop();
TypeName type = pop();
Token keyword = _popOptionalSingleModifier();
pop(); // TODO(paulberry): Metadata.
// TODO(paulberry): handle covariant keyword.
- SimpleFormalParameter node = ast.simpleFormalParameter(
- null, null, toAnalyzerToken(keyword), type, name);
+
+ FormalParameter node;
+ if (thisKeyword == null) {
+ node = ast.simpleFormalParameter(
+ null, null, toAnalyzerToken(keyword), type, name);
+ } else {
+ // TODO(scheglov): Ideally the period token should be passed in.
+ Token period = identical('.', thisKeyword.next?.stringValue)
+ ? thisKeyword.next
+ : null;
+ TypeParameterList typeParameters; // TODO(scheglov)
+ FormalParameterList formalParameters; // TODO(scheglov)
+ node = ast.fieldFormalParameter(
+ null,
+ null,
+ toAnalyzerToken(keyword),
+ type,
+ toAnalyzerToken(thisKeyword),
+ toAnalyzerToken(period),
+ name,
+ typeParameters,
+ formalParameters);
+ }
+
scope[name.name] = name.staticElement = new AnalyzerParameterElement(node);
push(node);
}
« pkg/front_end/front_end.iml ('K') | « pkg/front_end/front_end.iml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698