[cfe][InternalNodes] Remove Forest
This removes the Forest class, make all its methods top-level. For ease of diffing the imports are changed to use forest and _forest as prefixes. This is done in preparation for using the internal/external_ast_helper.dart libraries exclusively for create AST nodes. Change-Id: I53e03d9c98596558d1749330cbfba9d12764bbc9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/488463 Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
This commit is contained in:
committed by
Commit Queue
parent
808562c683
commit
0b9b62a7a6
@@ -110,7 +110,7 @@ import 'expression_generator_helper.dart';
|
||||
import 'external_ast_helper.dart';
|
||||
import 'implicit_type_argument.dart' show ImplicitTypeArgument;
|
||||
import 'internal_ast.dart';
|
||||
import 'internal_ast_helper.dart';
|
||||
import 'internal_ast_helper.dart' as forest;
|
||||
import 'kernel_variable_builder.dart';
|
||||
import 'load_library_builder.dart';
|
||||
import 'type_algorithms.dart' show calculateBounds;
|
||||
@@ -179,9 +179,6 @@ abstract class BodyBuilder {
|
||||
|
||||
class BodyBuilderImpl extends StackListenerImpl
|
||||
implements BodyBuilder, ExpressionGeneratorHelper {
|
||||
@override
|
||||
final Forest forest;
|
||||
|
||||
@override
|
||||
final SourceLibraryBuilder libraryBuilder;
|
||||
|
||||
@@ -372,7 +369,6 @@ class BodyBuilderImpl extends StackListenerImpl
|
||||
required this.extensionScope,
|
||||
required ThisVariable? internalThisVariable,
|
||||
}) : _context = context,
|
||||
forest = const Forest(),
|
||||
enableNative = libraryBuilder.loader.target.backendTarget.enableNative(
|
||||
libraryBuilder.importUri,
|
||||
),
|
||||
@@ -4072,10 +4068,7 @@ class BodyBuilderImpl extends StackListenerImpl
|
||||
List<BreakStatementImpl>? continueStatements;
|
||||
if (continueTarget.hasUsers) {
|
||||
LabeledStatement labeledStatement = forest.createLabeledStatement(body);
|
||||
continueStatements = continueTarget.resolveContinues(
|
||||
forest,
|
||||
labeledStatement,
|
||||
);
|
||||
continueStatements = continueTarget.resolveContinues(labeledStatement);
|
||||
body = labeledStatement;
|
||||
}
|
||||
Expression? condition;
|
||||
@@ -4100,7 +4093,7 @@ class BodyBuilderImpl extends StackListenerImpl
|
||||
Statement result = forStatement;
|
||||
if (breakTarget.hasUsers) {
|
||||
LabeledStatement labeledStatement = forest.createLabeledStatement(result);
|
||||
breakTarget.resolveBreaks(forest, labeledStatement, forStatement);
|
||||
breakTarget.resolveBreaks(labeledStatement, forStatement);
|
||||
result = labeledStatement;
|
||||
}
|
||||
if (variableOrExpression is PatternVariableDeclaration) {
|
||||
@@ -8015,10 +8008,7 @@ class BodyBuilderImpl extends StackListenerImpl
|
||||
List<BreakStatementImpl>? continueStatements;
|
||||
if (continueTarget.hasUsers) {
|
||||
LabeledStatement labeledStatement = forest.createLabeledStatement(body);
|
||||
continueStatements = continueTarget.resolveContinues(
|
||||
forest,
|
||||
labeledStatement,
|
||||
);
|
||||
continueStatements = continueTarget.resolveContinues(labeledStatement);
|
||||
body = labeledStatement;
|
||||
}
|
||||
Statement doStatement = forest.createDoStatement(
|
||||
@@ -8036,7 +8026,7 @@ class BodyBuilderImpl extends StackListenerImpl
|
||||
Statement result = doStatement;
|
||||
if (breakTarget.hasUsers) {
|
||||
LabeledStatement labeledStatement = forest.createLabeledStatement(result);
|
||||
breakTarget.resolveBreaks(forest, labeledStatement, doStatement);
|
||||
breakTarget.resolveBreaks(labeledStatement, doStatement);
|
||||
result = labeledStatement;
|
||||
}
|
||||
exitLoopOrSwitch(result);
|
||||
@@ -8389,10 +8379,7 @@ class BodyBuilderImpl extends StackListenerImpl
|
||||
List<BreakStatementImpl>? continueStatements;
|
||||
if (continueTarget.hasUsers) {
|
||||
LabeledStatement labeledStatement = forest.createLabeledStatement(body);
|
||||
continueStatements = continueTarget.resolveContinues(
|
||||
forest,
|
||||
labeledStatement,
|
||||
);
|
||||
continueStatements = continueTarget.resolveContinues(labeledStatement);
|
||||
body = labeledStatement;
|
||||
}
|
||||
ForInElements elements = _computeForInElements(
|
||||
@@ -8437,7 +8424,7 @@ class BodyBuilderImpl extends StackListenerImpl
|
||||
Statement result = forInStatement;
|
||||
if (breakTarget.hasUsers) {
|
||||
LabeledStatement labeledStatement = forest.createLabeledStatement(result);
|
||||
breakTarget.resolveBreaks(forest, labeledStatement, forInStatement);
|
||||
breakTarget.resolveBreaks(labeledStatement, forInStatement);
|
||||
result = labeledStatement;
|
||||
}
|
||||
if (problem != null) {
|
||||
@@ -8496,9 +8483,9 @@ class BodyBuilderImpl extends StackListenerImpl
|
||||
if (statement is! LabeledStatement) {
|
||||
statement = forest.createLabeledStatement(statement);
|
||||
}
|
||||
target.breakTarget.resolveBreaks(forest, statement, statement);
|
||||
target.breakTarget.resolveBreaks(statement, statement);
|
||||
List<BreakStatementImpl>? continueStatements = target.continueTarget
|
||||
.resolveContinues(forest, statement);
|
||||
.resolveContinues(statement);
|
||||
if (continueStatements != null) {
|
||||
for (BreakStatementImpl continueStatement in continueStatements) {
|
||||
continueStatement.targetStatement = statement;
|
||||
@@ -8592,10 +8579,7 @@ class BodyBuilderImpl extends StackListenerImpl
|
||||
List<BreakStatementImpl>? continueStatements;
|
||||
if (continueTarget.hasUsers) {
|
||||
LabeledStatement labeledStatement = forest.createLabeledStatement(body);
|
||||
continueStatements = continueTarget.resolveContinues(
|
||||
forest,
|
||||
labeledStatement,
|
||||
);
|
||||
continueStatements = continueTarget.resolveContinues(labeledStatement);
|
||||
body = labeledStatement;
|
||||
}
|
||||
Statement whileStatement = forest.createWhileStatement(
|
||||
@@ -8611,7 +8595,7 @@ class BodyBuilderImpl extends StackListenerImpl
|
||||
Statement result = whileStatement;
|
||||
if (breakTarget.hasUsers) {
|
||||
LabeledStatement labeledStatement = forest.createLabeledStatement(result);
|
||||
breakTarget.resolveBreaks(forest, labeledStatement, whileStatement);
|
||||
breakTarget.resolveBreaks(labeledStatement, whileStatement);
|
||||
result = labeledStatement;
|
||||
}
|
||||
exitLoopOrSwitch(result);
|
||||
@@ -9291,7 +9275,7 @@ class BodyBuilderImpl extends StackListenerImpl
|
||||
// when they have no target.
|
||||
if (target.hasUsers || libraryFeatures.patterns.isEnabled) {
|
||||
LabeledStatement labeledStatement = forest.createLabeledStatement(result);
|
||||
target.resolveBreaks(forest, labeledStatement, switchStatement);
|
||||
target.resolveBreaks(labeledStatement, switchStatement);
|
||||
result = labeledStatement;
|
||||
}
|
||||
exitLoopOrSwitch(result);
|
||||
@@ -9449,7 +9433,7 @@ class BodyBuilderImpl extends StackListenerImpl
|
||||
JumpTarget? target = _switchScope!.lookupLabel(label.name);
|
||||
if (target != null) {
|
||||
(caseLabelUsers[i] ??= <Statement>[]).addAll(target.users);
|
||||
target.resolveGotos(forest, current);
|
||||
target.resolveGotos(current);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,11 +67,7 @@ class JumpTarget {
|
||||
users.add(statement);
|
||||
}
|
||||
|
||||
void resolveBreaks(
|
||||
Forest forest,
|
||||
LabeledStatement target,
|
||||
Statement targetStatement,
|
||||
) {
|
||||
void resolveBreaks(LabeledStatement target, Statement targetStatement) {
|
||||
assert(isBreakTarget);
|
||||
for (Statement user in users) {
|
||||
BreakStatementImpl breakStatement = user as BreakStatementImpl;
|
||||
@@ -81,10 +77,7 @@ class JumpTarget {
|
||||
users.clear();
|
||||
}
|
||||
|
||||
List<BreakStatementImpl>? resolveContinues(
|
||||
Forest forest,
|
||||
LabeledStatement target,
|
||||
) {
|
||||
List<BreakStatementImpl>? resolveContinues(LabeledStatement target) {
|
||||
assert(isContinueTarget);
|
||||
List<BreakStatementImpl> statements = <BreakStatementImpl>[];
|
||||
for (Statement user in users) {
|
||||
@@ -96,7 +89,7 @@ class JumpTarget {
|
||||
return statements;
|
||||
}
|
||||
|
||||
void resolveGotos(Forest forest, SwitchCase target) {
|
||||
void resolveGotos(SwitchCase target) {
|
||||
assert(isGotoTarget);
|
||||
for (Statement user in users) {
|
||||
ContinueSwitchStatement continueSwitchStatement =
|
||||
@@ -174,26 +167,19 @@ class LabelTarget implements JumpTarget {
|
||||
|
||||
@override
|
||||
// Coverage-ignore(suite): Not run.
|
||||
void resolveBreaks(
|
||||
Forest forest,
|
||||
LabeledStatement target,
|
||||
Statement targetStatement,
|
||||
) {
|
||||
breakTarget.resolveBreaks(forest, target, targetStatement);
|
||||
void resolveBreaks(LabeledStatement target, Statement targetStatement) {
|
||||
breakTarget.resolveBreaks(target, targetStatement);
|
||||
}
|
||||
|
||||
@override
|
||||
// Coverage-ignore(suite): Not run.
|
||||
List<BreakStatementImpl>? resolveContinues(
|
||||
Forest forest,
|
||||
LabeledStatement target,
|
||||
) {
|
||||
return continueTarget.resolveContinues(forest, target);
|
||||
List<BreakStatementImpl>? resolveContinues(LabeledStatement target) {
|
||||
return continueTarget.resolveContinues(target);
|
||||
}
|
||||
|
||||
@override
|
||||
// Coverage-ignore(suite): Not run.
|
||||
void resolveGotos(Forest forest, SwitchCase target) {
|
||||
void resolveGotos(SwitchCase target) {
|
||||
unsupported("resolveGotos", charOffset, fileUri);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ import 'constness.dart' show Constness;
|
||||
import 'expression_generator_helper.dart';
|
||||
import 'external_ast_helper.dart';
|
||||
import 'internal_ast.dart';
|
||||
import 'internal_ast_helper.dart';
|
||||
import 'internal_ast_helper.dart' as _forest;
|
||||
import 'load_library_builder.dart';
|
||||
import 'utils.dart';
|
||||
|
||||
@@ -80,9 +80,6 @@ abstract class Generator {
|
||||
|
||||
Generator(this._helper, this.token) : fileOffset = offsetForToken(token);
|
||||
|
||||
/// Easy access to the [Forest] factory object.
|
||||
Forest get _forest => _helper.forest;
|
||||
|
||||
// TODO(johnniwinther): Improve the semantic precision of this property or
|
||||
// remove it. It's unclear if the semantics is inconsistent. It's for instance
|
||||
// used both for the name of a variable in [VariableUseGenerator] and for
|
||||
@@ -524,7 +521,7 @@ class VariableUseGenerator extends Generator {
|
||||
bool isPreIncDec = false,
|
||||
bool isPostIncDec = false,
|
||||
}) {
|
||||
Expression binary = _helper.forest.createBinary(
|
||||
Expression binary = _forest.createBinary(
|
||||
operatorOffset,
|
||||
_createRead(),
|
||||
binaryOperator,
|
||||
@@ -588,7 +585,7 @@ class VariableUseGenerator extends Generator {
|
||||
required ActualArguments arguments,
|
||||
bool isTypeArgumentsInForest = false,
|
||||
}) {
|
||||
return _helper.forest.createExpressionInvocation(
|
||||
return _forest.createExpressionInvocation(
|
||||
adjustForImplicitCall(_plainNameForRead, offset),
|
||||
buildSimpleRead(),
|
||||
typeArguments,
|
||||
@@ -764,7 +761,7 @@ class PropertyAccessGenerator extends Generator {
|
||||
bool voidContext = false,
|
||||
bool forOutput = false,
|
||||
}) {
|
||||
return _helper.forest.createPropertySet(
|
||||
return _forest.createPropertySet(
|
||||
fileOffset,
|
||||
receiver,
|
||||
name,
|
||||
@@ -883,7 +880,7 @@ class PropertyAccessGenerator extends Generator {
|
||||
Name name,
|
||||
bool isNullAware,
|
||||
) {
|
||||
if (helper.forest.isThisExpression(receiver)) {
|
||||
if (_forest.isThisExpression(receiver)) {
|
||||
// Coverage-ignore-block(suite): Not run.
|
||||
return new ThisPropertyAccessGenerator(
|
||||
helper,
|
||||
@@ -996,7 +993,7 @@ class ThisPropertyAccessGenerator extends Generator {
|
||||
required bool forEffect,
|
||||
}) {
|
||||
_helper.readInternalThisVariable();
|
||||
return _helper.forest.createPropertySet(
|
||||
return _forest.createPropertySet(
|
||||
fileOffset,
|
||||
_thisExpression,
|
||||
name,
|
||||
@@ -1029,7 +1026,7 @@ class ThisPropertyAccessGenerator extends Generator {
|
||||
bool isPreIncDec = false,
|
||||
bool isPostIncDec = false,
|
||||
}) {
|
||||
Expression binary = _helper.forest.createBinary(
|
||||
Expression binary = _forest.createBinary(
|
||||
operatorOffset,
|
||||
_createRead(),
|
||||
binaryOperator,
|
||||
@@ -1378,7 +1375,7 @@ class SuperPropertyAccessGenerator extends Generator {
|
||||
bool isPreIncDec = false,
|
||||
bool isPostIncDec = false,
|
||||
}) {
|
||||
Expression binary = _helper.forest.createBinary(
|
||||
Expression binary = _forest.createBinary(
|
||||
operatorOffset,
|
||||
_createRead(),
|
||||
binaryOperator,
|
||||
@@ -1491,7 +1488,7 @@ class SuperPropertyAccessGenerator extends Generator {
|
||||
kind: UnresolvedKind.Method,
|
||||
);
|
||||
} else if (isFieldOrGetter(getter)) {
|
||||
return _helper.forest.createExpressionInvocation(
|
||||
return _forest.createExpressionInvocation(
|
||||
offset,
|
||||
buildSimpleRead(),
|
||||
typeArguments,
|
||||
@@ -1654,7 +1651,7 @@ class IndexedAccessGenerator extends Generator {
|
||||
bool isTypeArgumentsInForest = false,
|
||||
}) {
|
||||
_helper.readInternalThisVariable();
|
||||
return _helper.forest.createExpressionInvocation(
|
||||
return _forest.createExpressionInvocation(
|
||||
arguments.fileOffset,
|
||||
buildSimpleRead(),
|
||||
typeArguments,
|
||||
@@ -1694,7 +1691,7 @@ class IndexedAccessGenerator extends Generator {
|
||||
Expression index, {
|
||||
required bool isNullAware,
|
||||
}) {
|
||||
if (helper.forest.isThisExpression(receiver)) {
|
||||
if (_forest.isThisExpression(receiver)) {
|
||||
// Coverage-ignore-block(suite): Not run.
|
||||
return new ThisIndexedAccessGenerator(
|
||||
helper,
|
||||
@@ -1742,7 +1739,7 @@ class ThisIndexedAccessGenerator extends Generator {
|
||||
@override
|
||||
Expression buildSimpleRead() {
|
||||
_helper.readInternalThisVariable();
|
||||
Expression receiver = _helper.forest.createThisExpression(fileOffset);
|
||||
Expression receiver = _forest.createThisExpression(fileOffset);
|
||||
return _forest.createIndexGet(
|
||||
fileOffset,
|
||||
receiver,
|
||||
@@ -1758,7 +1755,7 @@ class ThisIndexedAccessGenerator extends Generator {
|
||||
bool forOutput = false,
|
||||
}) {
|
||||
_helper.readInternalThisVariable();
|
||||
Expression receiver = _helper.forest.createThisExpression(fileOffset);
|
||||
Expression receiver = _forest.createThisExpression(fileOffset);
|
||||
return _forest.createIndexSet(
|
||||
fileOffset,
|
||||
receiver,
|
||||
@@ -1777,7 +1774,7 @@ class ThisIndexedAccessGenerator extends Generator {
|
||||
bool voidContext = false,
|
||||
}) {
|
||||
_helper.readInternalThisVariable();
|
||||
Expression receiver = _helper.forest.createThisExpression(fileOffset);
|
||||
Expression receiver = _forest.createThisExpression(fileOffset);
|
||||
return new IfNullIndexSet(
|
||||
receiver: receiver,
|
||||
index: index,
|
||||
@@ -1800,7 +1797,7 @@ class ThisIndexedAccessGenerator extends Generator {
|
||||
bool isPostIncDec = false,
|
||||
}) {
|
||||
_helper.readInternalThisVariable();
|
||||
Expression receiver = _helper.forest.createThisExpression(fileOffset);
|
||||
Expression receiver = _forest.createThisExpression(fileOffset);
|
||||
return new CompoundIndexSet(
|
||||
receiver: receiver,
|
||||
index: index,
|
||||
@@ -1840,7 +1837,7 @@ class ThisIndexedAccessGenerator extends Generator {
|
||||
required ActualArguments arguments,
|
||||
bool isTypeArgumentsInForest = false,
|
||||
}) {
|
||||
return _helper.forest.createExpressionInvocation(
|
||||
return _forest.createExpressionInvocation(
|
||||
offset,
|
||||
buildSimpleRead(),
|
||||
typeArguments,
|
||||
@@ -1908,12 +1905,12 @@ class SuperIndexedAccessGenerator extends Generator {
|
||||
);
|
||||
} else {
|
||||
_helper.readInternalThisVariable();
|
||||
return _helper.forest.createSuperMethodInvocation(
|
||||
return _forest.createSuperMethodInvocation(
|
||||
fileOffset,
|
||||
indexGetName,
|
||||
getter,
|
||||
null,
|
||||
_helper.forest.createArguments(
|
||||
_forest.createArguments(
|
||||
fileOffset,
|
||||
arguments: [new PositionalArgument(index)],
|
||||
hasNamedBeforePositional: false,
|
||||
@@ -1941,12 +1938,12 @@ class SuperIndexedAccessGenerator extends Generator {
|
||||
} else {
|
||||
if (voidContext) {
|
||||
_helper.readInternalThisVariable();
|
||||
return _helper.forest.createSuperMethodInvocation(
|
||||
return _forest.createSuperMethodInvocation(
|
||||
fileOffset,
|
||||
indexSetName,
|
||||
setter,
|
||||
null,
|
||||
_helper.forest.createArguments(
|
||||
_forest.createArguments(
|
||||
fileOffset,
|
||||
arguments: [
|
||||
new PositionalArgument(index),
|
||||
@@ -2040,7 +2037,7 @@ class SuperIndexedAccessGenerator extends Generator {
|
||||
bool isTypeArgumentsInForest = false,
|
||||
}) {
|
||||
_helper.readInternalThisVariable();
|
||||
return _helper.forest.createExpressionInvocation(
|
||||
return _forest.createExpressionInvocation(
|
||||
offset,
|
||||
buildSimpleRead(),
|
||||
typeArguments,
|
||||
@@ -2204,9 +2201,9 @@ class StaticAccessGenerator extends Generator {
|
||||
read = _makeInvalidRead(unresolvedKind: UnresolvedKind.Getter);
|
||||
} else {
|
||||
if (readTarget is Procedure && readTarget.kind == ProcedureKind.Method) {
|
||||
read = _helper.forest.createStaticTearOff(fileOffset, readTarget);
|
||||
read = _forest.createStaticTearOff(fileOffset, readTarget);
|
||||
} else {
|
||||
read = _helper.forest.createStaticGet(fileOffset, readTarget);
|
||||
read = _forest.createStaticGet(fileOffset, readTarget);
|
||||
}
|
||||
}
|
||||
return read;
|
||||
@@ -2254,7 +2251,7 @@ class StaticAccessGenerator extends Generator {
|
||||
bool isPreIncDec = false,
|
||||
bool isPostIncDec = false,
|
||||
}) {
|
||||
Expression binary = _helper.forest.createBinary(
|
||||
Expression binary = _forest.createBinary(
|
||||
operatorOffset,
|
||||
_createRead(),
|
||||
binaryOperator,
|
||||
@@ -2339,7 +2336,7 @@ class StaticAccessGenerator extends Generator {
|
||||
}
|
||||
if (invokeTarget == null ||
|
||||
(readTarget != null && isFieldOrGetter(readTarget!))) {
|
||||
return _helper.forest.createExpressionInvocation(
|
||||
return _forest.createExpressionInvocation(
|
||||
offset + (readTarget?.name.text.length ?? 0),
|
||||
buildSimpleRead(),
|
||||
typeArguments,
|
||||
@@ -3486,7 +3483,7 @@ class ExplicitExtensionIndexedAccessGenerator extends Generator {
|
||||
required ActualArguments arguments,
|
||||
bool isTypeArgumentsInForest = false,
|
||||
}) {
|
||||
return _helper.forest.createExpressionInvocation(
|
||||
return _forest.createExpressionInvocation(
|
||||
offset,
|
||||
buildSimpleRead(),
|
||||
typeArguments,
|
||||
@@ -3853,7 +3850,7 @@ class LoadLibraryGenerator extends Generator {
|
||||
builder.importDependency.targetLibrary;
|
||||
LoadLibraryTearOff read = new LoadLibraryTearOff(
|
||||
builder.importDependency,
|
||||
builder.createTearoffMethod(_helper.forest),
|
||||
builder.createTearoffMethod(),
|
||||
)..fileOffset = fileOffset;
|
||||
return read;
|
||||
}
|
||||
@@ -3927,7 +3924,7 @@ class LoadLibraryGenerator extends Generator {
|
||||
'loadLibrary'.length,
|
||||
);
|
||||
}
|
||||
return builder.createLoadLibrary(offset, _forest, arguments);
|
||||
return builder.createLoadLibrary(offset, arguments);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4550,24 +4547,23 @@ class TypeUseGenerator extends AbstractReadOnlyAccessGenerator {
|
||||
length: name.text.length,
|
||||
);
|
||||
}
|
||||
tearOffExpression = _helper.forest.createConstructorTearOff(
|
||||
tearOffExpression = _forest.createConstructorTearOff(
|
||||
token.charOffset,
|
||||
tearOff,
|
||||
);
|
||||
} else if (tearOff is Procedure) {
|
||||
if (tearOff.isRedirectingFactory) {
|
||||
tearOffExpression = _helper.forest
|
||||
.createRedirectingFactoryTearOff(
|
||||
token.charOffset,
|
||||
tearOff,
|
||||
);
|
||||
tearOffExpression = _forest.createRedirectingFactoryTearOff(
|
||||
token.charOffset,
|
||||
tearOff,
|
||||
);
|
||||
} else if (tearOff.isFactory) {
|
||||
tearOffExpression = _helper.forest.createConstructorTearOff(
|
||||
tearOffExpression = _forest.createConstructorTearOff(
|
||||
token.charOffset,
|
||||
tearOff,
|
||||
);
|
||||
} else {
|
||||
tearOffExpression = _helper.forest.createStaticTearOff(
|
||||
tearOffExpression = _forest.createStaticTearOff(
|
||||
token.charOffset,
|
||||
tearOff,
|
||||
);
|
||||
@@ -4648,12 +4644,12 @@ class TypeUseGenerator extends AbstractReadOnlyAccessGenerator {
|
||||
if (tearOffLowering != null) {
|
||||
if (tearOffLowering.isFactory) {
|
||||
// Coverage-ignore-block(suite): Not run.
|
||||
return _helper.forest.createConstructorTearOff(
|
||||
return _forest.createConstructorTearOff(
|
||||
token.charOffset,
|
||||
tearOffLowering,
|
||||
);
|
||||
} else {
|
||||
return _helper.forest.createStaticTearOff(
|
||||
return _forest.createStaticTearOff(
|
||||
token.charOffset,
|
||||
tearOffLowering,
|
||||
);
|
||||
@@ -4677,7 +4673,7 @@ class TypeUseGenerator extends AbstractReadOnlyAccessGenerator {
|
||||
substitutedTypeArguments,
|
||||
);
|
||||
|
||||
tearOffExpression = _helper.forest.createTypedefTearOff(
|
||||
tearOffExpression = _forest.createTypedefTearOff(
|
||||
token.charOffset,
|
||||
freshTypeParameters.freshTypeParameters,
|
||||
tearOffExpression,
|
||||
@@ -4688,7 +4684,7 @@ class TypeUseGenerator extends AbstractReadOnlyAccessGenerator {
|
||||
builtTypeArguments.isNotEmpty) {
|
||||
builtTypeArguments = unaliasTypes(builtTypeArguments)!;
|
||||
|
||||
tearOffExpression = _helper.forest.createInstantiation(
|
||||
tearOffExpression = _forest.createInstantiation(
|
||||
token.charOffset,
|
||||
tearOffExpression,
|
||||
builtTypeArguments,
|
||||
@@ -5119,7 +5115,7 @@ abstract class AbstractReadOnlyAccessGenerator extends Generator {
|
||||
required ActualArguments arguments,
|
||||
bool isTypeArgumentsInForest = false,
|
||||
}) {
|
||||
return _helper.forest.createExpressionInvocation(
|
||||
return _forest.createExpressionInvocation(
|
||||
adjustForImplicitCall(targetName, offset),
|
||||
_createRead(),
|
||||
typeArguments,
|
||||
@@ -6679,7 +6675,7 @@ class ThisAccessGenerator extends Generator {
|
||||
);
|
||||
} else {
|
||||
_helper.readInternalThisVariable();
|
||||
return _helper.forest.createExpressionInvocation(
|
||||
return _forest.createExpressionInvocation(
|
||||
offset,
|
||||
_forest.createThisExpression(fileOffset),
|
||||
typeArguments,
|
||||
@@ -7023,7 +7019,7 @@ class ParenthesizedExpressionGenerator extends AbstractReadOnlyAccessGenerator {
|
||||
|
||||
@override
|
||||
Expression _createRead() =>
|
||||
_helper.forest.createParenthesized(expression.fileOffset, expression);
|
||||
_forest.createParenthesized(expression.fileOffset, expression);
|
||||
|
||||
@override
|
||||
// Coverage-ignore(suite): Not run.
|
||||
@@ -7355,7 +7351,7 @@ class AugmentSuperAccessGenerator extends Generator {
|
||||
// augmented getters, and augmenting fields only have read access to the
|
||||
// augmented field initializer expression.
|
||||
|
||||
Expression binary = _helper.forest.createBinary(
|
||||
Expression binary = _forest.createBinary(
|
||||
operatorOffset,
|
||||
_createRead(),
|
||||
binaryOperator,
|
||||
|
||||
@@ -25,7 +25,6 @@ import '../source/source_library_builder.dart' show SourceLibraryBuilder;
|
||||
import 'constness.dart' show Constness;
|
||||
import 'expression_generator.dart';
|
||||
import 'internal_ast.dart';
|
||||
import 'internal_ast_helper.dart';
|
||||
|
||||
/// Alias for Expression | Generator
|
||||
typedef Expression_Generator = dynamic;
|
||||
@@ -52,8 +51,6 @@ abstract class ExpressionGeneratorHelper {
|
||||
/// [ExpressionGenerator]s.
|
||||
InstanceTypeParameterAccessState get instanceTypeParameterAccessState;
|
||||
|
||||
Forest get forest;
|
||||
|
||||
ProblemReporting get problemReporting;
|
||||
|
||||
CompilerContext get compilerContext;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -22,7 +22,7 @@ import '../builder/builder.dart';
|
||||
import '../builder/compilation_unit.dart';
|
||||
import '../source/source_library_builder.dart' show SourceLibraryBuilder;
|
||||
import 'internal_ast.dart';
|
||||
import 'internal_ast_helper.dart';
|
||||
import 'internal_ast_helper.dart' as forest;
|
||||
|
||||
/// Builder to represent the `deferLibrary.loadLibrary` calls and tear-offs.
|
||||
class LoadLibraryBuilder extends NamedBuilderImpl {
|
||||
@@ -68,20 +68,16 @@ class LoadLibraryBuilder extends NamedBuilderImpl {
|
||||
// Coverage-ignore(suite): Not run.
|
||||
Uri get fileUri => parent.fileUri;
|
||||
|
||||
LoadLibrary createLoadLibrary(
|
||||
int charOffset,
|
||||
Forest forest,
|
||||
ActualArguments? arguments,
|
||||
) {
|
||||
LoadLibrary createLoadLibrary(int charOffset, ActualArguments? arguments) {
|
||||
return forest.createLoadLibrary(charOffset, importDependency, arguments);
|
||||
}
|
||||
|
||||
Procedure createTearoffMethod(Forest forest) {
|
||||
Procedure createTearoffMethod() {
|
||||
if (tearoff != null) {
|
||||
// Coverage-ignore-block(suite): Not run.
|
||||
return tearoff!;
|
||||
}
|
||||
LoadLibrary expression = createLoadLibrary(fileOffset, forest, null);
|
||||
LoadLibrary expression = createLoadLibrary(fileOffset, null);
|
||||
String prefix = expression.import.name!;
|
||||
Name name = new Name('_#loadLibrary_$prefix', parent.library);
|
||||
Reference? reference = parent.indexedLibrary?.lookupGetterReference(name);
|
||||
|
||||
@@ -52,7 +52,7 @@ import 'body_builder.dart';
|
||||
import 'body_builder_context.dart';
|
||||
import 'external_ast_helper.dart';
|
||||
import 'internal_ast.dart';
|
||||
import 'internal_ast_helper.dart';
|
||||
import 'internal_ast_helper.dart' as forest;
|
||||
|
||||
part 'resolver_helpers.dart';
|
||||
|
||||
@@ -1304,7 +1304,6 @@ class Resolver {
|
||||
required ConstantContext constantContext,
|
||||
required ThisVariable? internalThisVariable,
|
||||
}) {
|
||||
const Forest forest = const Forest();
|
||||
AssignedVariables assignedVariables = context.assignedVariables;
|
||||
|
||||
// Create variable get expressions for super parameters before finishing
|
||||
|
||||
@@ -590,7 +590,6 @@ class _InitializerBuilder {
|
||||
argumentsOffset = _bodyBuilderContext.memberNameOffset;
|
||||
}
|
||||
|
||||
const Forest forest = const Forest();
|
||||
if (argumentsOriginalOrder != null) {
|
||||
arguments = forest.createArguments(
|
||||
argumentsOffset,
|
||||
|
||||
@@ -15,7 +15,7 @@ import 'package:front_end/src/dill/dill_target.dart';
|
||||
import 'package:front_end/src/dill/dill_type_alias_builder.dart';
|
||||
import 'package:front_end/src/kernel/collections.dart';
|
||||
import 'package:front_end/src/kernel/internal_ast.dart';
|
||||
import 'package:front_end/src/kernel/internal_ast_helper.dart';
|
||||
import 'package:front_end/src/kernel/internal_ast_helper.dart' as forest;
|
||||
import 'package:kernel/ast.dart';
|
||||
import 'package:kernel/names.dart';
|
||||
import 'package:kernel/target/targets.dart';
|
||||
@@ -200,7 +200,7 @@ void main() {
|
||||
|
||||
void _testVariableDeclarations() {
|
||||
testStatement(
|
||||
const Forest().variablesDeclaration([
|
||||
forest.variablesDeclaration([
|
||||
new VariableDeclaration('a'),
|
||||
new VariableDeclaration('b'),
|
||||
], dummyUri),
|
||||
@@ -208,7 +208,7 @@ void _testVariableDeclarations() {
|
||||
dynamic a, b;''',
|
||||
);
|
||||
testStatement(
|
||||
const Forest().variablesDeclaration([
|
||||
forest.variablesDeclaration([
|
||||
new VariableDeclaration('a', type: const VoidType()),
|
||||
new VariableDeclaration('b', initializer: new NullLiteral()),
|
||||
], dummyUri),
|
||||
|
||||
Reference in New Issue
Block a user