Rename remaining generators

Change-Id: I8baf2347aaab8a32eb41518ea8079dc491753af5
Reviewed-on: https://dart-review.googlesource.com/56106
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
This commit is contained in:
Peter von der Ahé 2018-05-22 13:10:42 +00:00 committed by commit-bot@chromium.org
parent 2c9d8924e3
commit 330dcb19da
7 changed files with 189 additions and 135 deletions

View file

@ -1979,7 +1979,7 @@ class AstBuilder extends ScopeListener {
push(prefix);
} else if (prefix is SimpleIdentifier) {
// TODO(paulberry): resolve [identifier]. Note that BodyBuilder handles
// this situation using SendAccessor.
// this situation using SendAccessGenerator.
push(ast.prefixedIdentifier(prefix, period, identifier));
} else {
// TODO(paulberry): implement.

View file

@ -87,25 +87,25 @@ import 'expression_generator.dart'
DeferredAccessGenerator,
ErroneousExpressionGenerator,
Generator,
IncompleteError,
IncompletePropertyAccessor,
IncompleteErrorGenerator,
IncompletePropertyAccessGenerator,
IncompleteSendGenerator,
IndexedAccessGenerator,
LargeIntAccessGenerator,
LoadLibraryGenerator,
ParenthesizedExpression,
ParenthesizedExpressionGenerator,
ReadOnlyAccessGenerator,
SendAccessor,
SendAccessGenerator,
StaticAccessGenerator,
SuperIndexedAccessGenerator,
ThisAccessGenerator,
ThisPropertyAccessGenerator,
TypeDeclarationAccessor,
TypeDeclarationAccessGenerator,
UnresolvedNameGenerator,
VariableUseGenerator,
buildIsNull;
import 'expression_generator_helper.dart' show BuilderHelper;
import 'expression_generator_helper.dart' show ExpressionGeneratorHelper;
import 'redirecting_factory_body.dart'
show
@ -129,7 +129,7 @@ const noLocation = null;
abstract class BodyBuilder<Expression, Statement, Arguments>
extends ScopeListener<JumpTarget>
implements BuilderHelper<Expression, Statement, Arguments> {
implements ExpressionGeneratorHelper<Expression, Statement, Arguments> {
@override
final KernelLibraryBuilder library;
@ -442,7 +442,7 @@ abstract class BodyBuilder<Expression, Statement, Arguments>
Token period = periodBeforeName ?? beginToken.next;
Generator generator = expression;
expression = generator.buildPropertyAccess(
new IncompletePropertyAccessor(
new IncompletePropertyAccessGenerator(
this, period.next, new Name(name, library.library)),
period.next.offset,
false);
@ -904,7 +904,7 @@ abstract class BodyBuilder<Expression, Statement, Arguments>
@override
void handleParenthesizedExpression(Token token) {
debugEvent("ParenthesizedExpression");
push(new ParenthesizedExpression(
push(new ParenthesizedExpressionGenerator(
this, token.endGroup, toKernelExpression(popForValue())));
}
@ -923,9 +923,9 @@ abstract class BodyBuilder<Expression, Statement, Arguments>
if (receiver is Identifier) {
Name name = new Name(receiver.name, library.library);
if (arguments == null) {
push(new IncompletePropertyAccessor(this, beginToken, name));
push(new IncompletePropertyAccessGenerator(this, beginToken, name));
} else {
push(new SendAccessor(this, beginToken, name, arguments));
push(new SendAccessGenerator(this, beginToken, name, arguments));
}
} else if (arguments == null) {
push(receiver);
@ -1365,7 +1365,7 @@ abstract class BodyBuilder<Expression, Statement, Arguments>
classBuilder.origin.findStaticBuilder(name, charOffset, uri, library);
}
if (builder != null && member.isField && builder.isInstanceMember) {
return new IncompleteError(this, token,
return new IncompleteErrorGenerator(this, token,
fasta.templateThisAccessInFieldInitializer.withArguments(name));
}
if (builder == null || (!isInstanceContext && builder.isInstanceMember)) {
@ -1391,8 +1391,9 @@ abstract class BodyBuilder<Expression, Statement, Arguments>
deprecated_addCompileTimeError(
charOffset, "Not a constant expression.");
}
TypeDeclarationAccessor generator = new TypeDeclarationAccessor(
this, token, prefix, charOffset, builder, name);
TypeDeclarationAccessGenerator generator =
new TypeDeclarationAccessGenerator(
this, token, prefix, charOffset, builder, name);
return (prefix?.deferred == true)
? new DeferredAccessGenerator(this, token, prefix, generator)
: generator;
@ -2555,7 +2556,7 @@ abstract class BodyBuilder<Expression, Statement, Arguments>
prefix.exportScope, identifier.name, identifier.token,
isQualified: true, prefix: prefix);
identifier = null;
} else if (prefix is TypeDeclarationAccessor) {
} else if (prefix is TypeDeclarationAccessGenerator) {
type = prefix;
} else if (prefix is Generator) {
String name = suffix == null
@ -2780,8 +2781,8 @@ abstract class BodyBuilder<Expression, Statement, Arguments>
checkOffset = generator.token.charOffset;
}
if (type is TypeDeclarationAccessor) {
TypeDeclarationAccessor generator = type;
if (type is TypeDeclarationAccessGenerator) {
TypeDeclarationAccessGenerator generator = type;
if (generator.prefix != null) {
nameToken = nameToken.next.next;
}
@ -2927,7 +2928,8 @@ abstract class BodyBuilder<Expression, Statement, Arguments>
if (context.isScopeReference && isInstanceContext) {
push(new ThisAccessGenerator(this, token, inInitializer));
} else {
push(new IncompleteError(this, token, fasta.messageThisAsIdentifier));
push(new IncompleteErrorGenerator(
this, token, fasta.messageThisAsIdentifier));
}
}
@ -2939,7 +2941,8 @@ abstract class BodyBuilder<Expression, Statement, Arguments>
member.transformerFlags |= TransformerFlag.superCalls;
push(new ThisAccessGenerator(this, token, inInitializer, isSuper: true));
} else {
push(new IncompleteError(this, token, fasta.messageSuperAsIdentifier));
push(new IncompleteErrorGenerator(
this, token, fasta.messageSuperAsIdentifier));
}
}
@ -3678,7 +3681,7 @@ abstract class BodyBuilder<Expression, Statement, Arguments>
List<Expression> annotations = pop();
KernelTypeVariableBuilder variable;
Object inScope = scopeLookup(scope, name.name, token);
if (inScope is TypeDeclarationAccessor) {
if (inScope is TypeDeclarationAccessGenerator) {
variable = inScope.declaration;
} else {
// Something went wrong when pre-parsing the type variables.
@ -4249,8 +4252,10 @@ class Label {
abstract class ContextAwareGenerator<Arguments> extends Generator<Arguments> {
final Generator generator;
ContextAwareGenerator(BuilderHelper<dynamic, dynamic, Arguments> helper,
Token token, this.generator)
ContextAwareGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.generator)
: super(helper, token);
String get plainNameForRead {
@ -4315,8 +4320,12 @@ class DelayedAssignment<Arguments> extends ContextAwareGenerator<Arguments> {
final String assignmentOperator;
DelayedAssignment(BuilderHelper<dynamic, dynamic, Arguments> helper,
Token token, Generator generator, this.value, this.assignmentOperator)
DelayedAssignment(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
Generator generator,
this.value,
this.assignmentOperator)
: super(helper, token, generator);
String get debugName => "DelayedAssignment";
@ -4405,7 +4414,7 @@ class DelayedPostfixIncrement<Arguments>
final Procedure interfaceTarget;
DelayedPostfixIncrement(
BuilderHelper<dynamic, dynamic, Arguments> helper,
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
Generator generator,
this.binaryOperator,
@ -4619,7 +4628,7 @@ class FormalParameters<Arguments> {
}
Scope computeFormalParameterScope(Scope parent, Builder builder,
BuilderHelper<dynamic, dynamic, Arguments> helper) {
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper) {
if (required.length == 0 && optional == null) return parent;
Map<String, Builder> local = <String, Builder>{};

View file

@ -36,7 +36,7 @@ import 'body_builder.dart' show Identifier, noLocation;
import 'constness.dart' show Constness;
import 'expression_generator_helper.dart' show BuilderHelper;
import 'expression_generator_helper.dart' show ExpressionGeneratorHelper;
import 'forest.dart' show Forest;
@ -107,7 +107,7 @@ import 'kernel_builder.dart'
/// [Generator] object. Later, after `= b` is parsed, [buildAssignment] will
/// be called.
abstract class Generator<Arguments> {
final BuilderHelper<dynamic, dynamic, Arguments> helper;
final ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper;
final Token token;
Generator(this.helper, this.token);
@ -302,7 +302,7 @@ abstract class Generator<Arguments> {
/* kernel.Expression | Generator */ buildPropertyAccess(
IncompleteSendGenerator send, int operatorOffset, bool isNullAware) {
if (send is SendAccessor) {
if (send is SendAccessGenerator) {
return helper.buildMethodInvocation(buildSimpleRead(), send.name,
send.arguments, offsetForToken(send.token),
isNullAware: isNullAware);
@ -362,8 +362,10 @@ class VariableUseGenerator<Arguments> extends Generator<Arguments> {
final DartType promotedType;
VariableUseGenerator(BuilderHelper<dynamic, dynamic, Arguments> helper,
Token token, this.variable,
VariableUseGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.variable,
[this.promotedType])
: super(helper, token);
@ -425,7 +427,7 @@ class PropertyAccessGenerator<Arguments> extends Generator<Arguments> {
VariableDeclaration _receiverVariable;
PropertyAccessGenerator.internal(
BuilderHelper<dynamic, dynamic, Arguments> helper,
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.receiver,
this.name,
@ -434,7 +436,7 @@ class PropertyAccessGenerator<Arguments> extends Generator<Arguments> {
: super(helper, token);
static Generator<Arguments> make<Arguments>(
BuilderHelper<dynamic, dynamic, Arguments> helper,
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
kernel.Expression receiver,
Name name,
@ -529,8 +531,12 @@ class ThisPropertyAccessGenerator<Arguments> extends Generator<Arguments> {
final Member setter;
ThisPropertyAccessGenerator(BuilderHelper<dynamic, dynamic, Arguments> helper,
Token token, this.name, this.getter, this.setter)
ThisPropertyAccessGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.name,
this.getter,
this.setter)
: super(helper, token);
String get plainNameForRead => name.name;
@ -606,7 +612,7 @@ class NullAwarePropertyAccessGenerator<Arguments> extends Generator<Arguments> {
final DartType type;
NullAwarePropertyAccessGenerator(
BuilderHelper<dynamic, dynamic, Arguments> helper,
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.receiverExpression,
this.name,
@ -694,7 +700,7 @@ class SuperPropertyAccessGenerator<Arguments> extends Generator<Arguments> {
final Member setter;
SuperPropertyAccessGenerator(
BuilderHelper<dynamic, dynamic, Arguments> helper,
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.name,
this.getter,
@ -777,7 +783,7 @@ class IndexedAccessGenerator<Arguments> extends Generator<Arguments> {
VariableDeclaration indexVariable;
IndexedAccessGenerator.internal(
BuilderHelper<dynamic, dynamic, Arguments> helper,
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.receiver,
this.index,
@ -786,7 +792,7 @@ class IndexedAccessGenerator<Arguments> extends Generator<Arguments> {
: super(helper, token);
static Generator<Arguments> make<Arguments>(
BuilderHelper<dynamic, dynamic, Arguments> helper,
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
kernel.Expression receiver,
kernel.Expression index,
@ -939,8 +945,12 @@ class ThisIndexedAccessGenerator<Arguments> extends Generator<Arguments> {
VariableDeclaration indexVariable;
ThisIndexedAccessGenerator(BuilderHelper<dynamic, dynamic, Arguments> helper,
Token token, this.index, this.getter, this.setter)
ThisIndexedAccessGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.index,
this.getter,
this.setter)
: super(helper, token);
String get plainNameForRead => "[]";
@ -1059,8 +1069,12 @@ class SuperIndexedAccessGenerator<Arguments> extends Generator<Arguments> {
VariableDeclaration indexVariable;
SuperIndexedAccessGenerator(BuilderHelper<dynamic, dynamic, Arguments> helper,
Token token, this.index, this.getter, this.setter)
SuperIndexedAccessGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.index,
this.getter,
this.setter)
: super(helper, token);
String get plainNameForRead => "[]";
@ -1191,13 +1205,16 @@ class StaticAccessGenerator<Arguments> extends Generator<Arguments> {
final Member writeTarget;
StaticAccessGenerator(BuilderHelper<dynamic, dynamic, Arguments> helper,
Token token, this.readTarget, this.writeTarget)
StaticAccessGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.readTarget,
this.writeTarget)
: assert(readTarget != null || writeTarget != null),
super(helper, token);
factory StaticAccessGenerator.fromBuilder(
BuilderHelper<dynamic, dynamic, Arguments> helper,
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Builder builder,
Token token,
Builder builderSetter) {
@ -1287,8 +1304,10 @@ class StaticAccessGenerator<Arguments> extends Generator<Arguments> {
class LoadLibraryGenerator<Arguments> extends Generator<Arguments> {
final LoadLibraryBuilder builder;
LoadLibraryGenerator(BuilderHelper<dynamic, dynamic, Arguments> helper,
Token token, this.builder)
LoadLibraryGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.builder)
: super(helper, token);
String get plainNameForRead => 'loadLibrary';
@ -1330,8 +1349,11 @@ class DeferredAccessGenerator<Arguments> extends Generator<Arguments> {
final Generator generator;
DeferredAccessGenerator(BuilderHelper<dynamic, dynamic, Arguments> helper,
Token token, this.builder, this.generator)
DeferredAccessGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.builder,
this.generator)
: super(helper, token);
String get plainNameForRead {
@ -1406,8 +1428,11 @@ class ReadOnlyAccessGenerator<Arguments> extends Generator<Arguments> {
VariableDeclaration value;
ReadOnlyAccessGenerator(BuilderHelper<dynamic, dynamic, Arguments> helper,
Token token, this.expression, this.plainNameForRead)
ReadOnlyAccessGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.expression,
this.plainNameForRead)
: super(helper, token);
String get debugName => "ReadOnlyAccessGenerator";
@ -1450,7 +1475,8 @@ class ReadOnlyAccessGenerator<Arguments> extends Generator<Arguments> {
class LargeIntAccessGenerator<Arguments> extends Generator<Arguments> {
LargeIntAccessGenerator(
BuilderHelper<dynamic, dynamic, Arguments> helper, Token token)
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token)
: super(helper, token);
// TODO(ahe): This should probably be calling unhandled.
@ -1501,7 +1527,7 @@ abstract class ErroneousExpressionGenerator<Arguments>
implements Generator<Arguments> {
/// Pass [arguments] that must be evaluated before throwing an error. At
/// most one of [isGetter] and [isSetter] should be true and they're passed
/// to [BuilderHelper.buildThrowNoSuchMethodError] if it is used.
/// to [ExpressionGeneratorHelper.buildThrowNoSuchMethodError] if it is used.
kernel.Expression buildError(Arguments arguments,
{bool isGetter: false, bool isSetter: false, int offset});
@ -1617,8 +1643,10 @@ class ThisAccessGenerator<Arguments> extends Generator<Arguments> {
final bool isSuper;
ThisAccessGenerator(BuilderHelper<dynamic, dynamic, Arguments> helper,
Token token, this.isInitializer,
ThisAccessGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.isInitializer,
{this.isSuper: false})
: super(helper, token);
@ -1653,7 +1681,7 @@ class ThisAccessGenerator<Arguments> extends Generator<Arguments> {
Name name = send.name;
Arguments arguments = send.arguments;
int offset = offsetForToken(send.token);
if (isInitializer && send is SendAccessor) {
if (isInitializer && send is SendAccessGenerator) {
if (isNullAware) {
helper.deprecated_addCompileTimeError(
operatorOffset, "Expected '.'\nTry removing '?'.");
@ -1661,7 +1689,7 @@ class ThisAccessGenerator<Arguments> extends Generator<Arguments> {
return buildConstructorInitializer(offset, name, arguments);
}
Member getter = helper.lookupInstanceMember(name, isSuper: isSuper);
if (send is SendAccessor) {
if (send is SendAccessGenerator) {
// Notice that 'this' or 'super' can't be null. So we can ignore the
// value of [isNullAware].
if (getter == null) {
@ -1787,7 +1815,9 @@ abstract class IncompleteSendGenerator<Arguments> extends Generator<Arguments> {
final Name name;
IncompleteSendGenerator(
BuilderHelper<dynamic, dynamic, Arguments> helper, Token token, this.name)
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.name)
: super(helper, token);
withReceiver(Object receiver, int operatorOffset, {bool isNullAware});
@ -1818,7 +1848,9 @@ class UnresolvedNameGenerator<Arguments> extends Generator<Arguments>
final Name name;
UnresolvedNameGenerator(
BuilderHelper<dynamic, dynamic, Arguments> helper, Token token, this.name)
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.name)
: super(helper, token);
String get debugName => "UnresolvedNameGenerator";
@ -1868,16 +1900,18 @@ class UnresolvedNameGenerator<Arguments> extends Generator<Arguments>
}
}
// TODO(ahe): Rename to IncompleteErrorGenerator.
class IncompleteError<Arguments> extends IncompleteSendGenerator<Arguments>
class IncompleteErrorGenerator<Arguments>
extends IncompleteSendGenerator<Arguments>
with ErroneousExpressionGenerator<Arguments> {
final Message message;
IncompleteError(BuilderHelper<dynamic, dynamic, Arguments> helper,
Token token, this.message)
IncompleteErrorGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.message)
: super(helper, token, null);
String get debugName => "IncompleteError";
String get debugName => "IncompleteErrorGenerator";
@override
kernel.Expression buildError(Arguments arguments,
@ -1910,20 +1944,23 @@ class IncompleteError<Arguments> extends IncompleteSendGenerator<Arguments>
}
}
// TODO(ahe): Rename to SendAccessGenerator.
class SendAccessor<Arguments> extends IncompleteSendGenerator<Arguments> {
class SendAccessGenerator<Arguments>
extends IncompleteSendGenerator<Arguments> {
@override
final Arguments arguments;
SendAccessor(BuilderHelper<dynamic, dynamic, Arguments> helper, Token token,
Name name, this.arguments)
SendAccessGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
Name name,
this.arguments)
: super(helper, token, name) {
assert(arguments != null);
}
String get plainNameForRead => name.name;
String get debugName => "SendAccessor";
String get debugName => "SendAccessGenerator";
kernel.Expression buildSimpleRead() {
return unsupported("buildSimpleRead", offsetForToken(token), uri);
@ -2000,16 +2037,17 @@ class SendAccessor<Arguments> extends IncompleteSendGenerator<Arguments> {
}
}
// TODO(ahe): Rename to IncompletePropertyAccessGenerator.
class IncompletePropertyAccessor<Arguments>
class IncompletePropertyAccessGenerator<Arguments>
extends IncompleteSendGenerator<Arguments> {
IncompletePropertyAccessor(
BuilderHelper<dynamic, dynamic, Arguments> helper, Token token, Name name)
IncompletePropertyAccessGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
Name name)
: super(helper, token, name);
String get plainNameForRead => name.name;
String get debugName => "IncompletePropertyAccessor";
String get debugName => "IncompletePropertyAccessGenerator";
kernel.Expression buildSimpleRead() {
return unsupported("buildSimpleRead", offsetForToken(token), uri);
@ -2073,14 +2111,15 @@ class IncompletePropertyAccessor<Arguments>
}
}
// TODO(ahe): Rename to ParenthesizedExpressionGenerator.
class ParenthesizedExpression<Arguments>
class ParenthesizedExpressionGenerator<Arguments>
extends ReadOnlyAccessGenerator<Arguments> {
ParenthesizedExpression(BuilderHelper<dynamic, dynamic, Arguments> helper,
Token token, kernel.Expression expression)
ParenthesizedExpressionGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
kernel.Expression expression)
: super(helper, token, expression, null);
String get debugName => "ParenthesizedExpression";
String get debugName => "ParenthesizedExpressionGenerator";
kernel.Expression makeInvalidWrite(kernel.Expression value) {
return helper.deprecated_buildCompileTimeError(
@ -2088,8 +2127,7 @@ class ParenthesizedExpression<Arguments>
}
}
// TODO(ahe): Rename to TypeDeclarationAccessGenerator.
class TypeDeclarationAccessor<Arguments>
class TypeDeclarationAccessGenerator<Arguments>
extends ReadOnlyAccessGenerator<Arguments> {
/// The import prefix preceding the [declaration] reference, or `null` if
/// the reference is not prefixed.
@ -2101,8 +2139,8 @@ class TypeDeclarationAccessor<Arguments>
final TypeDeclarationBuilder declaration;
TypeDeclarationAccessor(
BuilderHelper<dynamic, dynamic, Arguments> helper,
TypeDeclarationAccessGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
Token token,
this.prefix,
this.declarationReferenceOffset,
@ -2110,7 +2148,7 @@ class TypeDeclarationAccessor<Arguments>
String plainNameForRead)
: super(helper, token, null, plainNameForRead);
String get debugName => "TypeDeclarationAccessor";
String get debugName => "TypeDeclarationAccessGenerator";
kernel.Expression get expression {
if (super.expression == null) {
@ -2157,7 +2195,7 @@ class TypeDeclarationAccessor<Arguments>
Generator generator;
if (builder == null) {
// If we find a setter, [builder] is an [AccessErrorBuilder], not null.
if (send is IncompletePropertyAccessor) {
if (send is IncompletePropertyAccessGenerator) {
generator = new UnresolvedNameGenerator(helper, send.token, name);
} else {
return helper.buildConstructorInvocation(declaration, send.token,
@ -2203,7 +2241,7 @@ class TypeDeclarationAccessor<Arguments>
} else {
return unhandled(
"${declaration.runtimeType}",
"TypeDeclarationAccessor.buildType",
"TypeDeclarationAccessGenerator.buildType",
offsetForToken(token),
helper.uri);
}
@ -2256,7 +2294,7 @@ kernel.Expression makeBinary<Arguments>(
Name operator,
Procedure interfaceTarget,
kernel.Expression right,
BuilderHelper<dynamic, dynamic, Arguments> helper,
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper,
{int offset: TreeNode.noOffset}) {
return new ShadowMethodInvocation(
left,
@ -2270,7 +2308,7 @@ kernel.Expression makeBinary<Arguments>(
}
kernel.Expression buildIsNull<Arguments>(kernel.Expression value, int offset,
BuilderHelper<dynamic, dynamic, Arguments> helper) {
ExpressionGeneratorHelper<dynamic, dynamic, Arguments> helper) {
return makeBinary(value, equalsName, null,
helper.storeOffset(helper.forest.literalNull(null), offset), helper,
offset: offset);

View file

@ -43,8 +43,7 @@ import 'kernel_builder.dart'
PrefixBuilder,
TypeDeclarationBuilder;
// TODO(ahe): Rename to ExpressionGeneratorHelper.
abstract class BuilderHelper<Expression, Statement, Arguments> {
abstract class ExpressionGeneratorHelper<Expression, Statement, Arguments> {
LibraryBuilder get library;
Uri get uri;

View file

@ -69,7 +69,7 @@ import 'body_builder.dart' show combineStatements;
import 'expression_generator.dart' show makeLet;
import 'expression_generator_helper.dart' show BuilderHelper;
import 'expression_generator_helper.dart' show ExpressionGeneratorHelper;
/// Indicates whether type inference involving conditional expressions should
/// always use least upper bound.
@ -2082,8 +2082,8 @@ class ShadowTypeInferrer extends TypeInferrerImpl {
// with another, and we can only replace a node if it has a parent pointer.
assert(expression.parent != null);
// For full (non-top level) inference, we need access to the BuilderHelper
// so that we can perform error recovery.
// For full (non-top level) inference, we need access to the
// ExpressionGeneratorHelper so that we can perform error recovery.
assert(isTopLevel || helper != null);
// When doing top level inference, we skip subexpressions whose type isn't
@ -2114,7 +2114,8 @@ class ShadowTypeInferrer extends TypeInferrerImpl {
}
@override
void inferInitializer(BuilderHelper helper, Initializer initializer) {
void inferInitializer(
ExpressionGeneratorHelper helper, Initializer initializer) {
assert(initializer is ShadowInitializer);
this.helper = helper;
// Use polymorphic dispatch on [KernelInitializer] to perform whatever
@ -2129,8 +2130,8 @@ class ShadowTypeInferrer extends TypeInferrerImpl {
@override
void inferStatement(Statement statement) {
// For full (non-top level) inference, we need access to the BuilderHelper
// so that we can perform error recovery.
// For full (non-top level) inference, we need access to the
// ExpressionGeneratorHelper so that we can perform error recovery.
if (!isTopLevel) assert(helper != null);
if (statement is ShadowStatement) {

View file

@ -64,7 +64,8 @@ import '../fasta_codes.dart';
import '../kernel/expression_generator.dart' show buildIsNull;
import '../kernel/expression_generator_helper.dart' show BuilderHelper;
import '../kernel/expression_generator_helper.dart'
show ExpressionGeneratorHelper;
import '../kernel/kernel_shadow_ast.dart'
show
@ -323,18 +324,20 @@ abstract class TypeInferrer {
Uri get uri;
/// Performs full type inference on the given field initializer.
void inferFieldInitializer(
BuilderHelper helper, DartType declaredType, Expression initializer);
void inferFieldInitializer(ExpressionGeneratorHelper helper,
DartType declaredType, Expression initializer);
/// Performs type inference on the given function body.
void inferFunctionBody(BuilderHelper helper, DartType returnType,
void inferFunctionBody(ExpressionGeneratorHelper helper, DartType returnType,
AsyncMarker asyncMarker, Statement body);
/// Performs type inference on the given constructor initializer.
void inferInitializer(BuilderHelper helper, Initializer initializer);
void inferInitializer(
ExpressionGeneratorHelper helper, Initializer initializer);
/// Performs type inference on the given metadata annotations.
void inferMetadata(BuilderHelper helper, List<Expression> annotations);
void inferMetadata(
ExpressionGeneratorHelper helper, List<Expression> annotations);
/// Performs type inference on the given metadata annotations keeping the
/// existing helper if possible.
@ -342,8 +345,8 @@ abstract class TypeInferrer {
/// Performs type inference on the given function parameter initializer
/// expression.
void inferParameterInitializer(
BuilderHelper helper, Expression initializer, DartType declaredType);
void inferParameterInitializer(ExpressionGeneratorHelper helper,
Expression initializer, DartType declaredType);
}
/// Implementation of [TypeInferrer] which doesn't do any type inference.
@ -363,25 +366,27 @@ class TypeInferrerDisabled extends TypeInferrer {
Uri get uri => null;
@override
void inferFieldInitializer(
BuilderHelper helper, DartType declaredType, Expression initializer) {}
void inferFieldInitializer(ExpressionGeneratorHelper helper,
DartType declaredType, Expression initializer) {}
@override
void inferFunctionBody(BuilderHelper helper, DartType returnType,
void inferFunctionBody(ExpressionGeneratorHelper helper, DartType returnType,
AsyncMarker asyncMarker, Statement body) {}
@override
void inferInitializer(BuilderHelper helper, Initializer initializer) {}
void inferInitializer(
ExpressionGeneratorHelper helper, Initializer initializer) {}
@override
void inferMetadata(BuilderHelper helper, List<Expression> annotations) {}
void inferMetadata(
ExpressionGeneratorHelper helper, List<Expression> annotations) {}
@override
void inferMetadataKeepingHelper(List<Expression> annotations) {}
@override
void inferParameterInitializer(
BuilderHelper helper, Expression initializer, DartType declaredType) {}
void inferParameterInitializer(ExpressionGeneratorHelper helper,
Expression initializer, DartType declaredType) {}
}
/// Derived class containing generic implementations of [TypeInferrer].
@ -419,7 +424,7 @@ abstract class TypeInferrerImpl extends TypeInferrer {
final SourceLibraryBuilder library;
BuilderHelper helper;
ExpressionGeneratorHelper helper;
/// Context information for the current closure, or `null` if we are not
/// inside a closure.
@ -925,8 +930,8 @@ abstract class TypeInferrerImpl extends TypeInferrer {
Expression expression, DartType typeContext, bool typeNeeded);
@override
void inferFieldInitializer(
BuilderHelper helper, DartType declaredType, Expression initializer) {
void inferFieldInitializer(ExpressionGeneratorHelper helper,
DartType declaredType, Expression initializer) {
assert(closureContext == null);
this.helper = helper;
var actualType = inferExpression(
@ -945,7 +950,7 @@ abstract class TypeInferrerImpl extends TypeInferrer {
DartType inferFieldTopLevel(ShadowField field, bool typeNeeded);
@override
void inferFunctionBody(BuilderHelper helper, DartType returnType,
void inferFunctionBody(ExpressionGeneratorHelper helper, DartType returnType,
AsyncMarker asyncMarker, Statement body) {
assert(closureContext == null);
this.helper = helper;
@ -1238,7 +1243,8 @@ abstract class TypeInferrerImpl extends TypeInferrer {
}
@override
void inferMetadata(BuilderHelper helper, List<Expression> annotations) {
void inferMetadata(
ExpressionGeneratorHelper helper, List<Expression> annotations) {
if (annotations != null) {
this.helper = helper;
inferMetadataKeepingHelper(annotations);
@ -1320,8 +1326,8 @@ abstract class TypeInferrerImpl extends TypeInferrer {
}
@override
void inferParameterInitializer(
BuilderHelper helper, Expression initializer, DartType declaredType) {
void inferParameterInitializer(ExpressionGeneratorHelper helper,
Expression initializer, DartType declaredType) {
assert(closureContext == null);
this.helper = helper;
assert(declaredType != null);

View file

@ -48,23 +48,23 @@ import 'package:front_end/src/fasta/kernel/expression_generator.dart'
show
DeferredAccessGenerator,
Generator,
IncompleteError,
IncompletePropertyAccessor,
IncompleteErrorGenerator,
IncompletePropertyAccessGenerator,
IndexedAccessGenerator,
LargeIntAccessGenerator,
LoadLibraryGenerator,
NullAwarePropertyAccessGenerator,
ParenthesizedExpression,
ParenthesizedExpressionGenerator,
PropertyAccessGenerator,
ReadOnlyAccessGenerator,
SendAccessor,
SendAccessGenerator,
StaticAccessGenerator,
SuperIndexedAccessGenerator,
SuperPropertyAccessGenerator,
ThisAccessGenerator,
ThisIndexedAccessGenerator,
ThisPropertyAccessGenerator,
TypeDeclarationAccessor,
TypeDeclarationAccessGenerator,
UnresolvedNameGenerator,
VariableUseGenerator;
@ -197,12 +197,12 @@ main() {
check(
"ThisAccessGenerator(offset: 4, isInitializer: false, isSuper: false)",
new ThisAccessGenerator<Arguments>(helper, token, false));
check("IncompleteError(offset: 4, message: Unspecified)",
new IncompleteError<Arguments>(helper, token, message));
check("SendAccessor(offset: 4, name: bar, arguments: (\"arg\"))",
new SendAccessor<Arguments>(helper, token, name, arguments));
check("IncompletePropertyAccessor(offset: 4, name: bar)",
new IncompletePropertyAccessor<Arguments>(helper, token, name));
check("IncompleteErrorGenerator(offset: 4, message: Unspecified)",
new IncompleteErrorGenerator<Arguments>(helper, token, message));
check("SendAccessGenerator(offset: 4, name: bar, arguments: (\"arg\"))",
new SendAccessGenerator<Arguments>(helper, token, name, arguments));
check("IncompletePropertyAccessGenerator(offset: 4, name: bar)",
new IncompletePropertyAccessGenerator<Arguments>(helper, token, name));
check(
"DeferredAccessGenerator(offset: 4, "
"builder: Instance of 'PrefixBuilder',"
@ -218,13 +218,14 @@ main() {
check("LargeIntAccessGenerator(offset: 4, lexeme: myToken)",
new LargeIntAccessGenerator<Arguments>(helper, token));
check(
"ParenthesizedExpression(offset: 4, expression: expression,"
"ParenthesizedExpressionGenerator(offset: 4, expression: expression,"
" plainNameForRead: null, value: null)",
new ParenthesizedExpression<Arguments>(helper, token, expression));
new ParenthesizedExpressionGenerator<Arguments>(
helper, token, expression));
check(
"TypeDeclarationAccessor(offset: 4, expression: T,"
"TypeDeclarationAccessGenerator(offset: 4, expression: T,"
" plainNameForRead: foo, value: null)",
new TypeDeclarationAccessor<Arguments>(
new TypeDeclarationAccessGenerator<Arguments>(
helper, token, prefixBuilder, -1, declaration, "foo"));
check("UnresolvedNameGenerator(offset: 4, name: bar)",
new UnresolvedNameGenerator<Arguments>(helper, token, name));