Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(662)

Unified Diff: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart

Issue 1859343004: dartfmt pkg/compiler (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
index 1afb9d3ac23da303625ba9ada545a4f5f58ddbd5..7483034919e09fe58ed2410f5caacceb23464e1a 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
@@ -6,45 +6,32 @@ library dart2js.ir_builder_task;
import '../closure.dart' as closure;
import '../common.dart';
-import '../common/names.dart' show
- Identifiers,
- Names,
- Selectors;
-import '../common/tasks.dart' show
- CompilerTask;
-import '../compiler.dart' show
- Compiler;
+import '../common/names.dart' show Identifiers, Names, Selectors;
+import '../common/tasks.dart' show CompilerTask;
+import '../compiler.dart' show Compiler;
import '../constants/expressions.dart';
import '../dart_types.dart';
import '../elements/elements.dart';
-import '../elements/modelx.dart' show
- SynthesizedConstructorElementX,
- ConstructorBodyElementX,
- FunctionSignatureX;
+import '../elements/modelx.dart'
+ show
+ SynthesizedConstructorElementX,
+ ConstructorBodyElementX,
+ FunctionSignatureX;
import '../io/source_information.dart';
-import '../js_backend/backend_helpers.dart' show
- BackendHelpers;
-import '../js_backend/js_backend.dart' show
- JavaScriptBackend,
- SyntheticConstantKind;
-import '../resolution/tree_elements.dart' show
- TreeElements;
+import '../js_backend/backend_helpers.dart' show BackendHelpers;
+import '../js_backend/js_backend.dart'
+ show JavaScriptBackend, SyntheticConstantKind;
+import '../resolution/tree_elements.dart' show TreeElements;
import '../resolution/semantic_visitor.dart';
import '../resolution/operators.dart' as op;
import '../tree/tree.dart' as ast;
-import '../types/types.dart' show
- TypeMask;
-import '../universe/call_structure.dart' show
- CallStructure;
-import '../universe/selector.dart' show
- Selector;
-import '../constants/values.dart' show
- ConstantValue;
+import '../types/types.dart' show TypeMask;
+import '../universe/call_structure.dart' show CallStructure;
+import '../universe/selector.dart' show Selector;
+import '../constants/values.dart' show ConstantValue;
import 'cps_ir_nodes.dart' as ir;
import 'cps_ir_builder.dart';
-import '../native/native.dart' show
- NativeBehavior,
- HasCapturedPlaceholders;
+import '../native/native.dart' show NativeBehavior, HasCapturedPlaceholders;
// TODO(karlklose): remove.
import '../js/js.dart' as js show js, Template, Expression, Name;
@@ -54,8 +41,7 @@ import '../util/util.dart';
import 'package:js_runtime/shared/embedded_names.dart'
show JsBuiltin, JsGetName;
import '../constants/values.dart';
-import 'type_mask_system.dart' show
- TypeMaskSystem;
+import 'type_mask_system.dart' show TypeMaskSystem;
typedef void IrBuilderCallback(Element element, ir.FunctionDefinition irNode);
@@ -88,8 +74,8 @@ class IrBuilderTask extends CompilerTask {
String get name => 'CPS builder';
- ir.FunctionDefinition buildNode(AstElement element,
- TypeMaskSystem typeMaskSystem) {
+ ir.FunctionDefinition buildNode(
+ AstElement element, TypeMaskSystem typeMaskSystem) {
return measure(() {
bailoutMessage = null;
@@ -99,10 +85,8 @@ class IrBuilderTask extends CompilerTask {
SourceInformationBuilder sourceInformationBuilder =
sourceInformationStrategy.createBuilderForContext(element);
- IrBuilderVisitor builder =
- new IrBuilderVisitor(
- elementsMapping, compiler, sourceInformationBuilder,
- typeMaskSystem);
+ IrBuilderVisitor builder = new IrBuilderVisitor(elementsMapping,
+ compiler, sourceInformationBuilder, typeMaskSystem);
ir.FunctionDefinition irNode = builder.buildExecutable(element);
if (irNode == null) {
bailoutMessage = builder.bailoutMessage;
@@ -125,18 +109,19 @@ class IrBuilderTask extends CompilerTask {
/// For statements, `null` is returned.
// TODO(johnniwinther): Implement [SemanticDeclVisitor].
class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
- with IrBuilderMixin<ast.Node>,
- SemanticSendResolvedMixin<ir.Primitive, dynamic>,
- ErrorBulkMixin<ir.Primitive, dynamic>,
- BaseImplementationOfStaticsMixin<ir.Primitive, dynamic>,
- BaseImplementationOfLocalsMixin<ir.Primitive, dynamic>,
- BaseImplementationOfDynamicsMixin<ir.Primitive, dynamic>,
- BaseImplementationOfConstantsMixin<ir.Primitive, dynamic>,
- BaseImplementationOfNewMixin<ir.Primitive, dynamic>,
- BaseImplementationOfCompoundsMixin<ir.Primitive, dynamic>,
- BaseImplementationOfSetIfNullsMixin<ir.Primitive, dynamic>,
- BaseImplementationOfIndexCompoundsMixin<ir.Primitive, dynamic>,
- BaseImplementationOfSuperIndexSetIfNullMixin<ir.Primitive, dynamic>
+ with
+ IrBuilderMixin<ast.Node>,
+ SemanticSendResolvedMixin<ir.Primitive, dynamic>,
+ ErrorBulkMixin<ir.Primitive, dynamic>,
+ BaseImplementationOfStaticsMixin<ir.Primitive, dynamic>,
+ BaseImplementationOfLocalsMixin<ir.Primitive, dynamic>,
+ BaseImplementationOfDynamicsMixin<ir.Primitive, dynamic>,
+ BaseImplementationOfConstantsMixin<ir.Primitive, dynamic>,
+ BaseImplementationOfNewMixin<ir.Primitive, dynamic>,
+ BaseImplementationOfCompoundsMixin<ir.Primitive, dynamic>,
+ BaseImplementationOfSetIfNullsMixin<ir.Primitive, dynamic>,
+ BaseImplementationOfIndexCompoundsMixin<ir.Primitive, dynamic>,
+ BaseImplementationOfSuperIndexSetIfNullMixin<ir.Primitive, dynamic>
implements SemanticSendVisitor<ir.Primitive, dynamic> {
final TreeElements elements;
final Compiler compiler;
@@ -170,10 +155,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
// arguments, and what the arguments are.
/// Construct a top-level visitor.
- IrBuilderVisitor(this.elements,
- this.compiler,
- this.sourceInformationBuilder,
- this.typeMaskSystem);
+ IrBuilderVisitor(this.elements, this.compiler, this.sourceInformationBuilder,
+ this.typeMaskSystem);
JavaScriptBackend get backend => compiler.backend;
BackendHelpers get helpers => backend.helpers;
@@ -209,11 +192,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
/// Returns the [ClosureScope] for any function, possibly different from the
/// one currently being built.
ClosureScope getClosureScopeForFunction(FunctionElement function) {
- closure.ClosureClassMap map =
- compiler.closureToClassMapper.computeClosureToClassMapping(
- function,
- function.node,
- elements);
+ closure.ClosureClassMap map = compiler.closureToClassMapper
+ .computeClosureToClassMapping(function, function.node, elements);
return new ClosureScope(map.capturingScopes[function.node]);
}
@@ -226,9 +206,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
IrBuilder getBuilderFor(Element element) {
return new IrBuilder(
- new GlobalProgramInformation(compiler),
- backend.constants,
- element);
+ new GlobalProgramInformation(compiler), backend.constants, element);
}
/// Builds the [ir.FunctionDefinition] for an executable element. In case the
@@ -297,8 +275,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ClassElement clazz = type.element;
assert(clazz.typeVariables.length == type.typeArguments.length);
for (int i = 0; i < clazz.typeVariables.length; ++i) {
- irBuilder.declareTypeVariable(clazz.typeVariables[i],
- type.typeArguments[i]);
+ irBuilder.declareTypeVariable(
+ clazz.typeVariables[i], type.typeArguments[i]);
}
loadTypeVariablesForSuperClasses(clazz);
}
@@ -338,7 +316,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
// Create origin body element for patched constructors.
ConstructorBodyElementX patch = bodyElement;
ConstructorBodyElementX origin =
- new ConstructorBodyElementX(constructor.origin);
+ new ConstructorBodyElementX(constructor.origin);
origin.applyPatch(patch);
classElement.origin.addBackendMember(bodyElement.origin);
}
@@ -402,8 +380,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
backend.isNativeOrExtendsNative(classElement)) {
parameters.add(new ExplicitReceiverParameter(constructor));
}
- constructor.functionSignature.orderedForEachParameter(
- (ParameterElement p) => parameters.add(p));
+ constructor.functionSignature
+ .orderedForEachParameter((ParameterElement p) => parameters.add(p));
int firstTypeArgumentParameterIndex;
@@ -486,14 +464,14 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
} else {
instance = new ir.CreateInstance(
- classElement,
- instanceArguments,
- typeInformation,
- constructor.hasNode
- ? sourceInformationBuilder.buildCreate(constructor.node)
- // TODO(johnniwinther): Provide source information for creation
- // through synthetic constructors.
- : null);
+ classElement,
+ instanceArguments,
+ typeInformation,
+ constructor.hasNode
+ ? sourceInformationBuilder.buildCreate(constructor.node)
+ // TODO(johnniwinther): Provide source information for creation
+ // through synthetic constructors.
+ : null);
irBuilder.add(new ir.LetPrim(instance));
}
@@ -505,8 +483,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
for (Local param in getConstructorBodyParameters(bodyElement)) {
bodyArguments.add(irBuilder.environment.lookup(param));
}
- Selector selector = new Selector.call(target.memberName,
- new CallStructure(bodyArguments.length));
+ Selector selector = new Selector.call(
+ target.memberName, new CallStructure(bodyArguments.length));
irBuilder.addPrimitive(new ir.InvokeMethodDirectly(
instance, bodyElement, selector, bodyArguments, null));
}
@@ -515,7 +493,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
irBuilder.buildReturn(
value: instance,
sourceInformation:
- sourceInformationBuilder.buildImplicitReturn(constructor));
+ sourceInformationBuilder.buildImplicitReturn(constructor));
return irBuilder.makeFunctionDefinition(
sourceInformationBuilder.buildVariableDeclaration());
@@ -527,11 +505,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
/// Every visitor can only be applied to nodes in one context, because
/// the [elements] field is specific to that context.
IrBuilderVisitor makeVisitorForContext(AstElement context) {
- return new IrBuilderVisitor(
- context.resolvedAst.elements,
- compiler,
- sourceInformationBuilder.forContext(context),
- typeMaskSystem);
+ return new IrBuilderVisitor(context.resolvedAst.elements, compiler,
+ sourceInformationBuilder.forContext(context), typeMaskSystem);
}
/// Builds the IR for an [expression] taken from a different [context].
@@ -550,8 +525,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
Map<FieldElement, ir.Primitive> fieldValues) {
assert(constructor.enclosingClass.implementation.isMixinApplication);
assert(constructor.isSynthesized);
- ConstructorElement target =
- constructor.definingConstructor.implementation;
+ ConstructorElement target = constructor.definingConstructor.implementation;
// The resolver gives us the exact same FunctionSignature for the two
// constructors. The parameters for the synthesized constructor
// are already in the environment, so the target constructor's parameters
@@ -568,8 +542,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
///
/// Defaults for optional arguments are evaluated in order to ensure
/// all parameters are available in the environment.
- void loadArguments(ConstructorElement target,
- CallStructure call,
+ void loadArguments(ConstructorElement target, CallStructure call,
List<ir.Primitive> arguments) {
assert(target.isImplementation);
assert(target == elements.analyzedElement);
@@ -676,8 +649,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
return;
}
// Evaluate initializing parameters, e.g. `Foo(this.x)`.
- constructor.functionSignature.orderedForEachParameter(
- (ParameterElement parameter) {
+ constructor.functionSignature
+ .orderedForEachParameter((ParameterElement parameter) {
if (parameter.isInitializingFormal) {
InitializingFormalElement fieldParameter = parameter;
fieldValues[fieldParameter.fieldElement] =
@@ -688,7 +661,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ast.FunctionExpression node = constructor.node;
bool hasConstructorCall = false; // Has this() or super() initializer?
if (node != null && node.initializers != null) {
- for(ast.Node initializer in node.initializers) {
+ for (ast.Node initializer in node.initializers) {
if (initializer is ast.SendSet) {
// Field initializer.
FieldElement field = elements[initializer];
@@ -699,15 +672,11 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
Selector selector = elements.getSelector(initializer);
List<ir.Primitive> arguments = initializer.arguments.mapToList(visit);
evaluateConstructorCallFromInitializer(
- target,
- selector.callStructure,
- arguments,
- supers,
- fieldValues);
+ target, selector.callStructure, arguments, supers, fieldValues);
hasConstructorCall = true;
} else {
- reporter.internalError(initializer,
- "Unexpected initializer type $initializer");
+ reporter.internalError(
+ initializer, "Unexpected initializer type $initializer");
}
}
}
@@ -720,11 +689,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
target = target.implementation;
evaluateConstructorCallFromInitializer(
- target,
- CallStructure.NO_ARGS,
- const [],
- supers,
- fieldValues);
+ target, CallStructure.NO_ARGS, const [], supers, fieldValues);
}
// Add this constructor after the superconstructors.
supers.add(constructor);
@@ -748,11 +713,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ir.FunctionDefinition buildConstructorBody(ConstructorBodyElement body) {
ConstructorElement constructor = body.constructor;
ast.FunctionExpression node = constructor.node;
- closureClassMap =
- compiler.closureToClassMapper.computeClosureToClassMapping(
- constructor,
- node,
- elements);
+ closureClassMap = compiler.closureToClassMapper
+ .computeClosureToClassMapping(constructor, node, elements);
// We compute variables boxed in mutable variables on entry to each try
// block, not including variables captured by a closure (which are boxed
@@ -766,8 +728,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
IrBuilder builder = getBuilderFor(body);
return withBuilder(builder, () {
- irBuilder.buildConstructorBodyHeader(getConstructorBodyParameters(body),
- getClosureScopeForNode(node));
+ irBuilder.buildConstructorBodyHeader(
+ getConstructorBodyParameters(body), getClosureScopeForNode(node));
visit(node.body);
return irBuilder.makeFunctionDefinition(
sourceInformationBuilder.buildVariableDeclaration());
@@ -782,27 +744,21 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
assert(node != null);
assert(elements[node] != null);
- closureClassMap =
- compiler.closureToClassMapper.computeClosureToClassMapping(
- element,
- node,
- elements);
+ closureClassMap = compiler.closureToClassMapper
+ .computeClosureToClassMapping(element, node, elements);
TryBoxedVariables variables = _analyzeTryBoxedVariables(node);
tryStatements = variables.tryStatements;
IrBuilder builder = getBuilderFor(element);
- return withBuilder(builder,
- () => _makeFunctionBody(builder, element, node));
+ return withBuilder(
+ builder, () => _makeFunctionBody(builder, element, node));
}
ir.FunctionDefinition buildStaticFieldInitializer(FieldElement element) {
if (!backend.constants.lazyStatics.contains(element)) {
return null; // Nothing to do.
}
- closureClassMap =
- compiler.closureToClassMapper.computeClosureToClassMapping(
- element,
- element.node,
- elements);
+ closureClassMap = compiler.closureToClassMapper
+ .computeClosureToClassMapping(element, element.node, elements);
IrBuilder builder = getBuilderFor(element);
return withBuilder(builder, () {
irBuilder.buildFunctionHeader(<Local>[]);
@@ -812,7 +768,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
irBuilder.buildReturn(
value: initialValue,
sourceInformation:
- sourceInformationBuilder.buildReturn(sendSet.assignmentOperator));
+ sourceInformationBuilder.buildReturn(sendSet.assignmentOperator));
return irBuilder.makeFunctionDefinition(
sourceInformationBuilder.buildVariableDeclaration());
});
@@ -847,8 +803,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
/// appear in a canonical order. A [CallStructure] reflecting this order
/// is returned.
CallStructure normalizeStaticArguments(CallStructure callStructure,
- FunctionElement target,
- List<ir.Primitive> arguments) {
+ FunctionElement target, List<ir.Primitive> arguments) {
target = target.implementation;
FunctionSignature signature = target.functionSignature;
if (!signature.optionalParametersAreNamed &&
@@ -877,7 +832,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
// value in the temporary list, otherwise the default value.
signature.orderedOptionalParameters.forEach((ParameterElement element) {
int nameIndex = callStructure.namedArguments.indexOf(element.name);
- arguments.add(nameIndex == -1 ? translateDefaultValue(element)
+ arguments.add(nameIndex == -1
+ ? translateDefaultValue(element)
: namedArguments[nameIndex]);
normalizedNames.add(element.name);
});
@@ -890,8 +846,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
/// list [arguments] is normalized by sorting it in place so that the named
/// arguments appear in a canonical order. A [CallStructure] reflecting this
/// order is returned.
- CallStructure normalizeDynamicArguments(CallStructure callStructure,
- List<ir.Primitive> arguments) {
+ CallStructure normalizeDynamicArguments(
+ CallStructure callStructure, List<ir.Primitive> arguments) {
assert(arguments.length == callStructure.argumentCount);
if (callStructure.namedArguments.isEmpty) return callStructure;
int destinationIndex = callStructure.positionalArgumentCount;
@@ -900,8 +856,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
int sourceIndex = callStructure.namedArguments.indexOf(argName);
arguments[destinationIndex++] = namedArguments[sourceIndex];
}
- return new CallStructure(callStructure.argumentCount,
- callStructure.getOrderedNamedArguments());
+ return new CallStructure(
+ callStructure.argumentCount, callStructure.getOrderedNamedArguments());
}
/// Read the value of [field].
@@ -922,9 +878,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
ir.FunctionDefinition _makeFunctionBody(
- IrBuilder builder,
- FunctionElement element,
- ast.FunctionExpression node) {
+ IrBuilder builder, FunctionElement element, ast.FunctionExpression node) {
FunctionSignature signature = element.functionSignature;
List<Local> parameters = <Local>[];
signature.orderedForEachParameter(
@@ -943,8 +897,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
irBuilder.buildFunctionHeader(parameters,
- closureScope: getClosureScopeForNode(node),
- env: getClosureEnvironment());
+ closureScope: getClosureScopeForNode(node),
+ env: getClosureEnvironment());
if (element == helpers.jsArrayTypedConstructor) {
// Generate a body for JSArray<E>.typed(allocation):
@@ -965,21 +919,23 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ir.Primitive typeInformation = irBuilder.addPrimitive(
new ir.TypeExpression(ir.TypeExpressionKind.INSTANCE,
- element.enclosingClass.thisType,
- <ir.Primitive>[typeArgument]));
+ element.enclosingClass.thisType, <ir.Primitive>[typeArgument]));
MethodElement helper = helpers.setRuntimeTypeInfo;
CallStructure callStructure = CallStructure.TWO_ARGS;
Selector selector = new Selector.call(helper.memberName, callStructure);
allocation = irBuilder.buildInvokeStatic(
- helper, selector, <ir.Primitive>[allocation, typeInformation],
+ helper,
+ selector,
+ <ir.Primitive>[allocation, typeInformation],
sourceInformationBuilder.buildGeneric(node));
}
ir.Primitive refinement = irBuilder.addPrimitive(
new ir.Refinement(allocation, typeMaskSystem.arrayType));
- irBuilder.buildReturn(value: refinement,
+ irBuilder.buildReturn(
+ value: refinement,
sourceInformation:
sourceInformationBuilder.buildImplicitReturn(element));
} else {
@@ -999,15 +955,15 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
ir.Primitive visitFunctionExpression(ast.FunctionExpression node) {
- return irBuilder.buildFunctionExpression(makeSubFunction(node),
- sourceInformationBuilder.buildCreate(node));
+ return irBuilder.buildFunctionExpression(
+ makeSubFunction(node), sourceInformationBuilder.buildCreate(node));
}
visitFunctionDeclaration(ast.FunctionDeclaration node) {
LocalFunctionElement element = elements[node.function];
Object inner = makeSubFunction(node.function);
- irBuilder.declareLocalFunction(element, inner,
- sourceInformationBuilder.buildCreate(node.function));
+ irBuilder.declareLocalFunction(
+ element, inner, sourceInformationBuilder.buildCreate(node.function));
}
// ## Statements ##
@@ -1078,10 +1034,9 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
});
ClassElement cls = redirectingConstructor.enclosingClass;
InterfaceType targetType =
- redirectingConstructor.computeEffectiveTargetType(cls.thisType);
- CallStructure callStructure = new CallStructure(
- redirectingSignature.parameterCount,
- namedParameters);
+ redirectingConstructor.computeEffectiveTargetType(cls.thisType);
+ CallStructure callStructure =
+ new CallStructure(redirectingSignature.parameterCount, namedParameters);
callStructure =
normalizeStaticArguments(callStructure, targetConstructor, arguments);
ir.Primitive instance = irBuilder.buildConstructorInvocation(
@@ -1117,11 +1072,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
visitIf(ast.If node) {
- irBuilder.buildIf(
- build(node.condition),
- subbuild(node.thenPart),
- subbuild(node.elsePart),
- sourceInformationBuilder.buildIf(node));
+ irBuilder.buildIf(build(node.condition), subbuild(node.thenPart),
+ subbuild(node.elsePart), sourceInformationBuilder.buildIf(node));
}
visitLabeledStatement(ast.LabeledStatement node) {
@@ -1131,8 +1083,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
} else {
JumpTarget target = elements.getTargetDefinition(body);
irBuilder.buildLabeledStatement(
- buildBody: subbuild(body),
- target: target);
+ buildBody: subbuild(body), target: target);
}
}
@@ -1208,7 +1159,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
irBuilder.buildLocalVariableSet(
variable, current, sourceInformation);
} else if (Elements.isError(variable) ||
- Elements.isMalformed(variable)) {
+ Elements.isMalformed(variable)) {
Selector selector =
new Selector.setter(new Name(variable.name, variable.library));
List<ir.Primitive> args = <ir.Primitive>[current];
@@ -1259,8 +1210,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
return builder.addPrimitive(new ir.Await(cancellation));
}
- irBuilder.buildTryFinally(new TryStatementInfo(), buildTryBody,
- buildFinallyBody);
+ irBuilder.buildTryFinally(
+ new TryStatementInfo(), buildTryBody, buildFinallyBody);
}
visitAwait(ast.Await node) {
@@ -1292,16 +1243,16 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
variableSelector: selector,
variableMask: elements.getTypeMask(identifier),
variableSetSourceInformation:
- sourceInformationBuilder.buildForInSet(node),
+ sourceInformationBuilder.buildForInSet(node),
currentMask: elements.getCurrentTypeMask(node),
currentSourceInformation:
- sourceInformationBuilder.buildForInCurrent(node),
+ sourceInformationBuilder.buildForInCurrent(node),
moveNextMask: elements.getMoveNextTypeMask(node),
moveNextSourceInformation:
- sourceInformationBuilder.buildForInMoveNext(node),
+ sourceInformationBuilder.buildForInMoveNext(node),
iteratorMask: elements.getIteratorTypeMask(node),
iteratorSourceInformation:
- sourceInformationBuilder.buildForInIterator(node),
+ sourceInformationBuilder.buildForInIterator(node),
buildBody: subbuild(node.body),
target: elements.getTargetDefinition(node),
closureScope: getClosureScopeForNode(node));
@@ -1359,13 +1310,13 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
if (nativeBody != null) {
ast.LiteralString jsCode = nativeBody.asLiteralString();
String javaScriptCode = jsCode.dartString.slowToString();
- assert(invariant(nativeBody,
- !nativeRedirectionRegExp.hasMatch(javaScriptCode),
- message: "Deprecated syntax, use @JSName('name') instead."));
- assert(invariant(nativeBody,
- function.functionSignature.parameterCount == 0,
+ assert(invariant(
+ nativeBody, !nativeRedirectionRegExp.hasMatch(javaScriptCode),
+ message: "Deprecated syntax, use @JSName('name') instead."));
+ assert(invariant(
+ nativeBody, function.functionSignature.parameterCount == 0,
message: 'native "..." syntax is restricted to '
- 'functions with zero parameters.'));
+ 'functions with zero parameters.'));
irBuilder.buildNativeFunctionBody(function, javaScriptCode,
sourceInformationBuilder.buildForeignCode(node));
} else {
@@ -1374,8 +1325,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
} else {
irBuilder.buildReturn(
- value: build(node.expression),
- sourceInformation: source);
+ value: build(node.expression), sourceInformation: source);
}
}
@@ -1471,8 +1421,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
for (int i = 0; i < continueTargets.length; ++i) {
// The state value is i, the case's position in the list of recursive
// cases.
- irBuilder.state.continueCollectors.add(new GotoJumpCollector(
- continueTargets[i], stateIndex, i, join));
+ irBuilder.state.continueCollectors
+ .add(new GotoJumpCollector(continueTargets[i], stateIndex, i, join));
}
// For each non-default case use a pair of functions, one to translate the
@@ -1523,7 +1473,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
if (condition == null) {
condition = buildComparison();
} else {
- condition = irBuilder.buildLogicalOperator(condition,
+ condition = irBuilder.buildLogicalOperator(
+ condition,
nested(buildComparison),
sourceInformationBuilder.buildSwitchCase(switchCase),
isLazyOr: true);
@@ -1589,8 +1540,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
target: elements.getTargetDefinition(node));
irBuilder.state.breakCollectors.add(exit);
for (int i = 0; i < continueTargets.length; ++i) {
- irBuilder.state.continueCollectors.add(new GotoJumpCollector(
- continueTargets[i], stateIndex, i, loop));
+ irBuilder.state.continueCollectors
+ .add(new GotoJumpCollector(continueTargets[i], stateIndex, i, loop));
}
cases.clear();
for (int i = 0; i < continueTargets.length; ++i) {
@@ -1628,16 +1579,14 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
// A loop with a simple switch in the body.
IrBuilder whileBuilder = irBuilder.makeDelimitedBuilder();
- whileBuilder.buildWhile(
- buildCondition: (IrBuilder builder) {
- ir.Primitive condition = builder.buildIdentical(
- builder.environment.index2value[stateIndex], initial);
- return builder.buildNegation(condition,
- sourceInformationBuilder.buildSwitch(node));
- },
- buildBody: (IrBuilder builder) {
- builder.buildSimpleSwitch(loop, cases, null);
- });
+ whileBuilder.buildWhile(buildCondition: (IrBuilder builder) {
+ ir.Primitive condition = builder.buildIdentical(
+ builder.environment.index2value[stateIndex], initial);
+ return builder.buildNegation(
+ condition, sourceInformationBuilder.buildSwitch(node));
+ }, buildBody: (IrBuilder builder) {
+ builder.buildSimpleSwitch(loop, cases, null);
+ });
// Jump to the exit continuation. This jump is the body of the loop exit
// continuation, so the loop exit continuation can be eta-reduced. The
// jump is here for simplicity because `buildWhile` does not expose the
@@ -1646,7 +1595,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
whileBuilder.jumpTo(exit);
irBuilder.add(new ir.LetCont(exit.continuation, whileBuilder.root));
irBuilder.environment = exit.environment;
- irBuilder.environment.discard(1); // Discard the state variable.
+ irBuilder.environment.discard(1); // Discard the state variable.
irBuilder.state.breakCollectors.removeLast();
irBuilder.state.continueCollectors.length -= continueTargets.length;
}
@@ -1683,19 +1632,15 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
// try { try tryBlock catch (ex, st) catchBlock } finally finallyBlock
irBuilder.buildTryFinally(tryStatements[node.finallyBlock],
(IrBuilder inner) {
- inner.buildTryCatch(tryStatements[node.catchBlocks],
- subbuild(node.tryBlock),
- catchClauseInfos);
- },
- subbuild(node.finallyBlock));
+ inner.buildTryCatch(tryStatements[node.catchBlocks],
+ subbuild(node.tryBlock), catchClauseInfos);
+ }, subbuild(node.finallyBlock));
} else if (!node.catchBlocks.isEmpty) {
irBuilder.buildTryCatch(tryStatements[node.catchBlocks],
- subbuild(node.tryBlock),
- catchClauseInfos);
+ subbuild(node.tryBlock), catchClauseInfos);
} else {
irBuilder.buildTryFinally(tryStatements[node.finallyBlock],
- subbuild(node.tryBlock),
- subbuild(node.finallyBlock));
+ subbuild(node.tryBlock), subbuild(node.finallyBlock));
}
}
@@ -1743,8 +1688,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
return irBuilder.state.constants.getConstantValueForVariable(element);
}
- ir.Primitive buildConstantExpression(ConstantExpression expression,
- SourceInformation sourceInformation) {
+ ir.Primitive buildConstantExpression(
+ ConstantExpression expression, SourceInformation sourceInformation) {
return irBuilder.buildConstant(
irBuilder.state.constants.getConstantValue(expression),
sourceInformation: sourceInformation);
@@ -1756,8 +1701,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
/// allocation site for a List object (a literal list or a call to one
/// of the List constructors).
TypeMask getAllocationSiteType(ast.Node node) {
- return compiler.typesTask.getGuaranteedTypeOfNode(
- elements.analyzedElement, node);
+ return compiler.typesTask
+ .getGuaranteedTypeOfNode(elements.analyzedElement, node);
}
ir.Primitive visitLiteralList(ast.LiteralList node) {
@@ -1770,7 +1715,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
// TODO(sra): In checked mode, the elements must be checked as though
// operator[]= is called.
ir.Primitive list = irBuilder.buildListLiteral(type, values,
- allocationSiteType: allocationSiteType);
+ allocationSiteType: allocationSiteType);
if (type.treatAsRaw) return list;
// Call JSArray<E>.typed(allocation) to install the reified type.
ConstructorElement constructor = helpers.jsArrayTypedConstructor;
@@ -1783,8 +1728,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
if (allocationSiteType == null) return tagged;
- return irBuilder.addPrimitive(
- new ir.Refinement(tagged, allocationSiteType));
+ return irBuilder
+ .addPrimitive(new ir.Refinement(tagged, allocationSiteType));
}
ir.Primitive visitLiteralMap(ast.LiteralMap node) {
@@ -1841,8 +1786,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
return translateConstant(node);
}
- ir.Primitive visitParenthesizedExpression(
- ast.ParenthesizedExpression node) {
+ ir.Primitive visitParenthesizedExpression(ast.ParenthesizedExpression node) {
assert(irBuilder.isOpen);
return visit(node.expression);
}
@@ -1907,10 +1851,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive visitExpressionInvoke(ast.Send node,
- ast.Node expression,
- ast.NodeList argumentsNode,
- CallStructure callStructure, _) {
+ ir.Primitive visitExpressionInvoke(ast.Send node, ast.Node expression,
+ ast.NodeList argumentsNode, CallStructure callStructure, _) {
ir.Primitive receiver = visit(expression);
List<ir.Primitive> arguments = argumentsNode.nodes.mapToList(visit);
callStructure = normalizeDynamicArguments(callStructure, arguments);
@@ -1926,10 +1868,9 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive handleConstantGet(
- ast.Node node,
- ConstantExpression constant, _) {
- return buildConstantExpression(constant,
- sourceInformationBuilder.buildGet(node));
+ ast.Node node, ConstantExpression constant, _) {
+ return buildConstantExpression(
+ constant, sourceInformationBuilder.buildGet(node));
}
/// If [node] is null, returns this.
@@ -1940,10 +1881,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive handleDynamicGet(
- ast.Send node,
- ast.Node receiver,
- Name name,
- _) {
+ ast.Send node, ast.Node receiver, Name name, _) {
return irBuilder.buildDynamicGet(
translateReceiver(receiver),
new Selector.getter(name),
@@ -1953,10 +1891,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitIfNotNullDynamicPropertyGet(
- ast.Send node,
- ast.Node receiver,
- Name name,
- _) {
+ ast.Send node, ast.Node receiver, Name name, _) {
ir.Primitive target = visit(receiver);
return irBuilder.buildIfNotNullSend(
target,
@@ -1970,54 +1905,40 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitDynamicTypeLiteralGet(
- ast.Send node,
- ConstantExpression constant,
- _) {
- return buildConstantExpression(constant,
- sourceInformationBuilder.buildGet(node));
+ ast.Send node, ConstantExpression constant, _) {
+ return buildConstantExpression(
+ constant, sourceInformationBuilder.buildGet(node));
}
@override
ir.Primitive visitLocalVariableGet(
- ast.Send node,
- LocalVariableElement element,
- _) {
+ ast.Send node, LocalVariableElement element, _) {
return element.isConst
? irBuilder.buildConstant(getConstantForVariable(element),
sourceInformation: sourceInformationBuilder.buildGet(node))
: irBuilder.buildLocalGet(element);
}
- ir.Primitive handleLocalGet(
- ast.Send node,
- LocalElement element,
- _) {
+ ir.Primitive handleLocalGet(ast.Send node, LocalElement element, _) {
return irBuilder.buildLocalGet(element);
}
@override
ir.Primitive handleStaticFunctionGet(
- ast.Send node,
- MethodElement function,
- _) {
+ ast.Send node, MethodElement function, _) {
return irBuilder.addPrimitive(new ir.GetStatic(function, isFinal: true));
}
@override
- ir.Primitive handleStaticGetterGet(
- ast.Send node,
- FunctionElement getter,
- _) {
- return buildStaticGetterGet(
- getter, node, sourceInformationBuilder.buildGet(node));
+ ir.Primitive handleStaticGetterGet(ast.Send node, FunctionElement getter, _) {
+ return buildStaticGetterGet(
+ getter, node, sourceInformationBuilder.buildGet(node));
}
/// Create a getter invocation of the static getter [getter]. This also
/// handles the special case where [getter] is the `loadLibrary`
/// pseudo-function on library prefixes of deferred imports.
- ir.Primitive buildStaticGetterGet(
- MethodElement getter,
- ast.Send node,
+ ir.Primitive buildStaticGetterGet(MethodElement getter, ast.Send node,
SourceInformation sourceInformation) {
if (getter.isDeferredLoaderGetter) {
PrefixElement prefix = getter.enclosingElement;
@@ -2033,48 +1954,39 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive visitSuperFieldGet(
- ast.Send node,
- FieldElement field,
- _) {
+ ir.Primitive visitSuperFieldGet(ast.Send node, FieldElement field, _) {
return irBuilder.buildSuperFieldGet(
field, sourceInformationBuilder.buildGet(node));
}
@override
- ir.Primitive visitSuperGetterGet(
- ast.Send node,
- FunctionElement getter,
- _) {
+ ir.Primitive visitSuperGetterGet(ast.Send node, FunctionElement getter, _) {
return irBuilder.buildSuperGetterGet(
getter, sourceInformationBuilder.buildGet(node));
}
@override
- ir.Primitive visitSuperMethodGet(
- ast.Send node,
- MethodElement method,
- _) {
+ ir.Primitive visitSuperMethodGet(ast.Send node, MethodElement method, _) {
return irBuilder.buildSuperMethodGet(
method, sourceInformationBuilder.buildGet(node));
}
@override
- ir.Primitive visitUnresolvedSuperGet(
- ast.Send node,
- Element element, _) {
+ ir.Primitive visitUnresolvedSuperGet(ast.Send node, Element element, _) {
return buildSuperNoSuchMethod(
- elements.getSelector(node), elements.getTypeMask(node), [],
+ elements.getSelector(node),
+ elements.getTypeMask(node),
+ [],
sourceInformationBuilder.buildGet(node));
}
@override
ir.Primitive visitUnresolvedSuperSet(
- ast.Send node,
- Element element,
- ast.Node rhs, _) {
+ ast.Send node, Element element, ast.Node rhs, _) {
return buildSuperNoSuchMethod(
- elements.getSelector(node), elements.getTypeMask(node), [visit(rhs)],
+ elements.getSelector(node),
+ elements.getTypeMask(node),
+ [visit(rhs)],
sourceInformationBuilder.buildAssignment(node));
}
@@ -2090,22 +2002,20 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
ir.Primitive translateTypeVariableTypeLiteral(
- TypeVariableElement element,
- SourceInformation sourceInformation) {
+ TypeVariableElement element, SourceInformation sourceInformation) {
return irBuilder.buildReifyTypeVariable(element.type, sourceInformation);
}
@override
- ir.Primitive visitTypeVariableTypeLiteralGet(ast.Send node,
- TypeVariableElement element, _) {
- return translateTypeVariableTypeLiteral(element,
- sourceInformationBuilder.buildGet(node));
+ ir.Primitive visitTypeVariableTypeLiteralGet(
+ ast.Send node, TypeVariableElement element, _) {
+ return translateTypeVariableTypeLiteral(
+ element, sourceInformationBuilder.buildGet(node));
}
ir.Primitive translateLogicalOperator(ast.Expression left,
- ast.Expression right,
- SourceInformation sourceInformation,
- {bool isLazyOr}) {
+ ast.Expression right, SourceInformation sourceInformation,
+ {bool isLazyOr}) {
ir.Primitive leftValue = visit(left);
ir.Primitive buildRightValue(IrBuilder rightBuilder) {
@@ -2113,75 +2023,60 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
return irBuilder.buildLogicalOperator(
- leftValue, buildRightValue, sourceInformation, isLazyOr: isLazyOr);
+ leftValue, buildRightValue, sourceInformation,
+ isLazyOr: isLazyOr);
}
@override
- ir.Primitive visitIfNull(
- ast.Send node, ast.Node left, ast.Node right, _) {
- return irBuilder.buildIfNull(build(left), subbuild(right),
- sourceInformationBuilder.buildIf(node));
+ ir.Primitive visitIfNull(ast.Send node, ast.Node left, ast.Node right, _) {
+ return irBuilder.buildIfNull(
+ build(left), subbuild(right), sourceInformationBuilder.buildIf(node));
}
@override
ir.Primitive visitLogicalAnd(
ast.Send node, ast.Node left, ast.Node right, _) {
- return translateLogicalOperator(left, right,
- sourceInformationBuilder.buildIf(node), isLazyOr: false);
+ return translateLogicalOperator(
+ left, right, sourceInformationBuilder.buildIf(node),
+ isLazyOr: false);
}
@override
- ir.Primitive visitLogicalOr(
- ast.Send node, ast.Node left, ast.Node right, _) {
- return translateLogicalOperator(left, right,
- sourceInformationBuilder.buildIf(node), isLazyOr: true);
+ ir.Primitive visitLogicalOr(ast.Send node, ast.Node left, ast.Node right, _) {
+ return translateLogicalOperator(
+ left, right, sourceInformationBuilder.buildIf(node),
+ isLazyOr: true);
}
@override
- ir.Primitive visitAs(
- ast.Send node,
- ast.Node expression,
- DartType type,
- _) {
+ ir.Primitive visitAs(ast.Send node, ast.Node expression, DartType type, _) {
ir.Primitive receiver = visit(expression);
return irBuilder.buildTypeOperator(
- receiver,
- type,
- sourceInformationBuilder.buildAs(node),
+ receiver, type, sourceInformationBuilder.buildAs(node),
isTypeTest: false);
}
@override
- ir.Primitive visitIs(
- ast.Send node,
- ast.Node expression,
- DartType type,
- _) {
+ ir.Primitive visitIs(ast.Send node, ast.Node expression, DartType type, _) {
ir.Primitive value = visit(expression);
return irBuilder.buildTypeOperator(
- value,
- type,
- sourceInformationBuilder.buildIs(node),
+ value, type, sourceInformationBuilder.buildIs(node),
isTypeTest: true);
}
@override
- ir.Primitive visitIsNot(ast.Send node,
- ast.Node expression, DartType type, _) {
+ ir.Primitive visitIsNot(
+ ast.Send node, ast.Node expression, DartType type, _) {
ir.Primitive value = visit(expression);
ir.Primitive check = irBuilder.buildTypeOperator(
- value,
- type,
- sourceInformationBuilder.buildIs(node),
+ value, type, sourceInformationBuilder.buildIs(node),
isTypeTest: true);
- return irBuilder.buildNegation(check,
- sourceInformationBuilder.buildIf(node));
+ return irBuilder.buildNegation(
+ check, sourceInformationBuilder.buildIf(node));
}
- ir.Primitive translateBinary(ast.Send node,
- ast.Node left,
- op.BinaryOperator operator,
- ast.Node right) {
+ ir.Primitive translateBinary(ast.Send node, ast.Node left,
+ op.BinaryOperator operator, ast.Node right) {
ir.Primitive receiver = visit(left);
Selector selector = new Selector.binaryOperator(operator.selectorName);
List<ir.Primitive> arguments = <ir.Primitive>[visit(right)];
@@ -2196,17 +2091,13 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive visitBinary(ast.Send node,
- ast.Node left,
- op.BinaryOperator operator,
- ast.Node right, _) {
+ ir.Primitive visitBinary(ast.Send node, ast.Node left,
+ op.BinaryOperator operator, ast.Node right, _) {
return translateBinary(node, left, operator, right);
}
@override
- ir.Primitive visitIndex(ast.Send node,
- ast.Node receiver,
- ast.Node index, _) {
+ ir.Primitive visitIndex(ast.Send node, ast.Node receiver, ast.Node index, _) {
ir.Primitive target = visit(receiver);
Selector selector = new Selector.index();
List<ir.Primitive> arguments = <ir.Primitive>[visit(index)];
@@ -2220,70 +2111,50 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
sourceInformationBuilder.buildCall(receiver, node.selector));
}
- ir.Primitive translateSuperBinary(FunctionElement function,
- op.BinaryOperator operator,
- ast.Node argument,
- SourceInformation sourceInformation) {
+ ir.Primitive translateSuperBinary(
+ FunctionElement function,
+ op.BinaryOperator operator,
+ ast.Node argument,
+ SourceInformation sourceInformation) {
List<ir.Primitive> arguments = <ir.Primitive>[visit(argument)];
- return irBuilder.buildSuperMethodInvocation(function,
- CallStructure.ONE_ARG, arguments, sourceInformation);
+ return irBuilder.buildSuperMethodInvocation(
+ function, CallStructure.ONE_ARG, arguments, sourceInformation);
}
@override
- ir.Primitive visitSuperBinary(
- ast.Send node,
- FunctionElement function,
- op.BinaryOperator operator,
- ast.Node argument,
- _) {
+ ir.Primitive visitSuperBinary(ast.Send node, FunctionElement function,
+ op.BinaryOperator operator, ast.Node argument, _) {
return translateSuperBinary(function, operator, argument,
sourceInformationBuilder.buildBinary(node));
}
@override
ir.Primitive visitSuperIndex(
- ast.Send node,
- FunctionElement function,
- ast.Node index,
- _) {
- return irBuilder.buildSuperIndex(function, visit(index),
- sourceInformationBuilder.buildIndex(node));
+ ast.Send node, FunctionElement function, ast.Node index, _) {
+ return irBuilder.buildSuperIndex(
+ function, visit(index), sourceInformationBuilder.buildIndex(node));
}
@override
- ir.Primitive visitEquals(
- ast.Send node,
- ast.Node left,
- ast.Node right,
- _) {
+ ir.Primitive visitEquals(ast.Send node, ast.Node left, ast.Node right, _) {
return translateBinary(node, left, op.BinaryOperator.EQ, right);
}
@override
ir.Primitive visitSuperEquals(
- ast.Send node,
- FunctionElement function,
- ast.Node argument,
- _) {
+ ast.Send node, FunctionElement function, ast.Node argument, _) {
return translateSuperBinary(function, op.BinaryOperator.EQ, argument,
sourceInformationBuilder.buildBinary(node));
}
@override
- ir.Primitive visitNot(
- ast.Send node,
- ast.Node expression,
- _) {
- return irBuilder.buildNegation(visit(expression),
- sourceInformationBuilder.buildIf(node));
+ ir.Primitive visitNot(ast.Send node, ast.Node expression, _) {
+ return irBuilder.buildNegation(
+ visit(expression), sourceInformationBuilder.buildIf(node));
}
@override
- ir.Primitive visitNotEquals(
- ast.Send node,
- ast.Node left,
- ast.Node right,
- _) {
+ ir.Primitive visitNotEquals(ast.Send node, ast.Node left, ast.Node right, _) {
return irBuilder.buildNegation(
translateBinary(node, left, op.BinaryOperator.NOT_EQ, right),
sourceInformationBuilder.buildIf(node));
@@ -2291,10 +2162,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitSuperNotEquals(
- ast.Send node,
- FunctionElement function,
- ast.Node argument,
- _) {
+ ast.Send node, FunctionElement function, ast.Node argument, _) {
return irBuilder.buildNegation(
translateSuperBinary(function, op.BinaryOperator.NOT_EQ, argument,
sourceInformationBuilder.buildBinary(node)),
@@ -2302,32 +2170,30 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive visitUnary(ast.Send node,
- op.UnaryOperator operator, ast.Node expression, _) {
+ ir.Primitive visitUnary(
+ ast.Send node, op.UnaryOperator operator, ast.Node expression, _) {
// TODO(johnniwinther): Clean up the creation of selectors.
Selector selector = operator.selector;
ir.Primitive receiver = translateReceiver(expression);
return irBuilder.buildDynamicInvocation(
- receiver, selector, elements.getTypeMask(node), const [],
+ receiver,
+ selector,
+ elements.getTypeMask(node),
+ const [],
sourceInformationBuilder.buildCall(expression, node));
}
@override
ir.Primitive visitSuperUnary(
- ast.Send node,
- op.UnaryOperator operator,
- FunctionElement function,
- _) {
- return irBuilder.buildSuperMethodInvocation(
- function, CallStructure.NO_ARGS, const [],
- sourceInformationBuilder.buildCall(node, node));
+ ast.Send node, op.UnaryOperator operator, FunctionElement function, _) {
+ return irBuilder.buildSuperMethodInvocation(function, CallStructure.NO_ARGS,
+ const [], sourceInformationBuilder.buildCall(node, node));
}
// TODO(johnniwinther): Handle this in the [IrBuilder] to ensure the correct
// semantic correlation between arguments and invocation.
CallStructure translateDynamicArguments(ast.NodeList nodeList,
- CallStructure callStructure,
- List<ir.Primitive> arguments) {
+ CallStructure callStructure, List<ir.Primitive> arguments) {
assert(arguments.isEmpty);
for (ast.Node node in nodeList) arguments.add(visit(node));
return normalizeDynamicArguments(callStructure, arguments);
@@ -2335,19 +2201,18 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
// TODO(johnniwinther): Handle this in the [IrBuilder] to ensure the correct
// semantic correlation between arguments and invocation.
- CallStructure translateStaticArguments(ast.NodeList nodeList,
- Element element,
- CallStructure callStructure,
- List<ir.Primitive> arguments) {
+ CallStructure translateStaticArguments(ast.NodeList nodeList, Element element,
+ CallStructure callStructure, List<ir.Primitive> arguments) {
assert(arguments.isEmpty);
for (ast.Node node in nodeList) arguments.add(visit(node));
return normalizeStaticArguments(callStructure, element, arguments);
}
- ir.Primitive translateCallInvoke(ir.Primitive target,
- ast.NodeList argumentsNode,
- CallStructure callStructure,
- SourceInformation sourceInformation) {
+ ir.Primitive translateCallInvoke(
+ ir.Primitive target,
+ ast.NodeList argumentsNode,
+ CallStructure callStructure,
+ SourceInformation sourceInformation) {
List<ir.Primitive> arguments = <ir.Primitive>[];
callStructure =
translateDynamicArguments(argumentsNode, callStructure, arguments);
@@ -2356,14 +2221,10 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive handleConstantInvoke(
- ast.Send node,
- ConstantExpression constant,
- ast.NodeList arguments,
- CallStructure callStructure,
- _) {
- ir.Primitive target = buildConstantExpression(constant,
- sourceInformationBuilder.buildGet(node));
+ ir.Primitive handleConstantInvoke(ast.Send node, ConstantExpression constant,
+ ast.NodeList arguments, CallStructure callStructure, _) {
+ ir.Primitive target = buildConstantExpression(
+ constant, sourceInformationBuilder.buildGet(node));
return translateCallInvoke(target, arguments, callStructure,
sourceInformationBuilder.buildCall(node, arguments));
}
@@ -2376,15 +2237,14 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ast.NodeList argumentsNode,
CallStructure callStructure,
_) {
-
// TODO(sigmund): move these checks down after visiting arguments
// (see issue #25355)
ast.Send send = node.send;
// If an allocation refers to a type using a deferred import prefix (e.g.
// `new lib.A()`), we must ensure that the deferred import has already been
// loaded.
- var prefix = compiler.deferredLoadTask.deferredPrefixElement(
- send, elements);
+ var prefix =
+ compiler.deferredLoadTask.deferredPrefixElement(send, elements);
if (prefix != null) buildCheckDeferredIsLoaded(prefix, send);
// We also emit deferred import checks when using redirecting factories that
@@ -2439,12 +2299,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive handleDynamicInvoke(
- ast.Send node,
- ast.Node receiver,
- ast.NodeList argumentsNode,
- Selector selector,
- _) {
+ ir.Primitive handleDynamicInvoke(ast.Send node, ast.Node receiver,
+ ast.NodeList argumentsNode, Selector selector, _) {
ir.Primitive target = translateReceiver(receiver);
List<ir.Primitive> arguments = <ir.Primitive>[];
CallStructure callStructure = translateDynamicArguments(
@@ -2458,35 +2314,24 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive visitIfNotNullDynamicPropertyInvoke(
- ast.Send node,
- ast.Node receiver,
- ast.NodeList argumentsNode,
- Selector selector,
- _) {
+ ir.Primitive visitIfNotNullDynamicPropertyInvoke(ast.Send node,
+ ast.Node receiver, ast.NodeList argumentsNode, Selector selector, _) {
ir.Primitive target = visit(receiver);
- return irBuilder.buildIfNotNullSend(
- target,
- nested(() {
- List<ir.Primitive> arguments = <ir.Primitive>[];
- CallStructure callStructure = translateDynamicArguments(
- argumentsNode, selector.callStructure, arguments);
- return irBuilder.buildDynamicInvocation(
- target,
- new Selector(selector.kind, selector.memberName, callStructure),
- elements.getTypeMask(node),
- arguments,
- sourceInformationBuilder.buildCall(node, node.selector));
- }),
- sourceInformationBuilder.buildIf(node));
+ return irBuilder.buildIfNotNullSend(target, nested(() {
+ List<ir.Primitive> arguments = <ir.Primitive>[];
+ CallStructure callStructure = translateDynamicArguments(
+ argumentsNode, selector.callStructure, arguments);
+ return irBuilder.buildDynamicInvocation(
+ target,
+ new Selector(selector.kind, selector.memberName, callStructure),
+ elements.getTypeMask(node),
+ arguments,
+ sourceInformationBuilder.buildCall(node, node.selector));
+ }), sourceInformationBuilder.buildIf(node));
}
- ir.Primitive handleLocalInvoke(
- ast.Send node,
- LocalElement element,
- ast.NodeList argumentsNode,
- CallStructure callStructure,
- _) {
+ ir.Primitive handleLocalInvoke(ast.Send node, LocalElement element,
+ ast.NodeList argumentsNode, CallStructure callStructure, _) {
ir.Primitive function = irBuilder.buildLocalGet(element);
List<ir.Primitive> arguments = <ir.Primitive>[];
callStructure =
@@ -2501,40 +2346,26 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive handleStaticFieldInvoke(
- ast.Send node,
- FieldElement field,
- ast.NodeList argumentsNode,
- CallStructure callStructure,
- _) {
+ ir.Primitive handleStaticFieldInvoke(ast.Send node, FieldElement field,
+ ast.NodeList argumentsNode, CallStructure callStructure, _) {
SourceInformation src = sourceInformationBuilder.buildGet(node);
ir.Primitive target = buildStaticFieldGet(field, src);
List<ir.Primitive> arguments = <ir.Primitive>[];
callStructure =
translateDynamicArguments(argumentsNode, callStructure, arguments);
- return irBuilder.buildCallInvocation(
- target,
- callStructure,
- arguments,
+ return irBuilder.buildCallInvocation(target, callStructure, arguments,
sourceInformationBuilder.buildCall(node, argumentsNode));
}
@override
- ir.Primitive handleStaticFunctionInvoke(ast.Send node,
- MethodElement function,
- ast.NodeList argumentsNode,
- CallStructure callStructure,
- _) {
+ ir.Primitive handleStaticFunctionInvoke(ast.Send node, MethodElement function,
+ ast.NodeList argumentsNode, CallStructure callStructure, _) {
if (compiler.backend.isForeign(function)) {
- return handleForeignCode(
- node,
- function,
- argumentsNode,
- callStructure);
+ return handleForeignCode(node, function, argumentsNode, callStructure);
} else {
List<ir.Primitive> arguments = <ir.Primitive>[];
- callStructure = translateStaticArguments(argumentsNode, function,
- callStructure, arguments);
+ callStructure = translateStaticArguments(
+ argumentsNode, function, callStructure, arguments);
Selector selector = new Selector.call(function.memberName, callStructure);
return irBuilder.buildInvokeStatic(function, selector, arguments,
sourceInformationBuilder.buildCall(node, node.selector));
@@ -2546,7 +2377,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ast.Send node,
MethodElement function,
ast.NodeList arguments,
- CallStructure callStructure, _) {
+ CallStructure callStructure,
+ _) {
return irBuilder.buildStaticNoSuchMethod(
elements.getSelector(node),
arguments.nodes.mapToList(visit),
@@ -2554,77 +2386,49 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive handleStaticGetterInvoke(
- ast.Send node,
- FunctionElement getter,
- ast.NodeList argumentsNode,
- CallStructure callStructure,
- _) {
+ ir.Primitive handleStaticGetterInvoke(ast.Send node, FunctionElement getter,
+ ast.NodeList argumentsNode, CallStructure callStructure, _) {
ir.Primitive target = buildStaticGetterGet(
getter, node, sourceInformationBuilder.buildGet(node));
List<ir.Primitive> arguments = <ir.Primitive>[];
callStructure =
translateDynamicArguments(argumentsNode, callStructure, arguments);
- return irBuilder.buildCallInvocation(
- target,
- callStructure,
- arguments,
+ return irBuilder.buildCallInvocation(target, callStructure, arguments,
sourceInformationBuilder.buildCall(node, argumentsNode));
}
@override
- ir.Primitive visitSuperFieldInvoke(
- ast.Send node,
- FieldElement field,
- ast.NodeList argumentsNode,
- CallStructure callStructure,
- _) {
+ ir.Primitive visitSuperFieldInvoke(ast.Send node, FieldElement field,
+ ast.NodeList argumentsNode, CallStructure callStructure, _) {
ir.Primitive target = irBuilder.buildSuperFieldGet(
field, sourceInformationBuilder.buildGet(node));
List<ir.Primitive> arguments = <ir.Primitive>[];
callStructure =
translateDynamicArguments(argumentsNode, callStructure, arguments);
- return irBuilder.buildCallInvocation(
- target,
- callStructure,
- arguments,
+ return irBuilder.buildCallInvocation(target, callStructure, arguments,
sourceInformationBuilder.buildCall(node, argumentsNode));
}
@override
- ir.Primitive visitSuperGetterInvoke(
- ast.Send node,
- FunctionElement getter,
- ast.NodeList argumentsNode,
- CallStructure callStructure,
- _) {
- ir.Primitive target = irBuilder.buildSuperGetterGet(getter,
- sourceInformationBuilder.buildGet(node));
+ ir.Primitive visitSuperGetterInvoke(ast.Send node, FunctionElement getter,
+ ast.NodeList argumentsNode, CallStructure callStructure, _) {
+ ir.Primitive target = irBuilder.buildSuperGetterGet(
+ getter, sourceInformationBuilder.buildGet(node));
List<ir.Primitive> arguments = <ir.Primitive>[];
callStructure =
translateDynamicArguments(argumentsNode, callStructure, arguments);
- return irBuilder.buildCallInvocation(
- target,
- callStructure,
- arguments,
+ return irBuilder.buildCallInvocation(target, callStructure, arguments,
sourceInformationBuilder.buildCall(node, argumentsNode));
}
@override
- ir.Primitive visitSuperMethodInvoke(
- ast.Send node,
- MethodElement method,
- ast.NodeList argumentsNode,
- CallStructure callStructure,
- _) {
+ ir.Primitive visitSuperMethodInvoke(ast.Send node, MethodElement method,
+ ast.NodeList argumentsNode, CallStructure callStructure, _) {
List<ir.Primitive> arguments = <ir.Primitive>[];
- callStructure = translateStaticArguments(argumentsNode, method,
- callStructure, arguments);
- return irBuilder.buildSuperMethodInvocation(
- method,
- callStructure,
- arguments,
- sourceInformationBuilder.buildCall(node, node.selector));
+ callStructure = translateStaticArguments(
+ argumentsNode, method, callStructure, arguments);
+ return irBuilder.buildSuperMethodInvocation(method, callStructure,
+ arguments, sourceInformationBuilder.buildCall(node, node.selector));
}
@override
@@ -2632,10 +2436,11 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ast.Send node,
MethodElement method,
ast.NodeList arguments,
- CallStructure callStructure, _) {
+ CallStructure callStructure,
+ _) {
List<ir.Primitive> normalizedArguments = <ir.Primitive>[];
- CallStructure normalizedCallStructure =
- translateDynamicArguments(arguments, callStructure, normalizedArguments);
+ CallStructure normalizedCallStructure = translateDynamicArguments(
+ arguments, callStructure, normalizedArguments);
return buildSuperNoSuchMethod(
new Selector.call(method.memberName, normalizedCallStructure),
elements.getTypeMask(node),
@@ -2644,11 +2449,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive visitUnresolvedSuperInvoke(
- ast.Send node,
- Element element,
- ast.NodeList argumentsNode,
- Selector selector, _) {
+ ir.Primitive visitUnresolvedSuperInvoke(ast.Send node, Element element,
+ ast.NodeList argumentsNode, Selector selector, _) {
List<ir.Primitive> arguments = <ir.Primitive>[];
CallStructure callStructure = translateDynamicArguments(
argumentsNode, selector.callStructure, arguments);
@@ -2663,14 +2465,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitThisInvoke(
- ast.Send node,
- ast.NodeList arguments,
- CallStructure callStructure,
- _) {
- return translateCallInvoke(
- irBuilder.buildThis(),
- arguments,
- callStructure,
+ ast.Send node, ast.NodeList arguments, CallStructure callStructure, _) {
+ return translateCallInvoke(irBuilder.buildThis(), arguments, callStructure,
sourceInformationBuilder.buildCall(node, arguments));
}
@@ -2691,11 +2487,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitIndexSet(
- ast.SendSet node,
- ast.Node receiver,
- ast.Node index,
- ast.Node rhs,
- _) {
+ ast.SendSet node, ast.Node receiver, ast.Node index, ast.Node rhs, _) {
return irBuilder.buildDynamicIndexSet(
visit(receiver),
elements.getTypeMask(node),
@@ -2705,24 +2497,14 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive visitSuperIndexSet(
- ast.SendSet node,
- FunctionElement function,
- ast.Node index,
- ast.Node rhs,
- _) {
- return irBuilder.buildSuperIndexSet(
- function,
- visit(index),
- visit(rhs),
+ ir.Primitive visitSuperIndexSet(ast.SendSet node, FunctionElement function,
+ ast.Node index, ast.Node rhs, _) {
+ return irBuilder.buildSuperIndexSet(function, visit(index), visit(rhs),
sourceInformationBuilder.buildIndexSet(node));
}
- ir.Primitive translateIfNull(
- ast.SendSet node,
- ir.Primitive getValue(),
- ast.Node rhs,
- void setValue(ir.Primitive value)) {
+ ir.Primitive translateIfNull(ast.SendSet node, ir.Primitive getValue(),
+ ast.Node rhs, void setValue(ir.Primitive value)) {
ir.Primitive value = getValue();
// Unlike other compound operators if-null conditionally will not do the
// assignment operation.
@@ -2730,15 +2512,11 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ir.Primitive newValue = build(rhs);
setValue(newValue);
return newValue;
- }),
- sourceInformationBuilder.buildIf(node));
+ }), sourceInformationBuilder.buildIf(node));
}
- ir.Primitive translateCompounds(
- ast.SendSet node,
- ir.Primitive getValue(),
- CompoundRhs rhs,
- void setValue(ir.Primitive value)) {
+ ir.Primitive translateCompounds(ast.SendSet node, ir.Primitive getValue(),
+ CompoundRhs rhs, void setValue(ir.Primitive value)) {
ir.Primitive value = getValue();
op.BinaryOperator operator = rhs.operator;
assert(operator.kind != op.BinaryOperatorKind.IF_NULL);
@@ -2760,8 +2538,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
sourceInformationBuilder.buildCall(node, node.assignmentOperator);
ir.Primitive result = irBuilder.buildDynamicInvocation(
value,
- new Selector(operatorSelector.kind, operatorSelector.memberName,
- callStructure),
+ new Selector(
+ operatorSelector.kind, operatorSelector.memberName, callStructure),
operatorTypeMask,
arguments,
operatorSourceInformation);
@@ -2769,11 +2547,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
return rhs.kind == CompoundKind.POSTFIX ? value : result;
}
- ir.Primitive translateSetIfNull(
- ast.SendSet node,
- ir.Primitive getValue(),
- ast.Node rhs,
- void setValue(ir.Primitive value)) {
+ ir.Primitive translateSetIfNull(ast.SendSet node, ir.Primitive getValue(),
+ ast.Node rhs, void setValue(ir.Primitive value)) {
ir.Primitive value = getValue();
// Unlike other compound operators if-null conditionally will not do the
// assignment operation.
@@ -2781,8 +2556,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ir.Primitive newValue = build(rhs);
setValue(newValue);
return newValue;
- }),
- sourceInformationBuilder.buildIf(node));
+ }), sourceInformationBuilder.buildIf(node));
}
@override
@@ -2794,66 +2568,64 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ast.Node rhs,
arg,
{bool isGetterValid,
- bool isSetterValid}) {
- return translateSetIfNull(node, () {
- if (isGetterValid) {
- return irBuilder.buildSuperMethodGet(
- indexFunction, sourceInformationBuilder.buildIndex(node));
- } else {
- return buildSuperNoSuchGetter(
- indexFunction,
- elements.getGetterTypeMaskInComplexSendSet(node),
- sourceInformationBuilder.buildIndex(node));
- }
- }, rhs, (ir.Primitive result) {
- if (isSetterValid) {
- return irBuilder.buildSuperMethodGet(
- indexSetFunction, sourceInformationBuilder.buildIndexSet(node));
- } else {
- return buildSuperNoSuchSetter(
- indexSetFunction, elements.getTypeMask(node), result,
- sourceInformationBuilder.buildIndexSet(node));
- }
- });
+ bool isSetterValid}) {
+ return translateSetIfNull(
+ node,
+ () {
+ if (isGetterValid) {
+ return irBuilder.buildSuperMethodGet(
+ indexFunction, sourceInformationBuilder.buildIndex(node));
+ } else {
+ return buildSuperNoSuchGetter(
+ indexFunction,
+ elements.getGetterTypeMaskInComplexSendSet(node),
+ sourceInformationBuilder.buildIndex(node));
+ }
+ },
+ rhs,
+ (ir.Primitive result) {
+ if (isSetterValid) {
+ return irBuilder.buildSuperMethodGet(
+ indexSetFunction, sourceInformationBuilder.buildIndexSet(node));
+ } else {
+ return buildSuperNoSuchSetter(
+ indexSetFunction,
+ elements.getTypeMask(node),
+ result,
+ sourceInformationBuilder.buildIndexSet(node));
+ }
+ });
}
@override
ir.Primitive visitIndexSetIfNull(
- ast.SendSet node,
- ast.Node receiver,
- ast.Node index,
- ast.Node rhs,
- arg) {
+ ast.SendSet node, ast.Node receiver, ast.Node index, ast.Node rhs, arg) {
ir.Primitive target = visit(receiver);
ir.Primitive indexValue = visit(index);
- return translateSetIfNull(node, () {
- Selector selector = new Selector.index();
- List<ir.Primitive> arguments = <ir.Primitive>[indexValue];
- CallStructure callStructure =
- normalizeDynamicArguments(selector.callStructure, arguments);
- return irBuilder.buildDynamicInvocation(
- target,
- new Selector(selector.kind, selector.memberName, callStructure),
- elements.getGetterTypeMaskInComplexSendSet(node),
- arguments,
- sourceInformationBuilder.buildCall(receiver, node));
- }, rhs, (ir.Primitive result) {
- irBuilder.buildDynamicIndexSet(
- target,
- elements.getTypeMask(node),
- indexValue,
- result,
- sourceInformationBuilder.buildIndexSet(node));
- });
+ return translateSetIfNull(
+ node,
+ () {
+ Selector selector = new Selector.index();
+ List<ir.Primitive> arguments = <ir.Primitive>[indexValue];
+ CallStructure callStructure =
+ normalizeDynamicArguments(selector.callStructure, arguments);
+ return irBuilder.buildDynamicInvocation(
+ target,
+ new Selector(selector.kind, selector.memberName, callStructure),
+ elements.getGetterTypeMaskInComplexSendSet(node),
+ arguments,
+ sourceInformationBuilder.buildCall(receiver, node));
+ },
+ rhs,
+ (ir.Primitive result) {
+ irBuilder.buildDynamicIndexSet(target, elements.getTypeMask(node),
+ indexValue, result, sourceInformationBuilder.buildIndexSet(node));
+ });
}
@override
ir.Primitive handleDynamicSet(
- ast.SendSet node,
- ast.Node receiver,
- Name name,
- ast.Node rhs,
- _) {
+ ast.SendSet node, ast.Node receiver, Name name, ast.Node rhs, _) {
return irBuilder.buildDynamicSet(
translateReceiver(receiver),
new Selector.setter(name),
@@ -2864,11 +2636,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitIfNotNullDynamicPropertySet(
- ast.SendSet node,
- ast.Node receiver,
- Name name,
- ast.Node rhs,
- _) {
+ ast.SendSet node, ast.Node receiver, Name name, ast.Node rhs, _) {
ir.Primitive target = visit(receiver);
return irBuilder.buildIfNotNullSend(
target,
@@ -2883,116 +2651,95 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive handleLocalSet(
- ast.SendSet node,
- LocalElement element,
- ast.Node rhs,
- _) {
+ ast.SendSet node, LocalElement element, ast.Node rhs, _) {
ir.Primitive value = visit(rhs);
value = checkTypeVsElement(value, element);
- return irBuilder.buildLocalVariableSet(element, value,
- sourceInformationBuilder.buildAssignment(node));
+ return irBuilder.buildLocalVariableSet(
+ element, value, sourceInformationBuilder.buildAssignment(node));
}
@override
ir.Primitive handleStaticFieldSet(
- ast.SendSet node,
- FieldElement field,
- ast.Node rhs,
- _) {
+ ast.SendSet node, FieldElement field, ast.Node rhs, _) {
ir.Primitive value = visit(rhs);
- irBuilder.addPrimitive(new ir.SetStatic(field, value,
- sourceInformationBuilder.buildAssignment(node)));
+ irBuilder.addPrimitive(new ir.SetStatic(
+ field, value, sourceInformationBuilder.buildAssignment(node)));
return value;
}
@override
ir.Primitive visitSuperFieldSet(
- ast.SendSet node,
- FieldElement field,
- ast.Node rhs,
- _) {
- return irBuilder.buildSuperFieldSet(field, visit(rhs),
- sourceInformationBuilder.buildAssignment(node));
+ ast.SendSet node, FieldElement field, ast.Node rhs, _) {
+ return irBuilder.buildSuperFieldSet(
+ field, visit(rhs), sourceInformationBuilder.buildAssignment(node));
}
@override
ir.Primitive visitSuperSetterSet(
- ast.SendSet node,
- FunctionElement setter,
- ast.Node rhs,
- _) {
- return irBuilder.buildSuperSetterSet(setter, visit(rhs),
- sourceInformationBuilder.buildAssignment(node));
+ ast.SendSet node, FunctionElement setter, ast.Node rhs, _) {
+ return irBuilder.buildSuperSetterSet(
+ setter, visit(rhs), sourceInformationBuilder.buildAssignment(node));
}
@override
ir.Primitive visitUnresolvedSuperIndexSet(
- ast.Send node,
- Element element,
- ast.Node index,
- ast.Node rhs,
- arg) {
+ ast.Send node, Element element, ast.Node index, ast.Node rhs, arg) {
return giveup(node, 'visitUnresolvedSuperIndexSet');
}
@override
ir.Primitive handleStaticSetterSet(
- ast.SendSet node,
- FunctionElement setter,
- ast.Node rhs,
- _) {
- return irBuilder.buildStaticSetterSet(setter, visit(rhs),
- sourceInformationBuilder.buildAssignment(node));
+ ast.SendSet node, FunctionElement setter, ast.Node rhs, _) {
+ return irBuilder.buildStaticSetterSet(
+ setter, visit(rhs), sourceInformationBuilder.buildAssignment(node));
}
@override
ir.Primitive handleTypeLiteralConstantCompounds(
- ast.SendSet node,
- ConstantExpression constant,
- CompoundRhs rhs,
- arg) {
+ ast.SendSet node, ConstantExpression constant, CompoundRhs rhs, arg) {
SourceInformation src = sourceInformationBuilder.buildGet(node);
- return translateCompounds(node, () {
- return buildConstantExpression(constant, src);
- }, rhs, (ir.Primitive value) {
- // The binary operator will throw before this.
- });
+ return translateCompounds(
+ node,
+ () {
+ return buildConstantExpression(constant, src);
+ },
+ rhs,
+ (ir.Primitive value) {
+ // The binary operator will throw before this.
+ });
}
@override
ir.Primitive handleTypeLiteralConstantSetIfNulls(
- ast.SendSet node,
- ConstantExpression constant,
- ast.Node rhs,
- _) {
+ ast.SendSet node, ConstantExpression constant, ast.Node rhs, _) {
// The type literal is never `null`.
- return buildConstantExpression(constant,
- sourceInformationBuilder.buildGet(node));
+ return buildConstantExpression(
+ constant, sourceInformationBuilder.buildGet(node));
}
@override
ir.Primitive handleDynamicCompounds(
- ast.SendSet node,
- ast.Node receiver,
- Name name,
- CompoundRhs rhs,
- arg) {
+ ast.SendSet node, ast.Node receiver, Name name, CompoundRhs rhs, arg) {
ir.Primitive target = translateReceiver(receiver);
ir.Primitive helper() {
- return translateCompounds(node, () {
- return irBuilder.buildDynamicGet(
- target,
- new Selector.getter(name),
- elements.getGetterTypeMaskInComplexSendSet(node),
- sourceInformationBuilder.buildGet(node));
- }, rhs, (ir.Primitive result) {
- irBuilder.buildDynamicSet(
- target,
- new Selector.setter(name),
- elements.getTypeMask(node),
- result,
- sourceInformationBuilder.buildAssignment(node));
- });
+ return translateCompounds(
+ node,
+ () {
+ return irBuilder.buildDynamicGet(
+ target,
+ new Selector.getter(name),
+ elements.getGetterTypeMaskInComplexSendSet(node),
+ sourceInformationBuilder.buildGet(node));
+ },
+ rhs,
+ (ir.Primitive result) {
+ irBuilder.buildDynamicSet(
+ target,
+ new Selector.setter(name),
+ elements.getTypeMask(node),
+ result,
+ sourceInformationBuilder.buildAssignment(node));
+ });
}
return node.isConditional
? irBuilder.buildIfNotNullSend(
@@ -3002,27 +2749,27 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive handleDynamicSetIfNulls(
- ast.Send node,
- ast.Node receiver,
- Name name,
- ast.Node rhs,
- _) {
+ ast.Send node, ast.Node receiver, Name name, ast.Node rhs, _) {
ir.Primitive target = translateReceiver(receiver);
ir.Primitive helper() {
- return translateSetIfNull(node, () {
- return irBuilder.buildDynamicGet(
- target,
- new Selector.getter(name),
- elements.getGetterTypeMaskInComplexSendSet(node),
- sourceInformationBuilder.buildGet(node));
- }, rhs, (ir.Primitive result) {
- irBuilder.buildDynamicSet(
- target,
- new Selector.setter(name),
- elements.getTypeMask(node),
- result,
- sourceInformationBuilder.buildAssignment(node));
- });
+ return translateSetIfNull(
+ node,
+ () {
+ return irBuilder.buildDynamicGet(
+ target,
+ new Selector.getter(name),
+ elements.getGetterTypeMaskInComplexSendSet(node),
+ sourceInformationBuilder.buildGet(node));
+ },
+ rhs,
+ (ir.Primitive result) {
+ irBuilder.buildDynamicSet(
+ target,
+ new Selector.setter(name),
+ elements.getTypeMask(node),
+ result,
+ sourceInformationBuilder.buildAssignment(node));
+ });
}
return node.isConditional
? irBuilder.buildIfNotNullSend(
@@ -3030,9 +2777,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
: helper();
}
- ir.Primitive buildLocalNoSuchSetter(
- LocalElement local,
- ir.Primitive value,
+ ir.Primitive buildLocalNoSuchSetter(LocalElement local, ir.Primitive value,
SourceInformation sourceInformation) {
Selector selector = new Selector.setter(
new Name(local.name, local.library, isSetter: true));
@@ -3042,51 +2787,50 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive handleLocalCompounds(
- ast.SendSet node,
- LocalElement local,
- CompoundRhs rhs,
- arg,
+ ast.SendSet node, LocalElement local, CompoundRhs rhs, arg,
{bool isSetterValid}) {
- return translateCompounds(node, () {
- return irBuilder.buildLocalGet(local);
- }, rhs, (ir.Primitive result) {
- if (isSetterValid) {
- irBuilder.buildLocalVariableSet(
- local, result,
- sourceInformationBuilder.buildAssignment(node));
- } else {
- Selector selector = new Selector.setter(
- new Name(local.name, local.library, isSetter: true));
- irBuilder.buildStaticNoSuchMethod(
- selector, <ir.Primitive>[result],
- sourceInformationBuilder.buildAssignment(node));
- }
- });
+ return translateCompounds(
+ node,
+ () {
+ return irBuilder.buildLocalGet(local);
+ },
+ rhs,
+ (ir.Primitive result) {
+ if (isSetterValid) {
+ irBuilder.buildLocalVariableSet(
+ local, result, sourceInformationBuilder.buildAssignment(node));
+ } else {
+ Selector selector = new Selector.setter(
+ new Name(local.name, local.library, isSetter: true));
+ irBuilder.buildStaticNoSuchMethod(selector, <ir.Primitive>[result],
+ sourceInformationBuilder.buildAssignment(node));
+ }
+ });
}
@override
ir.Primitive handleLocalSetIfNulls(
- ast.SendSet node,
- LocalElement local,
- ast.Node rhs,
- _,
+ ast.SendSet node, LocalElement local, ast.Node rhs, _,
{bool isSetterValid}) {
- return translateSetIfNull(node, () {
- return irBuilder.buildLocalGet(
- local, sourceInformation: sourceInformationBuilder.buildGet(node));
- }, rhs, (ir.Primitive result) {
- SourceInformation sourceInformation =
- sourceInformationBuilder.buildAssignment(node);
- if (isSetterValid) {
- irBuilder.buildLocalVariableSet(
- local, result, sourceInformation);
- } else {
- Selector selector = new Selector.setter(
- new Name(local.name, local.library, isSetter: true));
- irBuilder.buildStaticNoSuchMethod(
- selector, <ir.Primitive>[result], sourceInformation);
- }
- });
+ return translateSetIfNull(
+ node,
+ () {
+ return irBuilder.buildLocalGet(local,
+ sourceInformation: sourceInformationBuilder.buildGet(node));
+ },
+ rhs,
+ (ir.Primitive result) {
+ SourceInformation sourceInformation =
+ sourceInformationBuilder.buildAssignment(node);
+ if (isSetterValid) {
+ irBuilder.buildLocalVariableSet(local, result, sourceInformation);
+ } else {
+ Selector selector = new Selector.setter(
+ new Name(local.name, local.library, isSetter: true));
+ irBuilder.buildStaticNoSuchMethod(
+ selector, <ir.Primitive>[result], sourceInformation);
+ }
+ });
}
@override
@@ -3098,42 +2842,46 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
CompoundSetter setterKind,
CompoundRhs rhs,
arg) {
- return translateCompounds(node, () {
- SourceInformation sourceInformation =
- sourceInformationBuilder.buildGet(node);
- switch (getterKind) {
- case CompoundGetter.FIELD:
- return buildStaticFieldGet(getter, sourceInformation);
- case CompoundGetter.GETTER:
- return buildStaticGetterGet(getter, node, sourceInformation);
- case CompoundGetter.METHOD:
- return irBuilder.addPrimitive(new ir.GetStatic(getter,
- sourceInformation: sourceInformation, isFinal: true));
- case CompoundGetter.UNRESOLVED:
- return irBuilder.buildStaticNoSuchMethod(
- new Selector.getter(new Name(getter.name, getter.library)),
- <ir.Primitive>[],
- sourceInformation);
- }
- }, rhs, (ir.Primitive result) {
- SourceInformation sourceInformation =
- sourceInformationBuilder.buildAssignment(node);
- switch (setterKind) {
- case CompoundSetter.FIELD:
- irBuilder.addPrimitive(
- new ir.SetStatic(setter, result, sourceInformation));
- return;
- case CompoundSetter.SETTER:
- irBuilder.buildStaticSetterSet(setter, result, sourceInformation);
- return;
- case CompoundSetter.INVALID:
- irBuilder.buildStaticNoSuchMethod(
- new Selector.setter(new Name(setter.name, setter.library)),
- <ir.Primitive>[result],
- sourceInformation);
- return;
- }
- });
+ return translateCompounds(
+ node,
+ () {
+ SourceInformation sourceInformation =
+ sourceInformationBuilder.buildGet(node);
+ switch (getterKind) {
+ case CompoundGetter.FIELD:
+ return buildStaticFieldGet(getter, sourceInformation);
+ case CompoundGetter.GETTER:
+ return buildStaticGetterGet(getter, node, sourceInformation);
+ case CompoundGetter.METHOD:
+ return irBuilder.addPrimitive(new ir.GetStatic(getter,
+ sourceInformation: sourceInformation, isFinal: true));
+ case CompoundGetter.UNRESOLVED:
+ return irBuilder.buildStaticNoSuchMethod(
+ new Selector.getter(new Name(getter.name, getter.library)),
+ <ir.Primitive>[],
+ sourceInformation);
+ }
+ },
+ rhs,
+ (ir.Primitive result) {
+ SourceInformation sourceInformation =
+ sourceInformationBuilder.buildAssignment(node);
+ switch (setterKind) {
+ case CompoundSetter.FIELD:
+ irBuilder.addPrimitive(
+ new ir.SetStatic(setter, result, sourceInformation));
+ return;
+ case CompoundSetter.SETTER:
+ irBuilder.buildStaticSetterSet(setter, result, sourceInformation);
+ return;
+ case CompoundSetter.INVALID:
+ irBuilder.buildStaticNoSuchMethod(
+ new Selector.setter(new Name(setter.name, setter.library)),
+ <ir.Primitive>[result],
+ sourceInformation);
+ return;
+ }
+ });
}
@override
@@ -3145,49 +2893,50 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
CompoundSetter setterKind,
ast.Node rhs,
_) {
- return translateSetIfNull(node, () {
- SourceInformation sourceInformation =
- sourceInformationBuilder.buildGet(node);
- switch (getterKind) {
- case CompoundGetter.FIELD:
- return buildStaticFieldGet(getter, sourceInformation);
- case CompoundGetter.GETTER:
- return buildStaticGetterGet(getter, node, sourceInformation);
- case CompoundGetter.METHOD:
- return irBuilder.addPrimitive(new ir.GetStatic(getter,
- sourceInformation: sourceInformation,
- isFinal: true));
- case CompoundGetter.UNRESOLVED:
- return irBuilder.buildStaticNoSuchMethod(
- new Selector.getter(new Name(getter.name, getter.library)),
- <ir.Primitive>[],
- sourceInformation);
- }
- }, rhs, (ir.Primitive result) {
- SourceInformation sourceInformation =
- sourceInformationBuilder.buildAssignment(node);
- switch (setterKind) {
- case CompoundSetter.FIELD:
- irBuilder.addPrimitive(new ir.SetStatic(
- setter, result, sourceInformation));
- return;
- case CompoundSetter.SETTER:
- irBuilder.buildStaticSetterSet(setter, result, sourceInformation);
- return;
- case CompoundSetter.INVALID:
- irBuilder.buildStaticNoSuchMethod(
- new Selector.setter(new Name(setter.name, setter.library)),
- <ir.Primitive>[result],
- sourceInformation);
- return;
- }
- });
+ return translateSetIfNull(
+ node,
+ () {
+ SourceInformation sourceInformation =
+ sourceInformationBuilder.buildGet(node);
+ switch (getterKind) {
+ case CompoundGetter.FIELD:
+ return buildStaticFieldGet(getter, sourceInformation);
+ case CompoundGetter.GETTER:
+ return buildStaticGetterGet(getter, node, sourceInformation);
+ case CompoundGetter.METHOD:
+ return irBuilder.addPrimitive(new ir.GetStatic(getter,
+ sourceInformation: sourceInformation, isFinal: true));
+ case CompoundGetter.UNRESOLVED:
+ return irBuilder.buildStaticNoSuchMethod(
+ new Selector.getter(new Name(getter.name, getter.library)),
+ <ir.Primitive>[],
+ sourceInformation);
+ }
+ },
+ rhs,
+ (ir.Primitive result) {
+ SourceInformation sourceInformation =
+ sourceInformationBuilder.buildAssignment(node);
+ switch (setterKind) {
+ case CompoundSetter.FIELD:
+ irBuilder.addPrimitive(
+ new ir.SetStatic(setter, result, sourceInformation));
+ return;
+ case CompoundSetter.SETTER:
+ irBuilder.buildStaticSetterSet(setter, result, sourceInformation);
+ return;
+ case CompoundSetter.INVALID:
+ irBuilder.buildStaticNoSuchMethod(
+ new Selector.setter(new Name(setter.name, setter.library)),
+ <ir.Primitive>[result],
+ sourceInformation);
+ return;
+ }
+ });
}
ir.Primitive buildSuperNoSuchGetter(
- Element element,
- TypeMask mask,
- SourceInformation sourceInformation) {
+ Element element, TypeMask mask, SourceInformation sourceInformation) {
return buildSuperNoSuchMethod(
new Selector.getter(new Name(element.name, element.library)),
mask,
@@ -3195,11 +2944,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
sourceInformation);
}
- ir.Primitive buildSuperNoSuchSetter(
- Element element,
- TypeMask mask,
- ir.Primitive value,
- SourceInformation sourceInformation) {
+ ir.Primitive buildSuperNoSuchSetter(Element element, TypeMask mask,
+ ir.Primitive value, SourceInformation sourceInformation) {
return buildSuperNoSuchMethod(
new Selector.setter(new Name(element.name, element.library)),
mask,
@@ -3216,39 +2962,43 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
CompoundSetter setterKind,
CompoundRhs rhs,
arg) {
- return translateCompounds(node, () {
- switch (getterKind) {
- case CompoundGetter.FIELD:
- return irBuilder.buildSuperFieldGet(
- getter, sourceInformationBuilder.buildGet(node));
- case CompoundGetter.GETTER:
- return irBuilder.buildSuperGetterGet(
- getter, sourceInformationBuilder.buildGet(node));
- case CompoundGetter.METHOD:
- return irBuilder.buildSuperMethodGet(
- getter, sourceInformationBuilder.buildGet(node));
- case CompoundGetter.UNRESOLVED:
- return buildSuperNoSuchGetter(
- getter, elements.getGetterTypeMaskInComplexSendSet(node),
- sourceInformationBuilder.buildGet(node));
- }
- }, rhs, (ir.Primitive result) {
- switch (setterKind) {
- case CompoundSetter.FIELD:
- irBuilder.buildSuperFieldSet(setter, result,
- sourceInformationBuilder.buildAssignment(node));
- return;
- case CompoundSetter.SETTER:
- irBuilder.buildSuperSetterSet(setter, result,
- sourceInformationBuilder.buildAssignment(node));
- return;
- case CompoundSetter.INVALID:
- buildSuperNoSuchSetter(
- setter, elements.getTypeMask(node), result,
- sourceInformationBuilder.buildAssignment(node));
- return;
- }
- });
+ return translateCompounds(
+ node,
+ () {
+ switch (getterKind) {
+ case CompoundGetter.FIELD:
+ return irBuilder.buildSuperFieldGet(
+ getter, sourceInformationBuilder.buildGet(node));
+ case CompoundGetter.GETTER:
+ return irBuilder.buildSuperGetterGet(
+ getter, sourceInformationBuilder.buildGet(node));
+ case CompoundGetter.METHOD:
+ return irBuilder.buildSuperMethodGet(
+ getter, sourceInformationBuilder.buildGet(node));
+ case CompoundGetter.UNRESOLVED:
+ return buildSuperNoSuchGetter(
+ getter,
+ elements.getGetterTypeMaskInComplexSendSet(node),
+ sourceInformationBuilder.buildGet(node));
+ }
+ },
+ rhs,
+ (ir.Primitive result) {
+ switch (setterKind) {
+ case CompoundSetter.FIELD:
+ irBuilder.buildSuperFieldSet(setter, result,
+ sourceInformationBuilder.buildAssignment(node));
+ return;
+ case CompoundSetter.SETTER:
+ irBuilder.buildSuperSetterSet(setter, result,
+ sourceInformationBuilder.buildAssignment(node));
+ return;
+ case CompoundSetter.INVALID:
+ buildSuperNoSuchSetter(setter, elements.getTypeMask(node), result,
+ sourceInformationBuilder.buildAssignment(node));
+ return;
+ }
+ });
}
@override
@@ -3260,98 +3010,92 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
CompoundSetter setterKind,
ast.Node rhs,
_) {
- return translateSetIfNull(node, () {
- switch (getterKind) {
- case CompoundGetter.FIELD:
- return irBuilder.buildSuperFieldGet(
- getter, sourceInformationBuilder.buildGet(node));
- case CompoundGetter.GETTER:
- return irBuilder.buildSuperGetterGet(
- getter, sourceInformationBuilder.buildGet(node));
- case CompoundGetter.METHOD:
- return irBuilder.buildSuperMethodGet(
- getter, sourceInformationBuilder.buildGet(node));
- case CompoundGetter.UNRESOLVED:
- return buildSuperNoSuchGetter(
- getter,
- elements.getGetterTypeMaskInComplexSendSet(node),
- sourceInformationBuilder.buildGet(node));
- }
- }, rhs, (ir.Primitive result) {
- switch (setterKind) {
- case CompoundSetter.FIELD:
- irBuilder.buildSuperFieldSet(
- setter, result,
- sourceInformationBuilder.buildAssignment(node));
- return;
- case CompoundSetter.SETTER:
- irBuilder.buildSuperSetterSet(
- setter, result,
- sourceInformationBuilder.buildAssignment(node));
- return;
- case CompoundSetter.INVALID:
- buildSuperNoSuchSetter(
- setter, elements.getTypeMask(node), result,
- sourceInformationBuilder.buildAssignment(node));
- return;
- }
- });
+ return translateSetIfNull(
+ node,
+ () {
+ switch (getterKind) {
+ case CompoundGetter.FIELD:
+ return irBuilder.buildSuperFieldGet(
+ getter, sourceInformationBuilder.buildGet(node));
+ case CompoundGetter.GETTER:
+ return irBuilder.buildSuperGetterGet(
+ getter, sourceInformationBuilder.buildGet(node));
+ case CompoundGetter.METHOD:
+ return irBuilder.buildSuperMethodGet(
+ getter, sourceInformationBuilder.buildGet(node));
+ case CompoundGetter.UNRESOLVED:
+ return buildSuperNoSuchGetter(
+ getter,
+ elements.getGetterTypeMaskInComplexSendSet(node),
+ sourceInformationBuilder.buildGet(node));
+ }
+ },
+ rhs,
+ (ir.Primitive result) {
+ switch (setterKind) {
+ case CompoundSetter.FIELD:
+ irBuilder.buildSuperFieldSet(setter, result,
+ sourceInformationBuilder.buildAssignment(node));
+ return;
+ case CompoundSetter.SETTER:
+ irBuilder.buildSuperSetterSet(setter, result,
+ sourceInformationBuilder.buildAssignment(node));
+ return;
+ case CompoundSetter.INVALID:
+ buildSuperNoSuchSetter(setter, elements.getTypeMask(node), result,
+ sourceInformationBuilder.buildAssignment(node));
+ return;
+ }
+ });
}
@override
- ir.Primitive handleTypeVariableTypeLiteralCompounds(
- ast.SendSet node,
- TypeVariableElement typeVariable,
- CompoundRhs rhs,
- arg) {
- return translateCompounds(node, () {
- return irBuilder.buildReifyTypeVariable(
- typeVariable.type,
- sourceInformationBuilder.buildGet(node));
- }, rhs, (ir.Primitive value) {
- // The binary operator will throw before this.
- });
+ ir.Primitive handleTypeVariableTypeLiteralCompounds(ast.SendSet node,
+ TypeVariableElement typeVariable, CompoundRhs rhs, arg) {
+ return translateCompounds(
+ node,
+ () {
+ return irBuilder.buildReifyTypeVariable(
+ typeVariable.type, sourceInformationBuilder.buildGet(node));
+ },
+ rhs,
+ (ir.Primitive value) {
+ // The binary operator will throw before this.
+ });
}
@override
ir.Primitive visitTypeVariableTypeLiteralSetIfNull(
- ast.Send node,
- TypeVariableElement element,
- ast.Node rhs,
- _) {
+ ast.Send node, TypeVariableElement element, ast.Node rhs, _) {
// The type variable is never `null`.
- return translateTypeVariableTypeLiteral(element,
- sourceInformationBuilder.buildGet(node));
+ return translateTypeVariableTypeLiteral(
+ element, sourceInformationBuilder.buildGet(node));
}
@override
- ir.Primitive handleIndexCompounds(
- ast.SendSet node,
- ast.Node receiver,
- ast.Node index,
- CompoundRhs rhs,
- arg) {
+ ir.Primitive handleIndexCompounds(ast.SendSet node, ast.Node receiver,
+ ast.Node index, CompoundRhs rhs, arg) {
ir.Primitive target = visit(receiver);
ir.Primitive indexValue = visit(index);
- return translateCompounds(node, () {
- Selector selector = new Selector.index();
- List<ir.Primitive> arguments = <ir.Primitive>[indexValue];
- CallStructure callStructure =
- normalizeDynamicArguments(selector.callStructure, arguments);
- return irBuilder.buildDynamicInvocation(
- target,
- new Selector(selector.kind, selector.memberName, callStructure),
- elements.getGetterTypeMaskInComplexSendSet(node),
- arguments,
- sourceInformationBuilder.buildCall(receiver, node));
- }, rhs, (ir.Primitive result) {
- irBuilder.buildDynamicIndexSet(
- target,
- elements.getTypeMask(node),
- indexValue,
- result,
- sourceInformationBuilder.buildIndexSet(node));
- });
+ return translateCompounds(
+ node,
+ () {
+ Selector selector = new Selector.index();
+ List<ir.Primitive> arguments = <ir.Primitive>[indexValue];
+ CallStructure callStructure =
+ normalizeDynamicArguments(selector.callStructure, arguments);
+ return irBuilder.buildDynamicInvocation(
+ target,
+ new Selector(selector.kind, selector.memberName, callStructure),
+ elements.getGetterTypeMaskInComplexSendSet(node),
+ arguments,
+ sourceInformationBuilder.buildCall(receiver, node));
+ },
+ rhs,
+ (ir.Primitive result) {
+ irBuilder.buildDynamicIndexSet(target, elements.getTypeMask(node),
+ indexValue, result, sourceInformationBuilder.buildIndexSet(node));
+ });
}
@override
@@ -3363,42 +3107,41 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
CompoundRhs rhs,
arg,
{bool isGetterValid,
- bool isSetterValid}) {
+ bool isSetterValid}) {
ir.Primitive indexValue = visit(index);
- return translateCompounds(node, () {
- if (isGetterValid) {
- return irBuilder.buildSuperIndex(
- indexFunction,
- indexValue,
- sourceInformationBuilder.buildIndex(node));
- } else {
- return buildSuperNoSuchMethod(
- new Selector.index(),
- elements.getGetterTypeMaskInComplexSendSet(node),
- <ir.Primitive>[indexValue],
- sourceInformationBuilder.buildIndex(node));
- }
- }, rhs, (ir.Primitive result) {
- if (isSetterValid) {
- irBuilder.buildSuperIndexSet(indexSetFunction, indexValue, result,
- sourceInformationBuilder.buildIndexSet(node));
- } else {
- buildSuperNoSuchMethod(
- new Selector.indexSet(),
- elements.getTypeMask(node),
- <ir.Primitive>[indexValue, result],
- sourceInformationBuilder.buildIndexSet(node));
- }
- });
+ return translateCompounds(
+ node,
+ () {
+ if (isGetterValid) {
+ return irBuilder.buildSuperIndex(indexFunction, indexValue,
+ sourceInformationBuilder.buildIndex(node));
+ } else {
+ return buildSuperNoSuchMethod(
+ new Selector.index(),
+ elements.getGetterTypeMaskInComplexSendSet(node),
+ <ir.Primitive>[indexValue],
+ sourceInformationBuilder.buildIndex(node));
+ }
+ },
+ rhs,
+ (ir.Primitive result) {
+ if (isSetterValid) {
+ irBuilder.buildSuperIndexSet(indexSetFunction, indexValue, result,
+ sourceInformationBuilder.buildIndexSet(node));
+ } else {
+ buildSuperNoSuchMethod(
+ new Selector.indexSet(),
+ elements.getTypeMask(node),
+ <ir.Primitive>[indexValue, result],
+ sourceInformationBuilder.buildIndexSet(node));
+ }
+ });
}
/// Build code to handle foreign code, that is, native JavaScript code, or
/// builtin values and operations of the backend.
- ir.Primitive handleForeignCode(ast.Send node,
- MethodElement function,
- ast.NodeList argumentList,
- CallStructure callStructure) {
-
+ ir.Primitive handleForeignCode(ast.Send node, MethodElement function,
+ ast.NodeList argumentList, CallStructure callStructure) {
void validateArgumentCount({int minimum, int exactly}) {
assert((minimum == null) != (exactly == null));
int count = 0;
@@ -3420,15 +3163,14 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
/// Call a helper method from the isolate library. The isolate library uses
/// its own isolate structure, that encapsulates dart2js's isolate.
- ir.Primitive buildIsolateHelperInvocation(MethodElement element,
- CallStructure callStructure) {
+ ir.Primitive buildIsolateHelperInvocation(
+ MethodElement element, CallStructure callStructure) {
if (element == null) {
- reporter.internalError(node,
- 'Isolate library and compiler mismatch.');
+ reporter.internalError(node, 'Isolate library and compiler mismatch.');
}
List<ir.Primitive> arguments = <ir.Primitive>[];
- callStructure = translateStaticArguments(argumentList, element,
- callStructure, arguments);
+ callStructure = translateStaticArguments(
+ argumentList, element, callStructure, arguments);
Selector selector = new Selector.call(element.memberName, callStructure);
return irBuilder.buildInvokeStatic(element, selector, arguments,
sourceInformationBuilder.buildCall(node, node.selector));
@@ -3457,9 +3199,9 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
}
- Link<ast.Node> argumentNodes = argumentList.nodes;
+ Link<ast.Node> argumentNodes = argumentList.nodes;
NativeBehavior behavior =
- compiler.enqueuer.resolution.nativeEnqueuer.getNativeBehaviorOf(node);
+ compiler.enqueuer.resolution.nativeEnqueuer.getNativeBehaviorOf(node);
switch (function.name) {
case 'JS':
validateArgumentCount(minimum: 2);
@@ -3467,13 +3209,12 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
// which already have been analyzed by the resolver and can be retrieved
// using [NativeBehavior]. We can ignore these arguments in the backend.
List<ir.Primitive> arguments =
- argumentNodes.skip(2).mapToList(visit, growable: false);
+ argumentNodes.skip(2).mapToList(visit, growable: false);
if (behavior.codeTemplate.positionalArgumentCount != arguments.length) {
- reporter.reportErrorMessage(
- node, MessageKind.GENERIC,
- {'text':
- 'Mismatch between number of placeholders'
- ' and number of arguments.'});
+ reporter.reportErrorMessage(node, MessageKind.GENERIC, {
+ 'text': 'Mismatch between number of placeholders'
+ ' and number of arguments.'
+ });
return irBuilder.buildNullConstant();
}
@@ -3494,12 +3235,11 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ast.Node argument = node.arguments.single;
FunctionElement closure = elements[argument].implementation;
if (!Elements.isStaticOrTopLevelFunction(closure)) {
- internalError(argument,
- 'only static or toplevel function supported');
+ internalError(argument, 'only static or toplevel function supported');
}
if (closure.functionSignature.hasOptionalParameters) {
- internalError(argument,
- 'closures with optional parameters not supported');
+ internalError(
+ argument, 'closures with optional parameters not supported');
}
return irBuilder.buildForeignCode(
js.js.expressionTemplateYielding(
@@ -3510,19 +3250,19 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
dependency: closure);
case 'JS_BUILTIN':
- // The first argument is a description of the type and effect of the
- // builtin, which has already been analyzed in the frontend. The second
- // argument must be a [JsBuiltin] value. All other arguments are
- // values used by the JavaScript template that is associated with the
- // builtin.
+ // The first argument is a description of the type and effect of the
+ // builtin, which has already been analyzed in the frontend. The second
+ // argument must be a [JsBuiltin] value. All other arguments are
+ // values used by the JavaScript template that is associated with the
+ // builtin.
validateArgumentCount(minimum: 2);
ast.Node builtin = argumentNodes.tail.head;
- JsBuiltin value = getEnumValue(builtin, helpers.jsBuiltinEnum,
- JsBuiltin.values);
+ JsBuiltin value =
+ getEnumValue(builtin, helpers.jsBuiltinEnum, JsBuiltin.values);
js.Template template = backend.emitter.builtinTemplateFor(value);
List<ir.Primitive> arguments =
- argumentNodes.skip(2).mapToList(visit, growable: false);
+ argumentNodes.skip(2).mapToList(visit, growable: false);
return irBuilder.buildForeignCode(template, arguments, behavior,
sourceInformationBuilder.buildForeignCode(node));
@@ -3531,7 +3271,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
String name = expectStringConstant(argumentNodes.tail.head);
js.Expression access =
- backend.emitter.generateEmbeddedGlobalAccess(name);
+ backend.emitter.generateEmbeddedGlobalAccess(name);
js.Template template = js.js.expressionTemplateYielding(access);
return irBuilder.buildForeignCode(template, <ir.Primitive>[], behavior,
sourceInformationBuilder.buildForeignCode(node));
@@ -3544,7 +3284,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
if (argumentValue is ir.Constant && argumentValue.value.isType) {
TypeConstantValue constant = argumentValue.value;
ConstantValue interceptorValue =
- new InterceptorConstantValue(constant.representedType);
+ new InterceptorConstantValue(constant.representedType);
return irBuilder.buildConstant(interceptorValue);
}
return internalError(argument, 'expected Type as argument');
@@ -3556,12 +3296,11 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
validateArgumentCount(exactly: 1);
ast.Node argument = argumentNodes.head;
- JsGetName id = getEnumValue(argument, helpers.jsGetNameEnum,
- JsGetName.values);
+ JsGetName id =
+ getEnumValue(argument, helpers.jsGetNameEnum, JsGetName.values);
js.Name name = backend.namer.getNameForJsGetName(argument, id);
- ConstantValue nameConstant =
- new SyntheticConstantValue(SyntheticConstantKind.NAME,
- js.js.quoteName(name));
+ ConstantValue nameConstant = new SyntheticConstantValue(
+ SyntheticConstantKind.NAME, js.js.quoteName(name));
return irBuilder.buildConstant(nameConstant);
@@ -3585,8 +3324,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
case 'JS_STRING_CONCAT':
validateArgumentCount(exactly: 2);
List<ir.Primitive> arguments = argumentNodes.mapToList(visit);
- return irBuilder.buildStringConcatenation(arguments,
- sourceInformationBuilder.buildForeignCode(node));
+ return irBuilder.buildStringConcatenation(
+ arguments, sourceInformationBuilder.buildForeignCode(node));
case 'JS_CURRENT_ISOLATE_CONTEXT':
validateArgumentCount(exactly: 0);
@@ -3596,8 +3335,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
// to fetch the current isolate.
continue getStaticState;
}
- return buildIsolateHelperInvocation(helpers.currentIsolate,
- CallStructure.NO_ARGS);
+ return buildIsolateHelperInvocation(
+ helpers.currentIsolate, CallStructure.NO_ARGS);
getStaticState: case 'JS_GET_STATIC_STATE':
validateArgumentCount(exactly: 0);
@@ -3624,12 +3363,14 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
if (!compiler.hasIsolateSupport) {
ir.Primitive closure = visit(argumentNodes.tail.head);
- return irBuilder.buildCallInvocation(closure, CallStructure.NO_ARGS,
+ return irBuilder.buildCallInvocation(
+ closure,
+ CallStructure.NO_ARGS,
const <ir.Primitive>[],
sourceInformationBuilder.buildForeignCode(node));
}
- return buildIsolateHelperInvocation(helpers.callInIsolate,
- CallStructure.TWO_ARGS);
+ return buildIsolateHelperInvocation(
+ helpers.callInIsolate, CallStructure.TWO_ARGS);
default:
return giveup(node, 'unplemented native construct: ${function.name}');
@@ -3669,22 +3410,21 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
assert(irBuilder.isOpen);
List<ir.Primitive> parts = <ir.Primitive>[];
buildStringParts(node, parts);
- return irBuilder.buildStringConcatenation(parts,
- sourceInformationBuilder.buildStringInterpolation(node));
+ return irBuilder.buildStringConcatenation(
+ parts, sourceInformationBuilder.buildStringInterpolation(node));
}
ir.Primitive visitStringInterpolation(ast.StringInterpolation node) {
assert(irBuilder.isOpen);
List<ir.Primitive> parts = <ir.Primitive>[];
buildStringParts(node, parts);
- return irBuilder.buildStringConcatenation(parts,
- sourceInformationBuilder.buildStringInterpolation(node));
+ return irBuilder.buildStringConcatenation(
+ parts, sourceInformationBuilder.buildStringInterpolation(node));
}
ir.Primitive translateConstant(ast.Node node) {
assert(irBuilder.isOpen);
- return irBuilder.buildConstant(
- getConstantForNode(node),
+ return irBuilder.buildConstant(getConstantForNode(node),
sourceInformation: sourceInformationBuilder.buildGet(node));
}
@@ -3695,16 +3435,13 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
return irBuilder.buildNonTailThrow(visit(node.expression));
}
- ir.Primitive buildSuperNoSuchMethod(
- Selector selector,
- TypeMask mask,
- List<ir.Primitive> arguments,
- SourceInformation sourceInformation) {
+ ir.Primitive buildSuperNoSuchMethod(Selector selector, TypeMask mask,
+ List<ir.Primitive> arguments, SourceInformation sourceInformation) {
ClassElement cls = elements.analyzedElement.enclosingClass;
MethodElement element = cls.lookupSuperMember(Identifiers.noSuchMethod_);
if (!Selectors.noSuchMethod_.signatureApplies(element)) {
- element = compiler.coreClasses.objectClass.lookupMember(
- Identifiers.noSuchMethod_);
+ element = compiler.coreClasses.objectClass
+ .lookupMember(Identifiers.noSuchMethod_);
}
return irBuilder.buildSuperMethodInvocation(
element,
@@ -3714,11 +3451,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive visitUnresolvedCompound(
- ast.Send node,
- Element element,
- op.AssignmentOperator operator,
- ast.Node rhs, _) {
+ ir.Primitive visitUnresolvedCompound(ast.Send node, Element element,
+ op.AssignmentOperator operator, ast.Node rhs, _) {
return irBuilder.buildStaticNoSuchMethod(
new Selector.getter(new Name(element.name, element.library)),
[],
@@ -3731,14 +3465,13 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
Element element,
DartType type,
ast.NodeList arguments,
- Selector selector, _) {
+ Selector selector,
+ _) {
// If the class is missing it's a runtime error.
ir.Primitive message =
irBuilder.buildStringConstant("Unresolved class: '${element.name}'");
- return irBuilder.buildStaticFunctionInvocation(
- helpers.throwRuntimeError,
- <ir.Primitive>[message],
- sourceInformationBuilder.buildNew(node));
+ return irBuilder.buildStaticFunctionInvocation(helpers.throwRuntimeError,
+ <ir.Primitive>[message], sourceInformationBuilder.buildNew(node));
}
@override
@@ -3747,7 +3480,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
Element constructor,
DartType type,
ast.NodeList argumentsNode,
- Selector selector, _) {
+ Selector selector,
+ _) {
// If the class is there but the constructor is missing, it's an NSM error.
List<ir.Primitive> arguments = <ir.Primitive>[];
CallStructure callStructure = translateDynamicArguments(
@@ -3764,30 +3498,26 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ConstructorElement constructor,
DartType type,
ast.NodeList argumentsNode,
- CallStructure callStructure, _) {
+ CallStructure callStructure,
+ _) {
List<ir.Primitive> arguments = <ir.Primitive>[];
callStructure =
translateDynamicArguments(argumentsNode, callStructure, arguments);
return irBuilder.buildStaticNoSuchMethod(
- new Selector.call(constructor.memberName, callStructure), arguments,
+ new Selector.call(constructor.memberName, callStructure),
+ arguments,
sourceInformationBuilder.buildNew(node));
}
@override
- ir.Primitive visitUnresolvedGet(
- ast.Send node,
- Element element, _) {
- return irBuilder.buildStaticNoSuchMethod(
- elements.getSelector(node), [],
+ ir.Primitive visitUnresolvedGet(ast.Send node, Element element, _) {
+ return irBuilder.buildStaticNoSuchMethod(elements.getSelector(node), [],
sourceInformationBuilder.buildGet(node));
}
@override
- ir.Primitive visitUnresolvedInvoke(
- ast.Send node,
- Element element,
- ast.NodeList arguments,
- Selector selector, _) {
+ ir.Primitive visitUnresolvedInvoke(ast.Send node, Element element,
+ ast.NodeList arguments, Selector selector, _) {
return irBuilder.buildStaticNoSuchMethod(
elements.getSelector(node),
arguments.nodes.mapToList(visit),
@@ -3796,11 +3526,12 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitUnresolvedRedirectingFactoryConstructorInvoke(
- ast.NewExpression node,
- ConstructorElement constructor,
- InterfaceType type,
- ast.NodeList argumentsNode,
- CallStructure callStructure, _) {
+ ast.NewExpression node,
+ ConstructorElement constructor,
+ InterfaceType type,
+ ast.NodeList argumentsNode,
+ CallStructure callStructure,
+ _) {
String nameString = Elements.reconstructConstructorName(constructor);
Name name = new Name(nameString, constructor.library);
List<ir.Primitive> arguments = <ir.Primitive>[];
@@ -3814,31 +3545,25 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitUnresolvedSet(
- ast.Send node,
- Element element,
- ast.Node rhs, _) {
+ ast.Send node, Element element, ast.Node rhs, _) {
return irBuilder.buildStaticNoSuchMethod(elements.getSelector(node),
- [visit(rhs)],
- sourceInformationBuilder.buildAssignment(node));
+ [visit(rhs)], sourceInformationBuilder.buildAssignment(node));
}
@override
ir.Primitive visitUnresolvedSuperIndex(
- ast.Send node,
- Element function,
- ast.Node index, _) {
+ ast.Send node, Element function, ast.Node index, _) {
// Assume the index getter is missing.
return buildSuperNoSuchMethod(
- new Selector.index(), elements.getTypeMask(node), [visit(index)],
+ new Selector.index(),
+ elements.getTypeMask(node),
+ [visit(index)],
sourceInformationBuilder.buildIndex(node));
}
@override
- ir.Primitive visitUnresolvedSuperBinary(
- ast.Send node,
- Element element,
- op.BinaryOperator operator,
- ast.Node argument, _) {
+ ir.Primitive visitUnresolvedSuperBinary(ast.Send node, Element element,
+ op.BinaryOperator operator, ast.Node argument, _) {
return buildSuperNoSuchMethod(
elements.getSelector(node),
elements.getTypeMask(node),
@@ -3848,11 +3573,11 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitUnresolvedSuperUnary(
- ast.Send node,
- op.UnaryOperator operator,
- Element element, _) {
+ ast.Send node, op.UnaryOperator operator, Element element, _) {
return buildSuperNoSuchMethod(
- elements.getSelector(node), elements.getTypeMask(node), [],
+ elements.getSelector(node),
+ elements.getTypeMask(node),
+ [],
sourceInformationBuilder.buildCall(node, node.selector));
}
@@ -3868,9 +3593,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitClassTypeLiteralSet(
- ast.SendSet node,
- TypeConstantExpression constant,
- ast.Node rhs, _) {
+ ast.SendSet node, TypeConstantExpression constant, ast.Node rhs, _) {
InterfaceType type = constant.type;
ClassElement element = type.element;
return irBuilder.buildStaticNoSuchMethod(
@@ -3881,9 +3604,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitTypedefTypeLiteralSet(
- ast.SendSet node,
- TypeConstantExpression constant,
- ast.Node rhs, _) {
+ ast.SendSet node, TypeConstantExpression constant, ast.Node rhs, _) {
TypedefType type = constant.type;
TypedefElement element = type.element;
return irBuilder.buildStaticNoSuchMethod(
@@ -3894,21 +3615,19 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitTypeVariableTypeLiteralSet(
- ast.SendSet node,
- TypeVariableElement element,
- ast.Node rhs, _) {
+ ast.SendSet node, TypeVariableElement element, ast.Node rhs, _) {
return irBuilder.buildStaticNoSuchMethod(
- new Selector.setter(element.memberName), [visit(rhs)],
+ new Selector.setter(element.memberName),
+ [visit(rhs)],
sourceInformationBuilder.buildAssignment(node));
}
@override
ir.Primitive visitDynamicTypeLiteralSet(
- ast.SendSet node,
- ConstantExpression constant,
- ast.Node rhs, _) {
+ ast.SendSet node, ConstantExpression constant, ast.Node rhs, _) {
return irBuilder.buildStaticNoSuchMethod(
- new Selector.setter(Names.dynamic_), [visit(rhs)],
+ new Selector.setter(Names.dynamic_),
+ [visit(rhs)],
sourceInformationBuilder.buildAssignment(node));
}
@@ -3918,7 +3637,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ConstructorElement element,
InterfaceType type,
ast.NodeList arguments,
- CallStructure callStructure, _) {
+ CallStructure callStructure,
+ _) {
for (ast.Node argument in arguments) visit(argument);
ir.Primitive name =
irBuilder.buildStringConstant(element.enclosingClass.name);
@@ -3930,9 +3650,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive handleFinalStaticFieldSet(
- ast.SendSet node,
- FieldElement field,
- ast.Node rhs, _) {
+ ast.SendSet node, FieldElement field, ast.Node rhs, _) {
// TODO(asgerf): Include class name somehow for static class members?
return irBuilder.buildStaticNoSuchMethod(
new Selector.setter(field.memberName),
@@ -3942,9 +3660,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitFinalSuperFieldSet(
- ast.SendSet node,
- FieldElement field,
- ast.Node rhs, _) {
+ ast.SendSet node, FieldElement field, ast.Node rhs, _) {
return buildSuperNoSuchMethod(
new Selector.setter(field.memberName),
elements.getTypeMask(node),
@@ -3954,9 +3670,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive handleImmutableLocalSet(
- ast.SendSet node,
- LocalElement local,
- ast.Node rhs, _) {
+ ast.SendSet node, LocalElement local, ast.Node rhs, _) {
return irBuilder.buildStaticNoSuchMethod(
new Selector.setter(new Name(local.name, local.library)),
[visit(rhs)],
@@ -3965,10 +3679,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive handleStaticFunctionSet(
- ast.Send node,
- MethodElement function,
- ast.Node rhs,
- _) {
+ ast.Send node, MethodElement function, ast.Node rhs, _) {
return irBuilder.buildStaticNoSuchMethod(
new Selector.setter(function.memberName),
[visit(rhs)],
@@ -3977,10 +3688,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive handleStaticGetterSet(
- ast.SendSet node,
- GetterElement getter,
- ast.Node rhs,
- _) {
+ ast.SendSet node, GetterElement getter, ast.Node rhs, _) {
return irBuilder.buildStaticNoSuchMethod(
new Selector.setter(getter.memberName),
[visit(rhs)],
@@ -3988,10 +3696,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive handleStaticSetterGet(
- ast.Send node,
- SetterElement setter,
- _) {
+ ir.Primitive handleStaticSetterGet(ast.Send node, SetterElement setter, _) {
return irBuilder.buildStaticNoSuchMethod(
new Selector.getter(setter.memberName),
[],
@@ -3999,11 +3704,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive handleStaticSetterInvoke(
- ast.Send node,
- SetterElement setter,
- ast.NodeList argumentsNode,
- CallStructure callStructure, _) {
+ ir.Primitive handleStaticSetterInvoke(ast.Send node, SetterElement setter,
+ ast.NodeList argumentsNode, CallStructure callStructure, _) {
// Translate as a method call.
List<ir.Primitive> arguments = argumentsNode.nodes.mapToList(visit);
return irBuilder.buildStaticNoSuchMethod(
@@ -4014,10 +3716,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitSuperGetterSet(
- ast.SendSet node,
- GetterElement getter,
- ast.Node rhs,
- _) {
+ ast.SendSet node, GetterElement getter, ast.Node rhs, _) {
return buildSuperNoSuchMethod(
new Selector.setter(getter.memberName),
elements.getTypeMask(node),
@@ -4027,10 +3726,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
@override
ir.Primitive visitSuperMethodSet(
- ast.Send node,
- MethodElement method,
- ast.Node rhs,
- _) {
+ ast.Send node, MethodElement method, ast.Node rhs, _) {
return buildSuperNoSuchMethod(
new Selector.setter(method.memberName),
elements.getTypeMask(node),
@@ -4039,9 +3735,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive visitSuperSetterGet(
- ast.Send node,
- SetterElement setter, _) {
+ ir.Primitive visitSuperSetterGet(ast.Send node, SetterElement setter, _) {
return buildSuperNoSuchMethod(
new Selector.getter(setter.memberName),
elements.getTypeMask(node),
@@ -4050,11 +3744,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
@override
- ir.Primitive visitSuperSetterInvoke(
- ast.Send node,
- SetterElement setter,
- ast.NodeList argumentsNode,
- CallStructure callStructure, _) {
+ ir.Primitive visitSuperSetterInvoke(ast.Send node, SetterElement setter,
+ ast.NodeList argumentsNode, CallStructure callStructure, _) {
List<ir.Primitive> arguments = <ir.Primitive>[];
callStructure =
translateDynamicArguments(argumentsNode, callStructure, arguments);
@@ -4068,7 +3759,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ir.FunctionDefinition nullIfGiveup(ir.FunctionDefinition action()) {
try {
return action();
- } catch(e) {
+ } catch (e) {
if (e == ABORT_IRNODE_BUILDER) {
return null;
}
@@ -4297,7 +3988,7 @@ class GlobalProgramInformation {
}
TypeMask getTypeMaskForNativeFunction(FunctionElement function) {
- return _compiler.typesTask.getGuaranteedReturnTypeOfElement(function);
+ return _compiler.typesTask.getGuaranteedReturnTypeOfElement(function);
}
FieldElement locateSingleField(Selector selector, TypeMask type) {
@@ -4324,13 +4015,13 @@ class GlobalProgramInformation {
bool isJsInterop(FunctionElement element) => _backend.isJsInterop(element);
bool isJsInteropAnonymous(FunctionElement element) =>
- _backend.jsInteropAnalysis.hasAnonymousAnnotation(element.contextClass);
+ _backend.jsInteropAnalysis.hasAnonymousAnnotation(element.contextClass);
String getJsInteropTargetPath(FunctionElement element) {
return '${_backend.namer.fixedBackendPath(element)}.'
- '${_backend.nativeData.getFixedBackendName(element)}';
+ '${_backend.nativeData.getFixedBackendName(element)}';
}
DartType get jsJavascriptObjectType =>
- _backend.helpers.jsJavaScriptObjectClass.thisType;
+ _backend.helpers.jsJavaScriptObjectClass.thisType;
}
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698