Initial implementations of two generators

Change-Id: Ib751abe9920d0f8b07b4395b47a60ed99ab80493
Reviewed-on: https://dart-review.googlesource.com/60322
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Brian Wilkerson 2018-06-14 23:45:54 +00:00 committed by commit-bot@chromium.org
parent 03bcc495f7
commit 5bf6436bc9
2 changed files with 53 additions and 4 deletions

View file

@ -30,6 +30,55 @@ class AnalyzerDeferredAccessGenerator extends AnalyzerExpressionGenerator
Expression buildSimpleRead() => generator.buildSimpleRead();
}
class AnalyzerDelayedAssignmentGenerator extends AnalyzerExpressionGenerator
with fasta.DelayedAssignment<Expression, Statement, Arguments> {
final Token token;
final fasta.Generator<Expression, Statement, Arguments> generator;
final String assignmentOperator;
final Expression value;
AnalyzerDelayedAssignmentGenerator(
ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
AstFactory astFactory,
this.token,
this.generator,
this.assignmentOperator,
this.value)
: super(helper, astFactory);
@override
Expression buildSimpleRead() => astFactory.assignmentExpression(
generator.buildSimpleRead(), token, value);
@override
Expression doInvocation(int offset, Arguments arguments) => buildSimpleRead();
}
class AnalyzerDelayedPostfixIncrementGenerator
extends AnalyzerExpressionGenerator
with fasta.DelayedPostfixIncrement<Expression, Statement, Arguments> {
final Token token;
final fasta.Generator<Expression, Statement, Arguments> generator;
final kernel.Name binaryOperator;
final kernel.Procedure interfaceTarget;
AnalyzerDelayedPostfixIncrementGenerator(
ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
AstFactory astFactory,
this.token,
this.generator,
this.binaryOperator,
this.interfaceTarget)
: super(helper, astFactory);
@override
Expression buildSimpleRead() =>
astFactory.postfixExpression(generator.buildSimpleRead(), token);
@override
Expression doInvocation(int offset, Arguments arguments) => buildSimpleRead();
}
abstract class AnalyzerExpressionGenerator
implements fasta.Generator<Expression, Statement, Arguments> {
final ExpressionGeneratorHelper<Expression, Statement, Arguments> helper;

View file

@ -192,8 +192,8 @@ class AstBuildingForest
Generator<Expression, Statement, Arguments> generator,
Expression value,
String assignmentOperator) {
// TODO(brianwilkerson) Implement this.
throw new UnimplementedError();
return new AnalyzerDelayedAssignmentGenerator(
helper, astFactory, token, generator, assignmentOperator, value);
}
@override
@ -203,8 +203,8 @@ class AstBuildingForest
Generator<Expression, Statement, Arguments> generator,
kernel.Name binaryOperator,
kernel.Procedure interfaceTarget) {
// TODO(brianwilkerson) Implement this.
throw new UnimplementedError();
return new AnalyzerDelayedPostfixIncrementGenerator(
helper, astFactory, token, generator, binaryOperator, interfaceTarget);
}
@override