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

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

Issue 2716043003: Support for the 'covariant' keyword for formal parameters. (Closed)
Patch Set: 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
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 51e088fd184912e17b64f9fad1ed52c7fefbc1cc..9b0802ce14b5697037edd348a24bd57a2a6d6c51 100644
--- a/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
+++ b/pkg/front_end/lib/src/fasta/analyzer/ast_builder.dart
@@ -500,19 +500,22 @@ class AstBuilder extends ScopeListener {
push(NullValue.ParameterDefaultValue);
}
- void endFormalParameter(Token thisKeyword, FormalParameterType kind) {
+ void endFormalParameter(
+ Token covariantKeyword, Token thisKeyword, FormalParameterType kind) {
debugEvent("FormalParameter");
_ParameterDefaultValue defaultValue = pop();
SimpleIdentifier name = pop();
TypeName type = pop();
Token keyword = _popOptionalSingleModifier();
pop(); // TODO(paulberry): Metadata.
- // TODO(paulberry): handle covariant keyword.
FormalParameter node;
if (thisKeyword == null) {
- node = ast.simpleFormalParameter(
- null, null, toAnalyzerToken(keyword), type, name);
+ node = ast.simpleFormalParameter2(
+ covariantKeyword: toAnalyzerToken(covariantKeyword),
+ keyword: toAnalyzerToken(keyword),
+ type: type,
+ identifier: name);
} else {
// TODO(scheglov): Ideally the period token should be passed in.
Token period = identical('.', thisKeyword.next?.stringValue)
@@ -520,16 +523,15 @@ class AstBuilder extends ScopeListener {
: null;
TypeParameterList typeParameters; // TODO(scheglov)
FormalParameterList formalParameters; // TODO(scheglov)
- node = ast.fieldFormalParameter(
- null,
- null,
- toAnalyzerToken(keyword),
- type,
- toAnalyzerToken(thisKeyword),
- toAnalyzerToken(period),
- name,
- typeParameters,
- formalParameters);
+ node = ast.fieldFormalParameter2(
+ covariantKeyword: toAnalyzerToken(covariantKeyword),
+ keyword: toAnalyzerToken(keyword),
+ type: type,
+ thisKeyword: toAnalyzerToken(thisKeyword),
+ period: toAnalyzerToken(period),
+ identifier: name,
+ typeParameters: typeParameters,
+ parameters: formalParameters);
}
if (defaultValue != null) {
« no previous file with comments | « pkg/compiler/lib/src/parser/node_listener.dart ('k') | pkg/front_end/lib/src/fasta/kernel/body_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698