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