Implement stubs for the remaining converted generators
Change-Id: If62d12fb3e916e9f5f8dc3366e2ee5d206a4ba21
Reviewed-on: https://dart-review.googlesource.com/58004
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
diff --git a/pkg/analyzer/lib/src/fasta/analyzer_expression_generator.dart b/pkg/analyzer/lib/src/fasta/analyzer_expression_generator.dart
index c3dbc54..f37feab 100644
--- a/pkg/analyzer/lib/src/fasta/analyzer_expression_generator.dart
+++ b/pkg/analyzer/lib/src/fasta/analyzer_expression_generator.dart
@@ -9,7 +9,26 @@
import 'package:front_end/src/fasta/kernel/expression_generator_helper.dart';
import 'package:front_end/src/fasta/kernel/forest.dart' as fasta;
import 'package:front_end/src/scanner/token.dart';
-import 'package:kernel/ast.dart' show DartType, Initializer, Name, Procedure;
+import 'package:kernel/ast.dart' as kernel
+ show DartType, Initializer, Member, Name, Procedure;
+
+class AnalyzerDeferredAccessGenerator extends AnalyzerExpressionGenerator
+ with fasta.DeferredAccessGenerator<Expression, Statement, Arguments> {
+ final Token token;
+ final fasta.PrefixBuilder builder;
+ final fasta.Generator<Expression, Statement, Arguments> generator;
+
+ AnalyzerDeferredAccessGenerator(
+ ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
+ AstFactory astFactory,
+ this.token,
+ this.builder,
+ this.generator)
+ : super(helper, astFactory);
+
+ @override
+ Expression buildSimpleRead() => generator.buildSimpleRead();
+}
abstract class AnalyzerExpressionGenerator
implements fasta.Generator<Expression, Statement, Arguments> {
@@ -49,17 +68,18 @@
}
@override
- Expression buildCompoundAssignment(Name binaryOperator, Expression value,
+ Expression buildCompoundAssignment(
+ kernel.Name binaryOperator, Expression value,
{int offset,
bool voidContext,
- Procedure interfaceTarget,
+ kernel.Procedure interfaceTarget,
bool isPreIncDec}) {
// TODO(brianwilkerson) Figure out how to get the token for the operator.
return astFactory.assignmentExpression(buildSimpleRead(), null, value);
}
@override
- Initializer buildFieldInitializer(Map<String, int> initializedFields) {
+ kernel.Initializer buildFieldInitializer(Map<String, int> initializedFields) {
// TODO: implement buildFieldInitializer
throw new UnimplementedError();
}
@@ -70,7 +90,7 @@
@override
Expression buildNullAwareAssignment(
- Expression value, DartType type, int offset,
+ Expression value, kernel.DartType type, int offset,
{bool voidContext}) {
// TODO(brianwilkerson) Figure out how to get the token for the operator.
// TODO(brianwilkerson) Capture the type information?
@@ -78,15 +98,15 @@
}
@override
- Expression buildPostfixIncrement(Name binaryOperator,
- {int offset, bool voidContext, Procedure interfaceTarget}) {
+ Expression buildPostfixIncrement(kernel.Name binaryOperator,
+ {int offset, bool voidContext, kernel.Procedure interfaceTarget}) {
// TODO(brianwilkerson) Figure out how to get the token for the operator.
return astFactory.postfixExpression(buildSimpleRead(), null);
}
@override
- Expression buildPrefixIncrement(Name binaryOperator,
- {int offset, bool voidContext, Procedure interfaceTarget}) {
+ Expression buildPrefixIncrement(kernel.Name binaryOperator,
+ {int offset, bool voidContext, kernel.Procedure interfaceTarget}) {
// TODO(brianwilkerson) Figure out how to get the token for the operator.
return astFactory.prefixExpression(null, buildSimpleRead());
}
@@ -113,7 +133,7 @@
}
@override
- DartType buildTypeWithBuiltArguments(List<DartType> arguments,
+ kernel.DartType buildTypeWithBuiltArguments(List<kernel.DartType> arguments,
{bool nonInstanceAccessIsError: false}) {
// TODO: implement buildTypeWithBuiltArguments
throw new UnimplementedError();
@@ -183,6 +203,39 @@
target, leftBracket, index, rightBracket);
}
+class AnalyzerLargeIntAccessGenerator extends AnalyzerExpressionGenerator
+ with fasta.LargeIntAccessGenerator<Expression, Statement, Arguments> {
+ final Token token;
+
+ AnalyzerLargeIntAccessGenerator(
+ ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
+ AstFactory astFactory,
+ this.token)
+ : super(helper, astFactory);
+
+ @override
+ Expression buildSimpleRead() => astFactory.integerLiteral(token, null);
+}
+
+class AnalyzerLoadLibraryGenerator extends AnalyzerExpressionGenerator
+ with fasta.LoadLibraryGenerator<Expression, Statement, Arguments> {
+ final Token token;
+ final fasta.LoadLibraryBuilder builder;
+
+ AnalyzerLoadLibraryGenerator(
+ ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
+ AstFactory astFactory,
+ this.token,
+ this.builder)
+ : super(helper, astFactory);
+
+ @override
+ Expression buildSimpleRead() {
+ // TODO: implement buildSimpleRead
+ throw new UnimplementedError();
+ }
+}
+
class AnalyzerNullAwarePropertyAccessGenerator
extends AnalyzerExpressionGenerator
with
@@ -208,6 +261,111 @@
astFactory.propertyAccess(target, operator, propertyName);
}
+class AnalyzerPropertyAccessGenerator extends AnalyzerExpressionGenerator
+ with fasta.PropertyAccessGenerator<Expression, Statement, Arguments> {
+ final Token token;
+ final Expression receiver;
+ final kernel.Name name;
+ final kernel.Member getter;
+ final kernel.Member setter;
+
+ AnalyzerPropertyAccessGenerator(
+ ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
+ AstFactory astFactory,
+ this.token,
+ this.receiver,
+ this.name,
+ this.getter,
+ this.setter)
+ : super(helper, astFactory);
+
+ @override
+ // TODO(brianwilkerson) Figure out how to get the property name token (or node).
+ Expression buildSimpleRead() =>
+ astFactory.propertyAccess(receiver, token, null);
+}
+
+class AnalyzerReadOnlyAccessGenerator extends AnalyzerExpressionGenerator
+ with fasta.ReadOnlyAccessGenerator<Expression, Statement, Arguments> {
+ final Token token;
+ final Expression expression;
+ final String plainNameForRead;
+
+ AnalyzerReadOnlyAccessGenerator(
+ ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
+ AstFactory astFactory,
+ this.token,
+ this.expression,
+ this.plainNameForRead)
+ : super(helper, astFactory);
+
+ @override
+ Expression buildSimpleRead() {
+ // TODO: implement buildSimpleRead
+ throw new UnimplementedError();
+ }
+}
+
+class AnalyzerStaticAccessGenerator extends AnalyzerExpressionGenerator
+ with fasta.StaticAccessGenerator<Expression, Statement, Arguments> {
+ final Token token;
+ final kernel.Member getter;
+ final kernel.Member setter;
+
+ AnalyzerStaticAccessGenerator(
+ ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
+ AstFactory astFactory,
+ this.token,
+ this.getter,
+ this.setter)
+ : super(helper, astFactory);
+
+ @override
+ kernel.Member get readTarget {
+ // TODO: implement readTarget
+ throw new UnimplementedError();
+ }
+
+ @override
+ Expression buildSimpleRead() {
+ // TODO: implement buildSimpleRead
+ throw new UnimplementedError();
+ }
+}
+
+class AnalyzerSuperIndexedAccessGenerator extends AnalyzerExpressionGenerator
+ with fasta.SuperIndexedAccessGenerator<Expression, Statement, Arguments> {
+ /// The expression computing the object on which the index operation will be
+ /// invoked.
+ final Expression target;
+
+ /// The left bracket.
+ final Token leftBracket;
+
+ /// The expression computing the argument for the index operation.
+ final Expression index;
+
+ /// The right bracket.
+ final Token rightBracket;
+
+ /// Initialize a newly created generator to have the given helper.
+ AnalyzerSuperIndexedAccessGenerator(
+ ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
+ AstFactory astFactory,
+ this.target,
+ this.leftBracket,
+ this.index,
+ this.rightBracket)
+ : super(helper, astFactory);
+
+ @override
+ Token get token => leftBracket;
+
+ @override
+ Expression buildSimpleRead() => astFactory.indexExpressionForTarget(
+ target, leftBracket, index, rightBracket);
+}
+
class AnalyzerSuperPropertyAccessGenerator extends AnalyzerExpressionGenerator
with fasta.SuperPropertyAccessGenerator<Expression, Statement, Arguments> {
/// The `super` keyword.
@@ -235,6 +393,86 @@
astFactory.superExpression(superKeyword), operator, propertyName);
}
+class AnalyzerThisIndexedAccessGenerator extends AnalyzerExpressionGenerator
+ with fasta.ThisIndexedAccessGenerator<Expression, Statement, Arguments> {
+ /// The expression computing the object on which the index operation will be
+ /// invoked.
+ final Expression target;
+
+ /// The left bracket.
+ final Token leftBracket;
+
+ /// The expression computing the argument for the index operation.
+ final Expression index;
+
+ /// The right bracket.
+ final Token rightBracket;
+
+ /// Initialize a newly created generator to have the given helper.
+ AnalyzerThisIndexedAccessGenerator(
+ ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
+ AstFactory astFactory,
+ this.target,
+ this.leftBracket,
+ this.index,
+ this.rightBracket)
+ : super(helper, astFactory);
+
+ @override
+ Token get token => leftBracket;
+
+ @override
+ Expression buildSimpleRead() => astFactory.indexExpressionForTarget(
+ target, leftBracket, index, rightBracket);
+}
+
+class AnalyzerThisPropertyAccessGenerator extends AnalyzerExpressionGenerator
+ with fasta.ThisPropertyAccessGenerator<Expression, Statement, Arguments> {
+ final Token token;
+ final kernel.Name name;
+ final kernel.Member getter;
+ final kernel.Member setter;
+
+ AnalyzerThisPropertyAccessGenerator(
+ ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
+ AstFactory astFactory,
+ this.token,
+ this.name,
+ this.getter,
+ this.setter)
+ : super(helper, astFactory);
+
+ @override
+ // TODO(brianwilkerson) Figure out how to get the token (or node) for `this`.
+ // TODO(brianwilkerson) Figure out how to get the property name token (or node).
+ Expression buildSimpleRead() => astFactory.propertyAccess(null, token, null);
+}
+
+class AnalyzerTypeUseGenerator extends AnalyzerExpressionGenerator
+ with fasta.TypeUseGenerator<Expression, Statement, Arguments> {
+ final Token token;
+ final fasta.PrefixBuilder prefix;
+ final int declarationReferenceOffset;
+ final fasta.TypeDeclarationBuilder declaration;
+ final String plainNameForRead;
+
+ AnalyzerTypeUseGenerator(
+ ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
+ AstFactory astFactory,
+ this.token,
+ this.prefix,
+ this.declarationReferenceOffset,
+ this.declaration,
+ this.plainNameForRead)
+ : super(helper, astFactory);
+
+ @override
+ Expression buildSimpleRead() {
+ // TODO: implement buildSimpleRead
+ throw new UnimplementedError();
+ }
+}
+
class AnalyzerUnlinkedNameGenerator extends AnalyzerExpressionGenerator
with fasta.UnlinkedGenerator<Expression, Statement, Arguments> {
@override
@@ -262,7 +500,7 @@
final Token token;
@override
- final Name name;
+ final kernel.Name name;
AnalyzerUnresolvedNameGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, dynamic> helper,
diff --git a/pkg/analyzer/lib/src/fasta/ast_building_factory.dart b/pkg/analyzer/lib/src/fasta/ast_building_factory.dart
index 9ea0e70..4534573 100644
--- a/pkg/analyzer/lib/src/fasta/ast_building_factory.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_building_factory.dart
@@ -181,8 +181,8 @@
Token token,
PrefixBuilder builder,
Generator<Expression, Statement, Arguments> generator) {
- // TODO(brianwilkerson) Implement this.
- throw new UnimplementedError();
+ return new AnalyzerDeferredAccessGenerator(
+ helper, astFactory, token, builder, generator);
}
@override
@@ -333,8 +333,7 @@
Generator<Expression, Statement, Arguments> largeIntAccessGenerator(
ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
Token token) {
- // TODO(brianwilkerson) Implement this.
- throw new UnimplementedError();
+ return new AnalyzerLargeIntAccessGenerator(helper, astFactory, token);
}
@override
@@ -426,8 +425,7 @@
ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
Token token,
LoadLibraryBuilder builder) {
- // TODO(brianwilkerson) Implement this.
- throw new UnimplementedError();
+ return new AnalyzerLoadLibraryGenerator(helper, astFactory, token, builder);
}
@override
@@ -474,8 +472,8 @@
kernel.Name name,
kernel.Member getter,
kernel.Member setter) {
- // TODO(brianwilkerson) Implement this.
- throw new UnimplementedError();
+ return new AnalyzerPropertyAccessGenerator(
+ helper, astFactory, token, receiver, name, getter, setter);
}
@override
@@ -487,8 +485,8 @@
Token token,
Expression expression,
String plainNameForRead) {
- // TODO(brianwilkerson) Implement this.
- throw new UnimplementedError();
+ return new AnalyzerReadOnlyAccessGenerator(
+ helper, astFactory, token, expression, plainNameForRead);
}
@override
@@ -527,8 +525,8 @@
Token token,
kernel.Member getter,
kernel.Member setter) {
- // TODO(brianwilkerson) Implement this.
- throw new UnimplementedError();
+ return new AnalyzerStaticAccessGenerator(
+ helper, astFactory, token, getter, setter);
}
@override
@@ -543,8 +541,9 @@
Expression index,
kernel.Member getter,
kernel.Member setter) {
- // TODO(brianwilkerson) Implement this.
- throw new UnimplementedError();
+ // TODO(brianwilkerson) Figure out how to get the token for `super`.
+ return new AnalyzerIndexedAccessGenerator(
+ helper, astFactory, null, token, index, token.endGroup);
}
@override
@@ -554,6 +553,7 @@
kernel.Name name,
kernel.Member getter,
kernel.Member setter) {
+ // TODO(brianwilkerson) Figure out how to get the token for the name.
return new AnalyzerSuperPropertyAccessGenerator(
helper, astFactory, null, null, null /*name*/);
}
@@ -572,8 +572,9 @@
Expression index,
kernel.Procedure getter,
kernel.Procedure setter) {
- // TODO(brianwilkerson) Implement this.
- throw new UnimplementedError();
+ // TODO(brianwilkerson) Figure out how to get the token for `this`.
+ return new AnalyzerIndexedAccessGenerator(
+ helper, astFactory, null, token, index, token.endGroup);
}
@override
@@ -583,8 +584,9 @@
kernel.Name name,
kernel.Member getter,
kernel.Member setter) {
- // TODO(brianwilkerson) Implement this.
- throw new UnimplementedError();
+ // TODO(brianwilkerson) Figure out how to get the token for the name.
+ return new AnalyzerThisPropertyAccessGenerator(
+ helper, astFactory, location, name, getter, setter);
}
@override
@@ -609,8 +611,8 @@
int declarationReferenceOffset,
TypeDeclarationBuilder declaration,
String plainNameForRead) {
- // TODO(brianwilkerson) Implement this.
- throw new UnimplementedError();
+ return new AnalyzerTypeUseGenerator(helper, astFactory, token, prefix,
+ declarationReferenceOffset, declaration, plainNameForRead);
}
@override