mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 12:44:21 +00:00
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:
parent
2c9d8924e3
commit
330dcb19da
|
@ -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.
|
||||
|
|
|
@ -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>{};
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
|
|
Loading…
Reference in a new issue