Index: pkg/compiler/lib/src/resolution/members.dart |
diff --git a/pkg/compiler/lib/src/resolution/members.dart b/pkg/compiler/lib/src/resolution/members.dart |
index b72dba8ae19031d22902ccae954fd38fb13aa8d4..2bda4fe090638daab0fbd36703c35d58436d35e6 100644 |
--- a/pkg/compiler/lib/src/resolution/members.dart |
+++ b/pkg/compiler/lib/src/resolution/members.dart |
@@ -5,71 +5,51 @@ |
library dart2js.resolution.members; |
import '../common.dart'; |
-import '../common/names.dart' show |
- Selectors; |
-import '../common/resolution.dart' show |
- Feature; |
-import '../compiler.dart' show |
- Compiler; |
-import '../constants/constructors.dart' show |
- RedirectingFactoryConstantConstructor; |
+import '../common/names.dart' show Selectors; |
+import '../common/resolution.dart' show Feature; |
+import '../compiler.dart' show Compiler; |
+import '../constants/constructors.dart' |
+ show RedirectingFactoryConstantConstructor; |
import '../constants/expressions.dart'; |
import '../constants/values.dart'; |
import '../core_types.dart'; |
import '../dart_types.dart'; |
import '../elements/elements.dart'; |
-import '../elements/modelx.dart' show |
- ConstructorElementX, |
- ErroneousElementX, |
- FunctionElementX, |
- JumpTargetX, |
- LocalFunctionElementX, |
- LocalParameterElementX, |
- LocalVariableElementX, |
- MethodElementX, |
- ParameterElementX, |
- VariableElementX, |
- VariableList; |
-import '../tokens/token.dart' show |
- isUserDefinableOperator; |
+import '../elements/modelx.dart' |
+ show |
+ ConstructorElementX, |
+ ErroneousElementX, |
+ FunctionElementX, |
+ JumpTargetX, |
+ LocalFunctionElementX, |
+ LocalParameterElementX, |
+ LocalVariableElementX, |
+ MethodElementX, |
+ ParameterElementX, |
+ VariableElementX, |
+ VariableList; |
+import '../tokens/token.dart' show isUserDefinableOperator; |
import '../tree/tree.dart'; |
-import '../util/util.dart' show |
- Link; |
-import '../universe/call_structure.dart' show |
- CallStructure; |
-import '../universe/selector.dart' show |
- Selector; |
-import '../universe/use.dart' show |
- DynamicUse, |
- StaticUse, |
- TypeUse; |
+import '../util/util.dart' show Link; |
+import '../universe/call_structure.dart' show CallStructure; |
+import '../universe/selector.dart' show Selector; |
+import '../universe/use.dart' show DynamicUse, StaticUse, TypeUse; |
import 'access_semantics.dart'; |
import 'class_members.dart' show MembersCreator; |
import 'operators.dart'; |
import 'send_structure.dart'; |
-import 'constructors.dart' show |
- ConstructorResolver, |
- ConstructorResult, |
- ConstructorResultKind; |
-import 'label_scope.dart' show |
- StatementScope; |
-import 'registry.dart' show |
- ResolutionRegistry; |
-import 'resolution.dart' show |
- ResolverTask; |
-import 'resolution_common.dart' show |
- MappingVisitor; |
+import 'constructors.dart' |
+ show ConstructorResolver, ConstructorResult, ConstructorResultKind; |
+import 'label_scope.dart' show StatementScope; |
+import 'registry.dart' show ResolutionRegistry; |
+import 'resolution.dart' show ResolverTask; |
+import 'resolution_common.dart' show MappingVisitor; |
import 'resolution_result.dart'; |
-import 'scope.dart' show |
- BlockScope, |
- MethodScope, |
- Scope; |
-import 'signatures.dart' show |
- SignatureResolver; |
-import 'variables.dart' show |
- VariableDefinitionsVisitor; |
+import 'scope.dart' show BlockScope, MethodScope, Scope; |
+import 'signatures.dart' show SignatureResolver; |
+import 'variables.dart' show VariableDefinitionsVisitor; |
/// The state of constants in resolutions. |
enum ConstantState { |
@@ -120,8 +100,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
bool sendIsMemberAccess = false; |
StatementScope statementScope; |
- int allowedCategory = ElementCategory.VARIABLE | ElementCategory.FUNCTION |
- | ElementCategory.IMPLIES_TYPE; |
+ int allowedCategory = ElementCategory.VARIABLE | |
+ ElementCategory.FUNCTION | |
+ ElementCategory.IMPLIES_TYPE; |
/// When visiting the type declaration of the variable in a [ForIn] loop, |
/// the initializer of the variable is implicit and we should not emit an |
@@ -135,59 +116,60 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
bool isPotentiallyMutableTarget(Element target) { |
if (target == null) return false; |
return (target.isVariable || target.isParameter) && |
- !(target.isFinal || target.isConst); |
+ !(target.isFinal || target.isConst); |
} |
// TODO(ahe): Find a way to share this with runtime implementation. |
static final RegExp symbolValidationPattern = |
new RegExp(r'^(?:[a-zA-Z$][a-zA-Z$0-9_]*\.)*(?:[a-zA-Z$][a-zA-Z$0-9_]*=?|' |
- r'-|' |
- r'unary-|' |
- r'\[\]=|' |
- r'~|' |
- r'==|' |
- r'\[\]|' |
- r'\*|' |
- r'/|' |
- r'%|' |
- r'~/|' |
- r'\+|' |
- r'<<|' |
- r'>>|' |
- r'>=|' |
- r'>|' |
- r'<=|' |
- r'<|' |
- r'&|' |
- r'\^|' |
- r'\|' |
- r')$'); |
- |
- ResolverVisitor(Compiler compiler, |
- Element element, |
- ResolutionRegistry registry, |
- {bool useEnclosingScope: false}) |
- : this.enclosingElement = element, |
- // When the element is a field, we are actually resolving its |
- // initial value, which should not have access to instance |
- // fields. |
- inInstanceContext = (element.isInstanceMember && !element.isField) |
- || element.isGenerativeConstructor, |
- this.currentClass = element.isClassMember ? element.enclosingClass |
- : null, |
- this.statementScope = new StatementScope(), |
- scope = useEnclosingScope |
- ? Scope.buildEnclosingScope(element) : element.buildScope(), |
- // The type annotations on a typedef do not imply type checks. |
- // TODO(karlklose): clean this up (dartbug.com/8870). |
- inCheckContext = compiler.options.enableTypeAssertions && |
- !element.isLibrary && |
- !element.isTypedef && |
- !element.enclosingElement.isTypedef, |
- inCatchBlock = false, |
- constantState = element.isConst |
- ? ConstantState.CONSTANT : ConstantState.NON_CONSTANT, |
- super(compiler, registry); |
+ r'-|' |
+ r'unary-|' |
+ r'\[\]=|' |
+ r'~|' |
+ r'==|' |
+ r'\[\]|' |
+ r'\*|' |
+ r'/|' |
+ r'%|' |
+ r'~/|' |
+ r'\+|' |
+ r'<<|' |
+ r'>>|' |
+ r'>=|' |
+ r'>|' |
+ r'<=|' |
+ r'<|' |
+ r'&|' |
+ r'\^|' |
+ r'\|' |
+ r')$'); |
+ |
+ ResolverVisitor( |
+ Compiler compiler, Element element, ResolutionRegistry registry, |
+ {bool useEnclosingScope: false}) |
+ : this.enclosingElement = element, |
+ // When the element is a field, we are actually resolving its |
+ // initial value, which should not have access to instance |
+ // fields. |
+ inInstanceContext = (element.isInstanceMember && !element.isField) || |
+ element.isGenerativeConstructor, |
+ this.currentClass = |
+ element.isClassMember ? element.enclosingClass : null, |
+ this.statementScope = new StatementScope(), |
+ scope = useEnclosingScope |
+ ? Scope.buildEnclosingScope(element) |
+ : element.buildScope(), |
+ // The type annotations on a typedef do not imply type checks. |
+ // TODO(karlklose): clean this up (dartbug.com/8870). |
+ inCheckContext = compiler.options.enableTypeAssertions && |
+ !element.isLibrary && |
+ !element.isTypedef && |
+ !element.enclosingElement.isTypedef, |
+ inCatchBlock = false, |
+ constantState = element.isConst |
+ ? ConstantState.CONSTANT |
+ : ConstantState.NON_CONSTANT, |
+ super(compiler, registry); |
CoreClasses get coreClasses => compiler.coreClasses; |
@@ -207,17 +189,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
reporter.reportErrorMessage( |
node, MessageKind.NO_INSTANCE_AVAILABLE, {'name': name}); |
return new ErroneousElementX(MessageKind.NO_INSTANCE_AVAILABLE, |
- {'name': name}, |
- name, enclosingElement); |
+ {'name': name}, name, enclosingElement); |
} else if (result.isAmbiguous) { |
AmbiguousElement ambiguous = result; |
return reportAndCreateErroneousElement( |
- node, |
- name, |
- ambiguous.messageKind, |
- ambiguous.messageArguments, |
- infos: ambiguous.computeInfos(enclosingElement, reporter), |
- isError: true); |
+ node, name, ambiguous.messageKind, ambiguous.messageArguments, |
+ infos: ambiguous.computeInfos(enclosingElement, reporter), |
+ isError: true); |
} |
} |
return result; |
@@ -227,9 +205,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
JumpTarget getOrDefineTarget(Node statement) { |
JumpTarget element = registry.getTargetDefinition(statement); |
if (element == null) { |
- element = new JumpTargetX(statement, |
- statementScope.nestingLevel, |
- enclosingElement); |
+ element = new JumpTargetX( |
+ statement, statementScope.nestingLevel, enclosingElement); |
registry.defineTarget(statement, element); |
} |
return element; |
@@ -242,8 +219,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return result; |
} |
- inStaticContext(action(), |
- {bool inConstantInitializer: false}) { |
+ inStaticContext(action(), {bool inConstantInitializer: false}) { |
bool wasInstanceContext = inInstanceContext; |
ConstantState oldConstantState = constantState; |
constantState = inConstantInitializer |
@@ -257,9 +233,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
ResolutionResult visitInStaticContext(Node node, |
- {bool inConstantInitializer: false}) { |
- return inStaticContext( |
- () => visit(node), |
+ {bool inConstantInitializer: false}) { |
+ return inStaticContext(() => visit(node), |
inConstantInitializer: inConstantInitializer); |
} |
@@ -286,12 +261,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
ErroneousElement reportAndCreateErroneousElement( |
- Node node, |
- String name, |
- MessageKind kind, |
- Map arguments, |
+ Node node, String name, MessageKind kind, Map arguments, |
{List<DiagnosticMessage> infos: const <DiagnosticMessage>[], |
- bool isError: false}) { |
+ bool isError: false}) { |
if (isError) { |
reporter.reportError( |
reporter.createMessage(node, kind, arguments), infos); |
@@ -311,7 +283,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
ErroneousElement reportCannotResolve(Node node, String name) { |
assert(invariant(node, !inInstanceContext, |
message: "ResolverVisitor.reportCannotResolve must not be called in " |
- "instance context.")); |
+ "instance context.")); |
// We report an error within initializers because `this` is implicitly |
// accessed when unqualified identifiers are not resolved. For |
@@ -320,8 +292,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// ... |
// If `i` does not occur inside a top level or static function, `i` |
// is equivalent to `this.id(a1 , ...)`. |
- bool inInitializer = |
- enclosingElement.isGenerativeConstructor || |
+ bool inInitializer = enclosingElement.isGenerativeConstructor || |
(enclosingElement.isInstanceMember && enclosingElement.isField); |
MessageKind kind; |
Map arguments = {'name': name}; |
@@ -339,8 +310,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
kind = MessageKind.CANNOT_RESOLVE; |
} |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
- return reportAndCreateErroneousElement( |
- node, name, kind, arguments, isError: inInitializer); |
+ return reportAndCreateErroneousElement(node, name, kind, arguments, |
+ isError: inInitializer); |
} |
ResolutionResult visitIdentifier(Identifier node) { |
@@ -352,12 +323,10 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return const NoneResult(); |
} else if (node.isSuper()) { |
if (!inInstanceContext) { |
- reporter.reportErrorMessage( |
- node, MessageKind.NO_SUPER_IN_STATIC); |
+ reporter.reportErrorMessage(node, MessageKind.NO_SUPER_IN_STATIC); |
} |
if ((ElementCategory.SUPER & allowedCategory) == 0) { |
- reporter.reportErrorMessage( |
- node, MessageKind.INVALID_USE_OF_SUPER); |
+ reporter.reportErrorMessage(node, MessageKind.INVALID_USE_OF_SUPER); |
} |
return const NoneResult(); |
} else { |
@@ -379,10 +348,10 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// Use the malformed element. |
} else { |
if ((element.kind.category & allowedCategory) == 0) { |
- element = reportAndCreateErroneousElement( |
- node, name, MessageKind.GENERIC, |
- // TODO(ahe): Improve error message. Need UX input. |
- {'text': "is not an expression $element"}); |
+ element = |
+ reportAndCreateErroneousElement(node, name, MessageKind.GENERIC, |
+ // TODO(ahe): Improve error message. Need UX input. |
+ {'text': "is not an expression $element"}); |
} |
} |
if (!Elements.isUnresolved(element) && element.isClass) { |
@@ -430,8 +399,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
Link<Node> initializers = node.initializers.nodes; |
if (!initializers.isEmpty && |
Initializers.isConstructorRedirect(initializers.head)) { |
- Name name = |
- getRedirectingThisOrSuperConstructorName(initializers.head); |
+ Name name = getRedirectingThisOrSuperConstructorName(initializers.head); |
final ClassElement classElement = constructor.enclosingClass; |
return classElement.lookupConstructor(name.text); |
} |
@@ -440,16 +408,15 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
void setupFunction(FunctionExpression node, FunctionElement function) { |
Element enclosingElement = function.enclosingElement; |
- if (node.modifiers.isStatic && |
- enclosingElement.kind != ElementKind.CLASS) { |
+ if (node.modifiers.isStatic && enclosingElement.kind != ElementKind.CLASS) { |
reporter.reportErrorMessage(node, MessageKind.ILLEGAL_STATIC); |
} |
scope = new MethodScope(scope, function); |
// Put the parameters in scope. |
FunctionSignature functionParameters = function.functionSignature; |
- Link<Node> parameterNodes = (node.parameters == null) |
- ? const Link<Node>() : node.parameters.nodes; |
+ Link<Node> parameterNodes = |
+ (node.parameters == null) ? const Link<Node>() : node.parameters.nodes; |
functionParameters.forEachParameter((ParameterElementX element) { |
// TODO(karlklose): should be a list of [FormalElement]s, but the actual |
// implementation uses [Element]. |
@@ -482,8 +449,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
parameterNodes = parameterNodes.tail; |
}); |
addDeferredAction(enclosingElement, () { |
- functionParameters.forEachOptionalParameter( |
- (ParameterElementX parameter) { |
+ functionParameters |
+ .forEachOptionalParameter((ParameterElementX parameter) { |
parameter.constant = |
compiler.resolver.constantCompiler.compileConstant(parameter); |
}); |
@@ -581,7 +548,6 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return const NoneResult(); |
} |
- |
/// Process a local function declaration or an anonymous function expression. |
/// |
/// [inFunctionDeclaration] is `true` when the current node is the immediate |
@@ -589,15 +555,12 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// |
/// This is used to distinguish local function declarations from anonymous |
/// function expressions. |
- ResolutionResult visitFunctionExpression( |
- FunctionExpression node, |
+ ResolutionResult visitFunctionExpression(FunctionExpression node, |
{bool inFunctionDeclaration: false}) { |
bool doAddToScope = inFunctionDeclaration; |
if (!inFunctionDeclaration && node.name != null) { |
- reporter.reportErrorMessage( |
- node.name, |
- MessageKind.NAMED_FUNCTION_EXPRESSION, |
- {'name': node.name}); |
+ reporter.reportErrorMessage(node.name, |
+ MessageKind.NAMED_FUNCTION_EXPRESSION, {'name': node.name}); |
} |
visit(node.returnType); |
String name; |
@@ -607,15 +570,10 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
name = node.name.asIdentifier().source; |
} |
LocalFunctionElementX function = new LocalFunctionElementX( |
- name, node, ElementKind.FUNCTION, Modifiers.EMPTY, |
- enclosingElement); |
+ name, node, ElementKind.FUNCTION, Modifiers.EMPTY, enclosingElement); |
ResolverTask.processAsyncMarker(compiler, function, registry); |
function.functionSignature = SignatureResolver.analyze( |
- compiler, |
- node.parameters, |
- node.returnType, |
- function, |
- registry, |
+ compiler, node.parameters, node.returnType, function, registry, |
createRealParameters: true, |
isFunctionExpression: !inFunctionDeclaration); |
checkLocalDefinitionName(node, function); |
@@ -643,15 +601,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
ResolutionResult visitIf(If node) { |
doInPromotionScope(node.condition.expression, () => visit(node.condition)); |
- doInPromotionScope(node.thenPart, |
- () => visitIn(node.thenPart, new BlockScope(scope))); |
+ doInPromotionScope( |
+ node.thenPart, () => visitIn(node.thenPart, new BlockScope(scope))); |
visitIn(node.elsePart, new BlockScope(scope)); |
return const NoneResult(); |
} |
- static Selector computeSendSelector(Send node, |
- LibraryElement library, |
- Element element) { |
+ static Selector computeSendSelector( |
+ Send node, LibraryElement library, Element element) { |
// First determine if this is part of an assignment. |
bool isSet = node.asSendSet() != null; |
@@ -663,9 +620,12 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
String source = node.selector.asOperator().source; |
String string = source; |
if (identical(string, '!') || |
- identical(string, '&&') || identical(string, '||') || |
- identical(string, 'is') || identical(string, 'as') || |
- identical(string, '?') || identical(string, '??')) { |
+ identical(string, '&&') || |
+ identical(string, '||') || |
+ identical(string, 'is') || |
+ identical(string, 'as') || |
+ identical(string, '?') || |
+ identical(string, '??')) { |
return null; |
} |
String op = source; |
@@ -674,8 +634,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
if (op == null) { |
// Unsupported operator. An error has been reported during parsing. |
- return new Selector.call( |
- new Name(source, library), |
+ return new Selector.call(new Name(source, library), |
new CallStructure.unnamed(node.argumentsNode.slowLength())); |
} |
return node.arguments.isEmpty |
@@ -686,8 +645,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
Identifier identifier = node.selector.asIdentifier(); |
if (node.isPropertyAccess) { |
assert(!isSet); |
- return new Selector.getter( |
- new Name(identifier.source, library)); |
+ return new Selector.getter(new Name(identifier.source, library)); |
} else if (isSet) { |
return new Selector.setter( |
new Name(identifier.source, library, isSetter: true)); |
@@ -716,7 +674,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return (identifier == null) |
? new Selector.callClosure(arity, named) |
: new Selector.call(new Name(identifier.source, library), |
- new CallStructure(arity, named)); |
+ new CallStructure(arity, named)); |
} |
Selector resolveSelector(Send node, Element element) { |
@@ -749,9 +707,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
namedArguments.add(source); |
if (seenNamedArguments.containsKey(source)) { |
reportDuplicateDefinition( |
- source, |
- argument, |
- seenNamedArguments[source]); |
+ source, argument, seenNamedArguments[source]); |
isValidAsConstant = false; |
} else { |
seenNamedArguments[source] = namedArgument; |
@@ -765,8 +721,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
sendIsMemberAccess = oldSendIsMemberAccess; |
return new ArgumentsResult( |
- new CallStructure(argumentCount, namedArguments), |
- argumentResults, |
+ new CallStructure(argumentCount, namedArguments), argumentResults, |
isValidAsConstant: isValidAsConstant); |
} |
@@ -775,8 +730,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
AccessSemantics checkSuperAccess(Send node) { |
if (!inInstanceContext) { |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, 'super', |
- MessageKind.NO_SUPER_IN_STATIC, {}, |
+ node, 'super', MessageKind.NO_SUPER_IN_STATIC, {}, |
isError: true); |
registry.registerFeature(Feature.COMPILE_TIME_ERROR); |
return new StaticAccess.invalid(error); |
@@ -784,8 +738,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (node.isConditional) { |
// `super?.foo` is not allowed. |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, 'super', |
- MessageKind.INVALID_USE_OF_SUPER, {}, |
+ node, 'super', MessageKind.INVALID_USE_OF_SUPER, {}, |
isError: true); |
registry.registerFeature(Feature.COMPILE_TIME_ERROR); |
return new StaticAccess.invalid(error); |
@@ -793,10 +746,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (currentClass.supertype == null) { |
// This is just to guard against internal errors, so no need |
// for a real error message. |
- ErroneousElement error = reportAndCreateErroneousElement( |
- node, 'super', |
- MessageKind.GENERIC, |
- {'text': "Object has no superclass"}, |
+ ErroneousElement error = reportAndCreateErroneousElement(node, 'super', |
+ MessageKind.GENERIC, {'text': "Object has no superclass"}, |
isError: true); |
registry.registerFeature(Feature.COMPILE_TIME_ERROR); |
return new StaticAccess.invalid(error); |
@@ -810,8 +761,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
AccessSemantics checkThisAccess(Send node) { |
if (!inInstanceContext) { |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, 'this', |
- MessageKind.NO_THIS_AVAILABLE, const {}, |
+ node, 'this', MessageKind.NO_THIS_AVAILABLE, const {}, |
isError: true); |
registry.registerFeature(Feature.COMPILE_TIME_ERROR); |
return new StaticAccess.invalid(error); |
@@ -843,9 +793,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Compute the [AccessSemantics] corresponding to a compound super access |
/// reading from [getter] and writing to [setter]. |
AccessSemantics computeCompoundSuperAccessSemantics( |
- Spannable node, |
- Element getter, |
- Element setter, |
+ Spannable node, Element getter, Element setter, |
{bool isIndex: false}) { |
if (getter.isMalformed) { |
if (setter.isMalformed) { |
@@ -854,7 +802,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
assert(invariant(node, setter.name == '[]=', |
message: "Unexpected super setter '$setter'.")); |
return new CompoundAccessSemantics( |
- CompoundAccessKind.UNRESOLVED_SUPER_GETTER, getter, setter); |
+ CompoundAccessKind.UNRESOLVED_SUPER_GETTER, getter, setter); |
} else { |
assert(invariant(node, setter.isSetter, |
message: "Unexpected super setter '$setter'.")); |
@@ -911,7 +859,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
assert(invariant(node, getter.name == '[]', |
message: "Unexpected super getter '$getter'.")); |
return new CompoundAccessSemantics( |
- CompoundAccessKind.SUPER_GETTER_SETTER, getter, setter); |
+ CompoundAccessKind.SUPER_GETTER_SETTER, getter, setter); |
} else { |
assert(invariant(node, setter.isSetter, |
message: "Unexpected super setter '$setter'.")); |
@@ -922,8 +870,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
/// Compute the [AccessSemantics] corresponding to a local access of [target]. |
- AccessSemantics computeLocalAccessSemantics(Spannable node, |
- LocalElement target) { |
+ AccessSemantics computeLocalAccessSemantics( |
+ Spannable node, LocalElement target) { |
if (target.isParameter) { |
if (target.isFinal || target.isConst) { |
return new StaticAccess.finalParameter(target); |
@@ -946,9 +894,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Compute the [AccessSemantics] corresponding to a static or toplevel access |
/// of [target]. |
AccessSemantics computeStaticOrTopLevelAccessSemantics( |
- Spannable node, |
- Element target) { |
- |
+ Spannable node, Element target) { |
target = target.declaration; |
if (target.isMalformed) { |
// This handles elements with parser errors. |
@@ -970,25 +916,25 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
message: "Unexpected static target '$target'.")); |
return new StaticAccess.staticMethod(target); |
} |
- } else { |
- assert(invariant(node, target.isTopLevel, |
- message: "Unexpected statically resolved target '$target'.")); |
- if (target.isGetter) { |
- return new StaticAccess.topLevelGetter(target); |
- } else if (target.isSetter) { |
- return new StaticAccess.topLevelSetter(target); |
- } else if (target.isField) { |
- if (target.isFinal) { |
- return new StaticAccess.finalTopLevelField(target); |
- } else { |
- return new StaticAccess.topLevelField(target); |
- } |
- } else { |
- assert(invariant(node, target.isFunction, |
- message: "Unexpected top level target '$target'.")); |
- return new StaticAccess.topLevelMethod(target); |
- } |
- } |
+ } else { |
+ assert(invariant(node, target.isTopLevel, |
+ message: "Unexpected statically resolved target '$target'.")); |
+ if (target.isGetter) { |
+ return new StaticAccess.topLevelGetter(target); |
+ } else if (target.isSetter) { |
+ return new StaticAccess.topLevelSetter(target); |
+ } else if (target.isField) { |
+ if (target.isFinal) { |
+ return new StaticAccess.finalTopLevelField(target); |
+ } else { |
+ return new StaticAccess.topLevelField(target); |
+ } |
+ } else { |
+ assert(invariant(node, target.isFunction, |
+ message: "Unexpected top level target '$target'.")); |
+ return new StaticAccess.topLevelMethod(target); |
+ } |
+ } |
} |
/// Compute the [AccessSemantics] for accessing the name of [selector] on the |
@@ -1008,10 +954,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// } |
/// |
AccessSemantics computeSuperAccessSemanticsForSelector( |
- Spannable node, |
- Selector selector, |
+ Spannable node, Selector selector, |
{Name alternateName}) { |
- |
Name name = selector.memberName; |
// TODO(johnniwinther): Ensure correct behavior if currentClass is a |
// patch. |
@@ -1024,12 +968,16 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
Element error; |
if (selector.isSetter) { |
error = reportAndCreateErroneousElement( |
- node, name.text, MessageKind.UNDEFINED_SUPER_SETTER, |
- {'className': currentClass.name, 'memberName': name}); |
+ node, |
+ name.text, |
+ MessageKind.UNDEFINED_SUPER_SETTER, |
+ {'className': currentClass.name, 'memberName': name}); |
} else { |
error = reportAndCreateErroneousElement( |
- node, name.text, MessageKind.NO_SUCH_SUPER_MEMBER, |
- {'className': currentClass.name, 'memberName': name}); |
+ node, |
+ name.text, |
+ MessageKind.NO_SUCH_SUPER_MEMBER, |
+ {'className': currentClass.name, 'memberName': name}); |
} |
if (target == null) { |
// If a setter wasn't resolved, use the [ErroneousElement]. |
@@ -1060,9 +1008,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// } |
/// |
AccessSemantics computeSuperAccessSemanticsForSelectors( |
- Spannable node, |
- Selector getterSelector, |
- Selector setterSelector, |
+ Spannable node, Selector getterSelector, Selector setterSelector, |
{bool isIndex: false}) { |
bool getterError = false; |
bool setterError = false; |
@@ -1073,7 +1019,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// [target] may be null which means invoking noSuchMethod on super. |
if (getter == null) { |
getter = reportAndCreateErroneousElement( |
- node, getterSelector.name, MessageKind.NO_SUCH_SUPER_MEMBER, |
+ node, |
+ getterSelector.name, |
+ MessageKind.NO_SUCH_SUPER_MEMBER, |
{'className': currentClass.name, 'memberName': getterSelector.name}); |
getterError = true; |
} |
@@ -1081,43 +1029,43 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// [target] may be null which means invoking noSuchMethod on super. |
if (setter == null) { |
setter = reportAndCreateErroneousElement( |
- node, setterSelector.name, MessageKind.NO_SUCH_SUPER_MEMBER, |
+ node, |
+ setterSelector.name, |
+ MessageKind.NO_SUCH_SUPER_MEMBER, |
{'className': currentClass.name, 'memberName': setterSelector.name}); |
setterError = true; |
} else if (getter == setter) { |
if (setter.isFunction) { |
setter = reportAndCreateErroneousElement( |
- node, setterSelector.name, |
- MessageKind.ASSIGNING_METHOD_IN_SUPER, |
- {'superclassName': setter.enclosingClass.name, |
- 'name': setterSelector.name}); |
+ node, setterSelector.name, MessageKind.ASSIGNING_METHOD_IN_SUPER, { |
+ 'superclassName': setter.enclosingClass.name, |
+ 'name': setterSelector.name |
+ }); |
setterError = true; |
} else if (setter.isField && setter.isFinal) { |
- setter = reportAndCreateErroneousElement( |
- node, setterSelector.name, |
- MessageKind.ASSIGNING_FINAL_FIELD_IN_SUPER, |
- {'superclassName': setter.enclosingClass.name, |
- 'name': setterSelector.name}); |
+ setter = reportAndCreateErroneousElement(node, setterSelector.name, |
+ MessageKind.ASSIGNING_FINAL_FIELD_IN_SUPER, { |
+ 'superclassName': setter.enclosingClass.name, |
+ 'name': setterSelector.name |
+ }); |
setterError = true; |
} |
} |
if (getterError) { |
// We still need to register the invocation, because we might |
// call [:super.noSuchMethod:] which calls [JSInvocationMirror._invokeOn]. |
- registry.registerDynamicUse( |
- new DynamicUse(getterSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(getterSelector, null)); |
} |
if (setterError) { |
// We still need to register the invocation, because we might |
// call [:super.noSuchMethod:] which calls [JSInvocationMirror._invokeOn]. |
- registry.registerDynamicUse( |
- new DynamicUse(setterSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(setterSelector, null)); |
} |
if (getterError || setterError) { |
registry.registerFeature(Feature.SUPER_NO_SUCH_METHOD); |
} |
- return computeCompoundSuperAccessSemantics( |
- node, getter, setter, isIndex: isIndex); |
+ return computeCompoundSuperAccessSemantics(node, getter, setter, |
+ isIndex: isIndex); |
} |
/// Resolve [node] as a subexpression that is _not_ the prefix of a member |
@@ -1214,10 +1162,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// TODO(johnniwinther): Add information to [AccessSemantics] about |
// whether it is erroneous. |
if (semantics.kind == AccessKind.SUPER_METHOD) { |
- registry.registerStaticUse( |
- new StaticUse.superInvoke( |
- semantics.element.declaration, |
- selector.callStructure)); |
+ registry.registerStaticUse(new StaticUse.superInvoke( |
+ semantics.element.declaration, selector.callStructure)); |
} |
// TODO(23998): Remove this when all information goes through |
// the [SendStructure]. |
@@ -1235,17 +1181,15 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
expressionConstant.getKnownType(coreTypes); |
switch (operator.kind) { |
case UnaryOperatorKind.COMPLEMENT: |
- isValidConstant = |
- knownExpressionType == coreTypes.intType; |
+ isValidConstant = knownExpressionType == coreTypes.intType; |
break; |
case UnaryOperatorKind.NEGATE: |
- isValidConstant = |
- knownExpressionType == coreTypes.intType || |
+ isValidConstant = knownExpressionType == coreTypes.intType || |
knownExpressionType == coreTypes.doubleType; |
break; |
case UnaryOperatorKind.NOT: |
- reporter.internalError(node, |
- "Unexpected user definable unary operator: $operator"); |
+ reporter.internalError( |
+ node, "Unexpected user definable unary operator: $operator"); |
} |
if (isValidConstant) { |
// TODO(johnniwinther): Handle potentially invalid constant |
@@ -1258,8 +1202,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
} |
if (semantics != null) { |
- registry.registerSendStructure(node, |
- new UnaryStructure(semantics, operator)); |
+ registry.registerSendStructure( |
+ node, new UnaryStructure(semantics, operator)); |
} |
return result; |
} |
@@ -1303,9 +1247,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
rightConstant.getKnownType(coreTypes) == coreTypes.boolType) { |
// TODO(johnniwinther): Handle potentially invalid constant expressions. |
ConstantExpression constant = new BinaryConstantExpression( |
- leftConstant, |
- BinaryOperator.LOGICAL_AND, |
- rightConstant); |
+ leftConstant, BinaryOperator.LOGICAL_AND, rightConstant); |
registry.setConstant(node, constant); |
return new ConstantResult(node, constant); |
} |
@@ -1329,9 +1271,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
rightConstant.getKnownType(coreTypes) == coreTypes.boolType) { |
// TODO(johnniwinther): Handle potentially invalid constant expressions. |
ConstantExpression constant = new BinaryConstantExpression( |
- leftConstant, |
- BinaryOperator.LOGICAL_OR, |
- rightConstant); |
+ leftConstant, BinaryOperator.LOGICAL_OR, rightConstant); |
registry.setConstant(node, constant); |
return new ConstantResult(node, constant); |
} |
@@ -1366,8 +1306,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle the binary expression of a user definable binary [operator], like |
/// `a + b`, `super + b`, `a == b` and `a != b`. |
- ResolutionResult handleUserDefinableBinary(Send node, |
- BinaryOperator operator) { |
+ ResolutionResult handleUserDefinableBinary( |
+ Send node, BinaryOperator operator) { |
ResolutionResult result = const NoneResult(); |
Node left = node.receiver; |
Node right = node.arguments.head; |
@@ -1389,10 +1329,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// TODO(johnniwinther): Add information to [AccessSemantics] about |
// whether it is erroneous. |
if (semantics.kind == AccessKind.SUPER_METHOD) { |
- registry.registerStaticUse( |
- new StaticUse.superInvoke( |
- semantics.element.declaration, |
- selector.callStructure)); |
+ registry.registerStaticUse(new StaticUse.superInvoke( |
+ semantics.element.declaration, selector.callStructure)); |
} |
// TODO(23998): Remove this when all information goes through |
// the [SendStructure]. |
@@ -1414,26 +1352,24 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
switch (operator.kind) { |
case BinaryOperatorKind.EQ: |
case BinaryOperatorKind.NOT_EQ: |
- isValidConstant = |
- (knownLeftType == coreTypes.intType || |
- knownLeftType == coreTypes.doubleType || |
- knownLeftType == coreTypes.stringType || |
- knownLeftType == coreTypes.boolType || |
- knownLeftType == coreTypes.nullType) && |
+ isValidConstant = (knownLeftType == coreTypes.intType || |
+ knownLeftType == coreTypes.doubleType || |
+ knownLeftType == coreTypes.stringType || |
+ knownLeftType == coreTypes.boolType || |
+ knownLeftType == coreTypes.nullType) && |
(knownRightType == coreTypes.intType || |
- knownRightType == coreTypes.doubleType || |
- knownRightType == coreTypes.stringType || |
- knownRightType == coreTypes.boolType || |
- knownRightType == coreTypes.nullType); |
+ knownRightType == coreTypes.doubleType || |
+ knownRightType == coreTypes.stringType || |
+ knownRightType == coreTypes.boolType || |
+ knownRightType == coreTypes.nullType); |
break; |
case BinaryOperatorKind.ADD: |
- isValidConstant = |
- (knownLeftType == coreTypes.intType || |
- knownLeftType == coreTypes.doubleType || |
- knownLeftType == coreTypes.stringType) && |
+ isValidConstant = (knownLeftType == coreTypes.intType || |
+ knownLeftType == coreTypes.doubleType || |
+ knownLeftType == coreTypes.stringType) && |
(knownRightType == coreTypes.intType || |
- knownRightType == coreTypes.doubleType || |
- knownRightType == coreTypes.stringType); |
+ knownRightType == coreTypes.doubleType || |
+ knownRightType == coreTypes.stringType); |
break; |
case BinaryOperatorKind.SUB: |
case BinaryOperatorKind.MUL: |
@@ -1444,19 +1380,17 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
case BinaryOperatorKind.GT: |
case BinaryOperatorKind.LTEQ: |
case BinaryOperatorKind.LT: |
- isValidConstant = |
- (knownLeftType == coreTypes.intType || |
- knownLeftType == coreTypes.doubleType) && |
+ isValidConstant = (knownLeftType == coreTypes.intType || |
+ knownLeftType == coreTypes.doubleType) && |
(knownRightType == coreTypes.intType || |
- knownRightType == coreTypes.doubleType); |
+ knownRightType == coreTypes.doubleType); |
break; |
case BinaryOperatorKind.SHL: |
case BinaryOperatorKind.SHR: |
case BinaryOperatorKind.AND: |
case BinaryOperatorKind.OR: |
case BinaryOperatorKind.XOR: |
- isValidConstant = |
- knownLeftType == coreTypes.intType && |
+ isValidConstant = knownLeftType == coreTypes.intType && |
knownRightType == coreTypes.intType; |
break; |
case BinaryOperatorKind.INDEX: |
@@ -1473,9 +1407,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// TODO(johnniwinther): Handle potentially invalid constant |
// expressions. |
ConstantExpression constant = new BinaryConstantExpression( |
- leftResult.constant, |
- operator, |
- rightResult.constant); |
+ leftResult.constant, operator, rightResult.constant); |
registry.setConstant(node, constant); |
result = new ConstantResult(node, constant); |
} |
@@ -1527,8 +1459,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle an invocation of an expression, like `(){}()` or `(foo)()`. |
ResolutionResult handleExpressionInvoke(Send node) { |
- assert(invariant(node, node.isCall, |
- message: "Unexpected expression: $node")); |
+ assert( |
+ invariant(node, node.isCall, message: "Unexpected expression: $node")); |
Node expression = node.selector; |
visitExpression(expression); |
CallStructure callStructure = |
@@ -1538,8 +1470,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// [SendStructure]. |
registry.setSelector(node, selector); |
registry.registerDynamicUse(new DynamicUse(selector, null)); |
- registry.registerSendStructure(node, |
- new InvokeStructure(const DynamicAccess.expression(), selector)); |
+ registry.registerSendStructure( |
+ node, new InvokeStructure(const DynamicAccess.expression(), selector)); |
return const NoneResult(); |
} |
@@ -1570,19 +1502,17 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
AccessSemantics accessSemantics = checkThisAccess(node); |
if (accessSemantics == null) { |
accessSemantics = const DynamicAccess.thisAccess(); |
- registry.registerDynamicUse( |
- new DynamicUse(selector, null)); |
+ registry.registerDynamicUse(new DynamicUse(selector, null)); |
} |
- registry.registerSendStructure(node, |
- new InvokeStructure(accessSemantics, selector)); |
+ registry.registerSendStructure( |
+ node, new InvokeStructure(accessSemantics, selector)); |
// TODO(23998): Remove this when all information goes through |
// the [SendStructure]. |
registry.setSelector(node, selector); |
return const NoneResult(); |
} else { |
// TODO(johnniwinther): Handle get of `this` when it is a [Send] node. |
- reporter.internalError( |
- node, "Unexpected node '$node'."); |
+ reporter.internalError(node, "Unexpected node '$node'."); |
} |
return const NoneResult(); |
} |
@@ -1600,8 +1530,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
AccessSemantics semantics = checkSuperAccess(node); |
if (semantics == null) { |
- semantics = computeSuperAccessSemanticsForSelector( |
- node, selector, alternateName: name.setter); |
+ semantics = computeSuperAccessSemanticsForSelector(node, selector, |
+ alternateName: name.setter); |
} |
if (node.isCall) { |
bool isIncompatibleInvoke = false; |
@@ -1609,11 +1539,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
case AccessKind.SUPER_METHOD: |
MethodElementX superMethod = semantics.element; |
superMethod.computeType(resolution); |
- if (!callStructure.signatureApplies( |
- superMethod.functionSignature)) { |
+ if (!callStructure.signatureApplies(superMethod.functionSignature)) { |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
- registry.registerDynamicUse( |
- new DynamicUse(selector, null)); |
+ registry.registerDynamicUse(new DynamicUse(selector, null)); |
registry.registerFeature(Feature.SUPER_NO_SUCH_METHOD); |
isIncompatibleInvoke = true; |
} else { |
@@ -1624,11 +1552,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
case AccessKind.SUPER_FIELD: |
case AccessKind.SUPER_FINAL_FIELD: |
case AccessKind.SUPER_GETTER: |
- registry.registerStaticUse( |
- new StaticUse.superGet(semantics.element)); |
+ registry.registerStaticUse(new StaticUse.superGet(semantics.element)); |
selector = callStructure.callSelector; |
- registry.registerDynamicUse( |
- new DynamicUse(selector, null)); |
+ registry.registerDynamicUse(new DynamicUse(selector, null)); |
break; |
case AccessKind.SUPER_SETTER: |
case AccessKind.UNRESOLVED_SUPER: |
@@ -1642,7 +1568,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
node, "Unexpected super property access $semantics."); |
break; |
} |
- registry.registerSendStructure(node, |
+ registry.registerSendStructure( |
+ node, |
isIncompatibleInvoke |
? new IncompatibleInvokeStructure(semantics, selector) |
: new InvokeStructure(semantics, selector)); |
@@ -1651,14 +1578,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
case AccessKind.SUPER_METHOD: |
// TODO(johnniwinther): Method this should be registered as a |
// closurization. |
- registry.registerStaticUse( |
- new StaticUse.superTearOff(semantics.element)); |
+ registry |
+ .registerStaticUse(new StaticUse.superTearOff(semantics.element)); |
break; |
case AccessKind.SUPER_FIELD: |
case AccessKind.SUPER_FINAL_FIELD: |
case AccessKind.SUPER_GETTER: |
- registry.registerStaticUse( |
- new StaticUse.superGet(semantics.element)); |
+ registry.registerStaticUse(new StaticUse.superGet(semantics.element)); |
break; |
case AccessKind.SUPER_SETTER: |
case AccessKind.UNRESOLVED_SUPER: |
@@ -1689,7 +1615,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
String operatorText = node.selector.asOperator().source; |
if (operatorText == 'is') { |
return handleIs(node); |
- } else if (operatorText == 'as') { |
+ } else if (operatorText == 'as') { |
return handleAs(node); |
} else if (node.arguments.isEmpty) { |
UnaryOperator operator = UnaryOperator.parse(operatorText); |
@@ -1760,7 +1686,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// [resolveSend] to select better warning messages for getters and |
// setters. |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, name.text, MessageKind.UNDEFINED_GETTER, |
+ node, |
+ name.text, |
+ MessageKind.UNDEFINED_GETTER, |
{'className': receiverClass.name, 'memberName': name.text}); |
// TODO(johnniwinther): Add an [AccessSemantics] for unresolved static |
// member access. |
@@ -1784,7 +1712,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// TODO(johnniwinther): Produce a different error for complex update. |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, name.text, MessageKind.UNDEFINED_GETTER, |
+ node, |
+ name.text, |
+ MessageKind.UNDEFINED_GETTER, |
{'className': receiverClass.name, 'memberName': name.text}); |
// TODO(johnniwinther): Add an [AccessSemantics] for unresolved static |
// member access. |
@@ -1795,7 +1725,6 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// `a` is a class and `b` is a non-static member. |
ResolutionResult handleStaticInstanceMemberAccess( |
Send node, Name name, ClassElement receiverClass, Element member) { |
- |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
// TODO(johnniwinther): With the simplified [TreeElements] invariant, |
// try to resolve injected elements if [currentClass] is in the patch |
@@ -1805,7 +1734,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// [resolveSend] to select better warning messages for getters and |
// setters. |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, name.text, MessageKind.MEMBER_NOT_STATIC, |
+ node, |
+ name.text, |
+ MessageKind.MEMBER_NOT_STATIC, |
{'className': receiverClass.name, 'memberName': name}); |
// TODO(johnniwinther): Add an [AccessSemantics] for statically accessed |
@@ -1818,7 +1749,6 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// where `a` is a class and `b` is a non-static member. |
ResolutionResult handleStaticInstanceMemberUpdate( |
SendSet node, Name name, ClassElement receiverClass, Element member) { |
- |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
// TODO(johnniwinther): With the simplified [TreeElements] invariant, |
// try to resolve injected elements if [currentClass] is in the patch |
@@ -1826,7 +1756,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// TODO(johnniwinther): Produce a different error for complex update. |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, name.text, MessageKind.MEMBER_NOT_STATIC, |
+ node, |
+ name.text, |
+ MessageKind.MEMBER_NOT_STATIC, |
{'className': receiverClass.name, 'memberName': name}); |
// TODO(johnniwinther): Add an [AccessSemantics] for statically accessed |
@@ -1841,9 +1773,10 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
Send node, Name name, ClassElement receiverClass, Element member) { |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, name.text, MessageKind.PRIVATE_ACCESS, |
- {'libraryName': member.library.libraryOrScriptName, |
- 'name': name}); |
+ node, |
+ name.text, |
+ MessageKind.PRIVATE_ACCESS, |
+ {'libraryName': member.library.libraryOrScriptName, 'name': name}); |
// TODO(johnniwinther): Add an [AccessSemantics] for unresolved static |
// member access. |
return handleErroneousAccess( |
@@ -1857,9 +1790,10 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
SendSet node, Name name, ClassElement receiverClass, Element member) { |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, name.text, MessageKind.PRIVATE_ACCESS, |
- {'libraryName': member.library.libraryOrScriptName, |
- 'name': name}); |
+ node, |
+ name.text, |
+ MessageKind.PRIVATE_ACCESS, |
+ {'libraryName': member.library.libraryOrScriptName, 'name': name}); |
// TODO(johnniwinther): Add an [AccessSemantics] for unresolved static |
// member access. |
return handleUpdate(node, name, new StaticAccess.unresolved(error)); |
@@ -1931,14 +1865,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// TODO(johnniwinther): Remove [element] when it is no longer needed for |
// evaluating constants. |
ResolutionResult handleTypeVariableTypeLiteralAccess( |
- Send node, |
- Name name, |
- TypeVariableElement element) { |
+ Send node, Name name, TypeVariableElement element) { |
AccessSemantics semantics; |
if (!Elements.hasAccessToTypeVariables(enclosingElement)) { |
// TODO(johnniwinther): Add another access semantics for this. |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, name.text, |
+ node, |
+ name.text, |
MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER, |
{'typeVariableName': name}, |
isError: true); |
@@ -1961,8 +1894,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// the [SendStructure]. |
registry.setSelector(node, selector); |
- registry.registerSendStructure(node, |
- new InvokeStructure(semantics, selector)); |
+ registry.registerSendStructure( |
+ node, new InvokeStructure(semantics, selector)); |
} else { |
// TODO(johnniwinther): Avoid the need for a [Selector] here. |
registry.registerSendStructure(node, new GetStructure(semantics)); |
@@ -1973,14 +1906,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle access to a type literal of type variable [element]. Like `T = b`, |
/// `T++` or `T += b` where 'T' is type variable. |
ResolutionResult handleTypeVariableTypeLiteralUpdate( |
- SendSet node, |
- Name name, |
- TypeVariableElement element) { |
+ SendSet node, Name name, TypeVariableElement element) { |
AccessSemantics semantics; |
if (!Elements.hasAccessToTypeVariables(enclosingElement)) { |
// TODO(johnniwinther): Add another access semantics for this. |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, name.text, |
+ node, |
+ name.text, |
MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER, |
{'typeVariableName': name}, |
isError: true); |
@@ -1989,16 +1921,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} else { |
ErroneousElement error; |
if (node.isIfNullAssignment) { |
- error = reportAndCreateErroneousElement( |
- node.selector, name.text, |
+ error = reportAndCreateErroneousElement(node.selector, name.text, |
MessageKind.IF_NULL_ASSIGNING_TYPE, const {}); |
// TODO(23998): Remove these when all information goes through |
// the [SendStructure]. |
registry.useElement(node.selector, element); |
} else { |
error = reportAndCreateErroneousElement( |
- node.selector, name.text, |
- MessageKind.ASSIGNING_TYPE, const {}); |
+ node.selector, name.text, MessageKind.ASSIGNING_TYPE, const {}); |
} |
// TODO(23998): Remove this when all information goes through |
@@ -2017,12 +1947,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// the [GetStructure]. |
// TODO(johnniwinther): Remove [element] when it is no longer needed for |
// evaluating constants. |
- ResolutionResult handleConstantTypeLiteralAccess( |
- Send node, |
- Name name, |
- TypeDeclarationElement element, |
- DartType type, |
- ConstantAccess semantics) { |
+ ResolutionResult handleConstantTypeLiteralAccess(Send node, Name name, |
+ TypeDeclarationElement element, DartType type, ConstantAccess semantics) { |
registry.useElement(node, element); |
registry.registerTypeLiteral(node, type); |
@@ -2039,8 +1965,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.useElement(node.selector, element); |
analyzeConstantDeferred(node.selector, enforceConst: false); |
- registry.registerSendStructure(node, |
- new InvokeStructure(semantics, selector)); |
+ registry.registerSendStructure( |
+ node, new InvokeStructure(semantics, selector)); |
return const NoneResult(); |
} else { |
analyzeConstantDeferred(node, enforceConst: false); |
@@ -2056,20 +1982,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// the [GetStructure]. |
// TODO(johnniwinther): Remove [element] when it is no longer needed for |
// evaluating constants. |
- ResolutionResult handleConstantTypeLiteralUpdate( |
- SendSet node, |
- Name name, |
- TypeDeclarationElement element, |
- DartType type, |
- ConstantAccess semantics) { |
- |
+ ResolutionResult handleConstantTypeLiteralUpdate(SendSet node, Name name, |
+ TypeDeclarationElement element, DartType type, ConstantAccess semantics) { |
// TODO(johnniwinther): Remove this when all constants are evaluated. |
compiler.resolver.constantCompiler.evaluate(semantics.constant); |
ErroneousElement error; |
if (node.isIfNullAssignment) { |
- error = reportAndCreateErroneousElement( |
- node.selector, name.text, |
+ error = reportAndCreateErroneousElement(node.selector, name.text, |
MessageKind.IF_NULL_ASSIGNING_TYPE, const {}); |
// TODO(23998): Remove these when all information goes through |
// the [SendStructure]. |
@@ -2077,8 +1997,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.useElement(node.selector, element); |
} else { |
error = reportAndCreateErroneousElement( |
- node.selector, name.text, |
- MessageKind.ASSIGNING_TYPE, const {}); |
+ node.selector, name.text, MessageKind.ASSIGNING_TYPE, const {}); |
} |
// TODO(23998): Remove this when all information goes through |
@@ -2093,9 +2012,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle access to a type literal of a typedef. Like `F` or |
/// `F()` where 'F' is typedef. |
ResolutionResult handleTypedefTypeLiteralAccess( |
- Send node, |
- Name name, |
- TypedefElement typdef) { |
+ Send node, Name name, TypedefElement typdef) { |
typdef.ensureResolved(resolution); |
DartType type = typdef.rawType; |
ConstantExpression constant = new TypeConstantExpression(type); |
@@ -2106,9 +2023,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle access to a type literal of a typedef. Like `F = b`, `F++` or |
/// `F += b` where 'F' is typedef. |
ResolutionResult handleTypedefTypeLiteralUpdate( |
- SendSet node, |
- Name name, |
- TypedefElement typdef) { |
+ SendSet node, Name name, TypedefElement typdef) { |
typdef.ensureResolved(resolution); |
DartType type = typdef.rawType; |
ConstantExpression constant = new TypeConstantExpression(type); |
@@ -2125,8 +2040,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// directly on the constant expressions. |
node.isCall ? coreTypes.typeType : type); |
AccessSemantics semantics = new ConstantAccess.dynamicTypeLiteral(constant); |
- return handleConstantTypeLiteralAccess( |
- node, const PublicName('dynamic'), |
+ return handleConstantTypeLiteralAccess(node, const PublicName('dynamic'), |
coreClasses.typeClass, type, semantics); |
} |
@@ -2137,17 +2051,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
ConstantExpression constant = |
new TypeConstantExpression(const DynamicType()); |
AccessSemantics semantics = new ConstantAccess.dynamicTypeLiteral(constant); |
- return handleConstantTypeLiteralUpdate( |
- node, const PublicName('dynamic'), |
+ return handleConstantTypeLiteralUpdate(node, const PublicName('dynamic'), |
coreClasses.typeClass, type, semantics); |
} |
/// Handle access to a type literal of a class. Like `C` or |
/// `C()` where 'C' is class. |
ResolutionResult handleClassTypeLiteralAccess( |
- Send node, |
- Name name, |
- ClassElement cls) { |
+ Send node, Name name, ClassElement cls) { |
cls.ensureResolved(resolution); |
DartType type = cls.rawType; |
ConstantExpression constant = new TypeConstantExpression(type); |
@@ -2158,9 +2069,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle access to a type literal of a class. Like `C = b`, `C++` or |
/// `C += b` where 'C' is class. |
ResolutionResult handleClassTypeLiteralUpdate( |
- SendSet node, |
- Name name, |
- ClassElement cls) { |
+ SendSet node, Name name, ClassElement cls) { |
cls.ensureResolved(resolution); |
DartType type = cls.rawType; |
ConstantExpression constant = new TypeConstantExpression(type); |
@@ -2171,10 +2080,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle a [Send] that resolves to a [prefix]. Like `prefix` in |
/// `prefix.Class` or `prefix` in `prefix()`, the latter being a compile time |
/// error. |
- ResolutionResult handleClassSend( |
- Send node, |
- Name name, |
- ClassElement cls) { |
+ ResolutionResult handleClassSend(Send node, Name name, ClassElement cls) { |
cls.ensureResolved(resolution); |
if (sendIsMemberAccess) { |
registry.useElement(node, cls); |
@@ -2187,16 +2093,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Compute a [DeferredPrefixStructure] for [node]. |
ResolutionResult handleDeferredAccess( |
- Send node, |
- PrefixElement prefix, |
- ResolutionResult result) { |
+ Send node, PrefixElement prefix, ResolutionResult result) { |
assert(invariant(node, prefix.isDeferred, |
message: "Prefix $prefix is not deferred.")); |
SendStructure sendStructure = registry.getSendStructure(node); |
- assert(invariant(node, sendStructure != null, |
+ assert(invariant(node, sendStructure != null, |
message: "No SendStructure for $node.")); |
- registry.registerSendStructure(node, |
- new DeferredPrefixStructure(prefix, sendStructure)); |
+ registry.registerSendStructure( |
+ node, new DeferredPrefixStructure(prefix, sendStructure)); |
if (result.isConstant) { |
ConstantExpression constant = |
new DeferredConstantExpression(result.constant, prefix); |
@@ -2216,7 +2120,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (member == null) { |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
Element error = reportAndCreateErroneousElement( |
- node, name.text, MessageKind.NO_SUCH_LIBRARY_MEMBER, |
+ node, |
+ name.text, |
+ MessageKind.NO_SUCH_LIBRARY_MEMBER, |
{'libraryName': prefix.name, 'memberName': name}); |
result = handleUnresolvedAccess(node, name, error); |
} else { |
@@ -2228,7 +2134,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// called on the parent `prefix.Class.foo` node. |
result = new PrefixResult(prefix, result.element); |
} else if (prefix.isDeferred && |
- (member == null || !member.isDeferredLoaderGetter)) { |
+ (member == null || !member.isDeferredLoaderGetter)) { |
result = handleDeferredAccess(node, prefix, result); |
} |
return result; |
@@ -2244,7 +2150,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (member == null) { |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
Element error = reportAndCreateErroneousElement( |
- node, name.text, MessageKind.NO_SUCH_LIBRARY_MEMBER, |
+ node, |
+ name.text, |
+ MessageKind.NO_SUCH_LIBRARY_MEMBER, |
{'libraryName': prefix.name, 'memberName': name}); |
return handleUpdate(node, name, new StaticAccess.unresolved(error)); |
} else { |
@@ -2256,7 +2164,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// called on the parent `prefix.Class.foo` node. |
result = new PrefixResult(prefix, result.element); |
} else if (prefix.isDeferred && |
- (member == null || !member.isDeferredLoaderGetter)) { |
+ (member == null || !member.isDeferredLoaderGetter)) { |
result = handleDeferredAccess(node, prefix, result); |
} |
return result; |
@@ -2266,19 +2174,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// `prefix.Class` or `prefix` in `prefix()`, the latter being a compile time |
/// error. |
ResolutionResult handleLibraryPrefix( |
- Send node, |
- Name name, |
- PrefixElement prefix) { |
+ Send node, Name name, PrefixElement prefix) { |
if ((ElementCategory.PREFIX & allowedCategory) == 0) { |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, |
- name.text, |
- MessageKind.PREFIX_AS_EXPRESSION, |
- {'prefix': name}, |
+ node, name.text, MessageKind.PREFIX_AS_EXPRESSION, {'prefix': name}, |
isError: true); |
registry.registerFeature(Feature.COMPILE_TIME_ERROR); |
- return handleErroneousAccess( |
- node, name, new StaticAccess.invalid(error)); |
+ return handleErroneousAccess(node, name, new StaticAccess.invalid(error)); |
} |
if (prefix.isDeferred) { |
// TODO(23998): Remove this when deferred access is detected |
@@ -2340,14 +2242,12 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
CallStructure callStructure = |
resolveArguments(node.argumentsNode).callStructure; |
selector = new Selector.call(name, callStructure); |
- registry.registerDynamicUse( |
- new DynamicUse(selector, null)); |
+ registry.registerDynamicUse(new DynamicUse(selector, null)); |
sendStructure = new InvokeStructure(semantics, selector); |
} else { |
assert(invariant(node, node.isPropertyAccess)); |
selector = new Selector.getter(name); |
- registry.registerDynamicUse( |
- new DynamicUse(selector, null)); |
+ registry.registerDynamicUse(new DynamicUse(selector, null)); |
sendStructure = new GetStructure(semantics); |
} |
registry.registerSendStructure(node, sendStructure); |
@@ -2362,11 +2262,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
SendSet node, Name name, Element element, AccessSemantics semantics) { |
Selector getterSelector = new Selector.getter(name); |
Selector setterSelector = new Selector.setter(name.setter); |
- registry.registerDynamicUse( |
- new DynamicUse(setterSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(setterSelector, null)); |
if (node.isComplex) { |
- registry.registerDynamicUse( |
- new DynamicUse(getterSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(getterSelector, null)); |
} |
// TODO(23998): Remove these when elements are only accessed through the |
@@ -2391,9 +2289,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle `this` as a qualified property, like `a.this`. |
ResolutionResult handleQualifiedThisAccess(Send node, Name name) { |
ErroneousElement error = reportAndCreateErroneousElement( |
- node.selector, |
- name.text, |
- MessageKind.THIS_PROPERTY, {}, |
+ node.selector, name.text, MessageKind.THIS_PROPERTY, {}, |
isError: true); |
registry.registerFeature(Feature.COMPILE_TIME_ERROR); |
AccessSemantics accessSemantics = new StaticAccess.invalid(error); |
@@ -2470,7 +2366,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle access unresolved access to [name] in a non-instance context. |
ResolutionResult handleUnresolvedAccess( |
- Send node, Name name, Element element) { |
+ Send node, Name name, Element element) { |
// TODO(johnniwinther): Support unresolved top level access as an |
// [AccessSemantics]. |
AccessSemantics semantics = new StaticAccess.unresolved(element); |
@@ -2504,15 +2400,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle access to an ambiguous element, that is, a name imported twice. |
ResolutionResult handleAmbiguousSend( |
- Send node, |
- Name name, |
- AmbiguousElement element) { |
- |
+ Send node, Name name, AmbiguousElement element) { |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, |
- name.text, |
- element.messageKind, |
- element.messageArguments, |
+ node, name.text, element.messageKind, element.messageArguments, |
infos: element.computeInfos(enclosingElement, reporter)); |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
@@ -2523,15 +2413,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle update to an ambiguous element, that is, a name imported twice. |
ResolutionResult handleAmbiguousUpdate( |
- SendSet node, |
- Name name, |
- AmbiguousElement element) { |
- |
+ SendSet node, Name name, AmbiguousElement element) { |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, |
- name.text, |
- element.messageKind, |
- element.messageArguments, |
+ node, name.text, element.messageKind, element.messageArguments, |
infos: element.computeInfos(enclosingElement, reporter)); |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
@@ -2543,8 +2427,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Report access of an instance [member] from a non-instance context. |
AccessSemantics reportStaticInstanceAccess(Send node, Name name) { |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, name.text, |
- MessageKind.NO_INSTANCE_AVAILABLE, {'name': name}, |
+ node, name.text, MessageKind.NO_INSTANCE_AVAILABLE, {'name': name}, |
isError: true); |
// TODO(johnniwinther): Support static instance access as an |
// [AccessSemantics]. |
@@ -2568,8 +2451,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
function.computeType(resolution); |
if (!callStructure.signatureApplies(function.functionSignature)) { |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
- registry.registerDynamicUse( |
- new DynamicUse(selector, null)); |
+ registry.registerDynamicUse(new DynamicUse(selector, null)); |
isIncompatibleInvoke = true; |
} |
break; |
@@ -2578,15 +2460,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
case AccessKind.LOCAL_VARIABLE: |
case AccessKind.FINAL_LOCAL_VARIABLE: |
selector = callStructure.callSelector; |
- registry.registerDynamicUse( |
- new DynamicUse(selector, null)); |
+ registry.registerDynamicUse(new DynamicUse(selector, null)); |
break; |
default: |
- reporter.internalError(node, |
- "Unexpected local access $semantics."); |
+ reporter.internalError(node, "Unexpected local access $semantics."); |
break; |
} |
- registry.registerSendStructure(node, |
+ registry.registerSendStructure( |
+ node, |
isIncompatibleInvoke |
? new IncompatibleInvokeStructure(semantics, selector) |
: new InvokeStructure(semantics, selector)); |
@@ -2602,15 +2483,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
ParameterElement parameter = element; |
if (parameter.isNamed) { |
result = new ConstantResult( |
- node, |
- new NamedArgumentReference(parameter.name), |
+ node, new NamedArgumentReference(parameter.name), |
element: element); |
} else { |
result = new ConstantResult( |
node, |
- new PositionalArgumentReference( |
- parameter.functionDeclaration.parameters.indexOf( |
- parameter)), |
+ new PositionalArgumentReference(parameter |
+ .functionDeclaration.parameters |
+ .indexOf(parameter)), |
element: element); |
} |
} else { |
@@ -2620,16 +2500,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
case AccessKind.FINAL_LOCAL_VARIABLE: |
if (element.isConst) { |
result = new ConstantResult( |
- node, |
- new VariableConstantExpression(element), |
+ node, new VariableConstantExpression(element), |
element: element); |
} else { |
result = new ElementResult(element); |
} |
break; |
default: |
- reporter.internalError(node, |
- "Unexpected local access $semantics."); |
+ reporter.internalError(node, "Unexpected local access $semantics."); |
break; |
} |
selector = new Selector.getter(name); |
@@ -2652,20 +2530,16 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
ErroneousElement error; |
if (element.isParameter) { |
if (element.isFinal) { |
- error = reportAndCreateErroneousElement( |
- node.selector, name.text, |
- MessageKind.UNDEFINED_STATIC_SETTER_BUT_GETTER, |
- {'name': name}); |
+ error = reportAndCreateErroneousElement(node.selector, name.text, |
+ MessageKind.UNDEFINED_STATIC_SETTER_BUT_GETTER, {'name': name}); |
semantics = new StaticAccess.finalParameter(element); |
} else { |
semantics = new StaticAccess.parameter(element); |
} |
} else if (element.isVariable) { |
if (element.isFinal || element.isConst) { |
- error = reportAndCreateErroneousElement( |
- node.selector, name.text, |
- MessageKind.UNDEFINED_STATIC_SETTER_BUT_GETTER, |
- {'name': name}); |
+ error = reportAndCreateErroneousElement(node.selector, name.text, |
+ MessageKind.UNDEFINED_STATIC_SETTER_BUT_GETTER, {'name': name}); |
semantics = new StaticAccess.finalLocalVariable(element); |
} else { |
semantics = new StaticAccess.localVariable(element); |
@@ -2674,8 +2548,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
assert(invariant(node, element.isFunction, |
message: "Unexpected local $element.")); |
error = reportAndCreateErroneousElement( |
- node.selector, name.text, |
- MessageKind.ASSIGNING_METHOD, const {}); |
+ node.selector, name.text, MessageKind.ASSIGNING_METHOD, const {}); |
semantics = new StaticAccess.localFunction(element); |
} |
if (isPotentiallyMutableTarget(element)) { |
@@ -2700,7 +2573,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle access of a static or top level [element]. |
ResolutionResult handleStaticOrTopLevelAccess( |
- Send node, Name name, Element element) { |
+ Send node, Name name, Element element) { |
ResolutionResult result = const NoneResult(); |
MemberElement member; |
if (element.isAbstractField) { |
@@ -2717,21 +2590,20 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// of parse errors to make [element] erroneous. Fix this! |
member.computeType(resolution); |
- |
if (member == compiler.mirrorSystemGetNameFunction && |
!compiler.mirrorUsageAnalyzerTask.hasMirrorUsage(enclosingElement)) { |
- reporter.reportHintMessage( |
- node.selector, MessageKind.STATIC_FUNCTION_BLOAT, |
- {'class': compiler.mirrorSystemClass.name, |
- 'name': compiler.mirrorSystemGetNameFunction.name}); |
+ reporter |
+ .reportHintMessage(node.selector, MessageKind.STATIC_FUNCTION_BLOAT, { |
+ 'class': compiler.mirrorSystemClass.name, |
+ 'name': compiler.mirrorSystemGetNameFunction.name |
+ }); |
} |
Selector selector; |
AccessSemantics semantics = |
computeStaticOrTopLevelAccessSemantics(node, member); |
if (node.isCall) { |
- ArgumentsResult argumentsResult = |
- resolveArguments(node.argumentsNode); |
+ ArgumentsResult argumentsResult = resolveArguments(node.argumentsNode); |
CallStructure callStructure = argumentsResult.callStructure; |
selector = new Selector.call(name, callStructure); |
@@ -2743,8 +2615,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
method.computeType(resolution); |
if (!callStructure.signatureApplies(method.functionSignature)) { |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
- registry.registerDynamicUse( |
- new DynamicUse(selector, null)); |
+ registry.registerDynamicUse(new DynamicUse(selector, null)); |
isIncompatibleInvoke = true; |
} else { |
registry.registerStaticUse( |
@@ -2752,7 +2623,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
handleForeignCall(node, semantics.element, callStructure); |
if (method == compiler.identicalFunction && |
argumentsResult.isValidAsConstant) { |
- result = new ConstantResult(node, |
+ result = new ConstantResult( |
+ node, |
new IdenticalConstantExpression( |
argumentsResult.argumentResults[0].constant, |
argumentsResult.argumentResults[1].constant)); |
@@ -2765,27 +2637,25 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
case AccessKind.TOPLEVEL_FIELD: |
case AccessKind.FINAL_TOPLEVEL_FIELD: |
case AccessKind.TOPLEVEL_GETTER: |
- registry.registerStaticUse( |
- new StaticUse.staticGet(semantics.element)); |
+ registry |
+ .registerStaticUse(new StaticUse.staticGet(semantics.element)); |
selector = callStructure.callSelector; |
- registry.registerDynamicUse( |
- new DynamicUse(selector, null)); |
+ registry.registerDynamicUse(new DynamicUse(selector, null)); |
break; |
case AccessKind.STATIC_SETTER: |
case AccessKind.TOPLEVEL_SETTER: |
case AccessKind.UNRESOLVED: |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
- member = reportAndCreateErroneousElement( |
- node.selector, name.text, |
- MessageKind.UNDEFINED_STATIC_GETTER_BUT_SETTER, |
- {'name': name}); |
+ member = reportAndCreateErroneousElement(node.selector, name.text, |
+ MessageKind.UNDEFINED_STATIC_GETTER_BUT_SETTER, {'name': name}); |
break; |
default: |
- reporter.internalError(node, |
- "Unexpected statically resolved access $semantics."); |
+ reporter.internalError( |
+ node, "Unexpected statically resolved access $semantics."); |
break; |
} |
- registry.registerSendStructure(node, |
+ registry.registerSendStructure( |
+ node, |
isIncompatibleInvoke |
? new IncompatibleInvokeStructure(semantics, selector) |
: new InvokeStructure(semantics, selector)); |
@@ -2803,28 +2673,26 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
case AccessKind.TOPLEVEL_FIELD: |
case AccessKind.FINAL_TOPLEVEL_FIELD: |
case AccessKind.TOPLEVEL_GETTER: |
- registry.registerStaticUse( |
- new StaticUse.staticGet(semantics.element)); |
+ registry |
+ .registerStaticUse(new StaticUse.staticGet(semantics.element)); |
break; |
case AccessKind.STATIC_SETTER: |
case AccessKind.TOPLEVEL_SETTER: |
case AccessKind.UNRESOLVED: |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
- member = reportAndCreateErroneousElement( |
- node.selector, name.text, |
- MessageKind.UNDEFINED_STATIC_GETTER_BUT_SETTER, |
- {'name': name}); |
+ member = reportAndCreateErroneousElement(node.selector, name.text, |
+ MessageKind.UNDEFINED_STATIC_GETTER_BUT_SETTER, {'name': name}); |
break; |
default: |
- reporter.internalError(node, |
- "Unexpected statically resolved access $semantics."); |
+ reporter.internalError( |
+ node, "Unexpected statically resolved access $semantics."); |
break; |
} |
registry.registerSendStructure(node, new GetStructure(semantics)); |
if (member.isConst) { |
FieldElement field = member; |
- result = new ConstantResult( |
- node, new VariableConstantExpression(field), element: field); |
+ result = new ConstantResult(node, new VariableConstantExpression(field), |
+ element: field); |
} else { |
result = new ElementResult(member); |
} |
@@ -2840,13 +2708,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle update of a static or top level [element]. |
ResolutionResult handleStaticOrTopLevelUpdate( |
- SendSet node, Name name, Element element) { |
+ SendSet node, Name name, Element element) { |
AccessSemantics semantics; |
if (element.isAbstractField) { |
AbstractFieldElement abstractField = element; |
if (abstractField.setter == null) { |
ErroneousElement error = reportAndCreateErroneousElement( |
- node.selector, name.text, |
+ node.selector, |
+ name.text, |
MessageKind.UNDEFINED_STATIC_SETTER_BUT_GETTER, |
{'name': name}); |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
@@ -2865,12 +2734,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
? new StaticAccess.topLevelGetter(abstractField.getter) |
: new StaticAccess.staticGetter(abstractField.getter); |
} |
- registry.registerStaticUse( |
- new StaticUse.staticGet(abstractField.getter)); |
+ registry |
+ .registerStaticUse(new StaticUse.staticGet(abstractField.getter)); |
} else if (node.isComplex) { |
if (abstractField.getter == null) { |
ErroneousElement error = reportAndCreateErroneousElement( |
- node.selector, name.text, |
+ node.selector, |
+ name.text, |
MessageKind.UNDEFINED_STATIC_GETTER_BUT_SETTER, |
{'name': name}); |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
@@ -2881,8 +2751,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
: CompoundAccessKind.UNRESOLVED_STATIC_GETTER, |
error, |
abstractField.setter); |
- registry.registerStaticUse( |
- new StaticUse.staticSet(abstractField.setter)); |
+ registry |
+ .registerStaticUse(new StaticUse.staticSet(abstractField.setter)); |
} else { |
// `a++` or `a += b` where `a` has both a getter and a setter. |
semantics = new CompoundAccessSemantics( |
@@ -2891,18 +2761,18 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
: CompoundAccessKind.STATIC_GETTER_SETTER, |
abstractField.getter, |
abstractField.setter); |
- registry.registerStaticUse( |
- new StaticUse.staticGet(abstractField.getter)); |
- registry.registerStaticUse( |
- new StaticUse.staticSet(abstractField.setter)); |
+ registry |
+ .registerStaticUse(new StaticUse.staticGet(abstractField.getter)); |
+ registry |
+ .registerStaticUse(new StaticUse.staticSet(abstractField.setter)); |
} |
} else { |
// `a = b` where `a` has a setter. |
semantics = element.isTopLevel |
? new StaticAccess.topLevelSetter(abstractField.setter) |
: new StaticAccess.staticSetter(abstractField.setter); |
- registry.registerStaticUse( |
- new StaticUse.staticSet(abstractField.setter)); |
+ registry |
+ .registerStaticUse(new StaticUse.staticSet(abstractField.setter)); |
} |
} else { |
MemberElement member = element; |
@@ -2915,13 +2785,11 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} else if (member.isFunction) { |
// `a = b`, `a++` or `a += b` where `a` is a function. |
ErroneousElement error = reportAndCreateErroneousElement( |
- node.selector, name.text, |
- MessageKind.ASSIGNING_METHOD, const {}); |
+ node.selector, name.text, MessageKind.ASSIGNING_METHOD, const {}); |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
if (node.isComplex) { |
// `a++` or `a += b` where `a` is a function. |
- registry.registerStaticUse( |
- new StaticUse.staticTearOff(element)); |
+ registry.registerStaticUse(new StaticUse.staticTearOff(element)); |
} |
semantics = member.isTopLevel |
? new StaticAccess.topLevelMethod(member) |
@@ -2936,9 +2804,10 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
if (member.isFinal || member.isConst) { |
ErroneousElement error = reportAndCreateErroneousElement( |
- node.selector, name.text, |
- MessageKind.UNDEFINED_STATIC_SETTER_BUT_GETTER, |
- {'name': name}); |
+ node.selector, |
+ name.text, |
+ MessageKind.UNDEFINED_STATIC_SETTER_BUT_GETTER, |
+ {'name': name}); |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
semantics = member.isTopLevel |
? new StaticAccess.finalTopLevelField(member) |
@@ -2963,8 +2832,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// This handles elements with parser errors. |
assert(invariant(node, element is! ErroneousElement, |
message: "Unexpected erroneous element $element.")); |
- return handleErroneousAccess(node, name, |
- new StaticAccess.unresolved(element)); |
+ return handleErroneousAccess( |
+ node, name, new StaticAccess.unresolved(element)); |
} |
if (element.isInstanceMember) { |
if (inInstanceContext) { |
@@ -3003,7 +2872,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// This handles elements with parser errors.. |
assert(invariant(node, element is! ErroneousElement, |
message: "Unexpected erroneous element $element.")); |
- return handleUpdate(node, name,new StaticAccess.unresolved(element)); |
+ return handleUpdate(node, name, new StaticAccess.unresolved(element)); |
} |
if (element.isInstanceMember) { |
if (inInstanceContext) { |
@@ -3024,14 +2893,10 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} else if (element.isPrefix) { |
// `p = b` where `p` is a prefix. |
ErroneousElement error = reportAndCreateErroneousElement( |
- node, |
- name.text, |
- MessageKind.PREFIX_AS_EXPRESSION, |
- {'prefix': name}, |
- isError: true); |
+ node, name.text, MessageKind.PREFIX_AS_EXPRESSION, {'prefix': name}, |
+ isError: true); |
registry.registerFeature(Feature.COMPILE_TIME_ERROR); |
- return handleUpdate( |
- node, name, new StaticAccess.invalid(error)); |
+ return handleUpdate(node, name, new StaticAccess.invalid(error)); |
} else if (element.isLocal) { |
return handleLocalUpdate(node, name, element); |
} else if (element.isStatic || element.isTopLevel) { |
@@ -3124,9 +2989,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
// TODO(johnniwinther): Move this to the backend resolution callbacks. |
- void handleForeignCall(Send node, |
- Element target, |
- CallStructure callStructure) { |
+ void handleForeignCall( |
+ Send node, Element target, CallStructure callStructure) { |
if (target != null && compiler.backend.isForeign(target)) { |
registry.registerForeignCall(node, target, callStructure, this); |
} |
@@ -3164,12 +3028,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.setSelector(node, setterSelector); |
registry.setOperatorSelectorInComplexSendSet(node, operatorSelector); |
- registry.registerDynamicUse( |
- new DynamicUse(getterSelector, null)); |
- registry.registerDynamicUse( |
- new DynamicUse(setterSelector, null)); |
- registry.registerDynamicUse( |
- new DynamicUse(operatorSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(getterSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(setterSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(operatorSelector, null)); |
SendStructure sendStructure = node.isPrefix |
? new IndexPrefixStructure(semantics, operator) |
@@ -3188,8 +3049,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// TODO(23998): Remove this when selectors are only accessed |
// through the send structure. |
registry.setSelector(node, setterSelector); |
- registry.registerDynamicUse( |
- new DynamicUse(setterSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(setterSelector, null)); |
SendStructure sendStructure = new IndexSetStructure(semantics); |
registry.registerSendStructure(node, sendStructure); |
@@ -3207,12 +3067,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.setSelector(node, setterSelector); |
registry.setOperatorSelectorInComplexSendSet(node, operatorSelector); |
- registry.registerDynamicUse( |
- new DynamicUse(getterSelector, null)); |
- registry.registerDynamicUse( |
- new DynamicUse(setterSelector, null)); |
- registry.registerDynamicUse( |
- new DynamicUse(operatorSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(getterSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(setterSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(operatorSelector, null)); |
SendStructure sendStructure; |
if (operator.kind == AssignmentOperatorKind.IF_NULL) { |
@@ -3251,17 +3108,16 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (semantics == null) { |
semantics = computeSuperAccessSemanticsForSelectors( |
- node, getterSelector, setterSelector, isIndex: true); |
+ node, getterSelector, setterSelector, |
+ isIndex: true); |
if (!semantics.getter.isError) { |
- registry.registerStaticUse( |
- new StaticUse.superInvoke( |
- semantics.getter, getterSelector.callStructure)); |
+ registry.registerStaticUse(new StaticUse.superInvoke( |
+ semantics.getter, getterSelector.callStructure)); |
} |
if (!semantics.setter.isError) { |
- registry.registerStaticUse( |
- new StaticUse.superInvoke( |
- semantics.setter, setterSelector.callStructure)); |
+ registry.registerStaticUse(new StaticUse.superInvoke( |
+ semantics.setter, setterSelector.callStructure)); |
} |
// TODO(23998): Remove these when elements are only accessed |
@@ -3269,8 +3125,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.useElement(node, semantics.setter); |
registry.useElement(node.selector, semantics.getter); |
} |
- registry.registerDynamicUse( |
- new DynamicUse(operatorSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(operatorSelector, null)); |
SendStructure sendStructure = node.isPrefix |
? new IndexPrefixStructure(semantics, operator) |
@@ -3298,9 +3153,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// through the send structure. |
registry.setSelector(node, setterSelector); |
if (!semantics.setter.isError) { |
- registry.registerStaticUse( |
- new StaticUse.superInvoke( |
- semantics.setter, setterSelector.callStructure)); |
+ registry.registerStaticUse(new StaticUse.superInvoke( |
+ semantics.setter, setterSelector.callStructure)); |
} |
SendStructure sendStructure = new IndexSetStructure(semantics); |
@@ -3314,17 +3168,16 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
new Selector.binaryOperator(operator.selectorName); |
if (semantics == null) { |
semantics = computeSuperAccessSemanticsForSelectors( |
- node, getterSelector, setterSelector, isIndex: true); |
+ node, getterSelector, setterSelector, |
+ isIndex: true); |
if (!semantics.getter.isError) { |
- registry.registerStaticUse( |
- new StaticUse.superInvoke( |
- semantics.getter, getterSelector.callStructure)); |
+ registry.registerStaticUse(new StaticUse.superInvoke( |
+ semantics.getter, getterSelector.callStructure)); |
} |
if (!semantics.setter.isError) { |
- registry.registerStaticUse( |
- new StaticUse.superInvoke( |
- semantics.setter, setterSelector.callStructure)); |
+ registry.registerStaticUse(new StaticUse.superInvoke( |
+ semantics.setter, setterSelector.callStructure)); |
} |
// TODO(23998): Remove these when elements are only accessed |
@@ -3339,8 +3192,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.setSelector(node, setterSelector); |
registry.setOperatorSelectorInComplexSendSet(node, operatorSelector); |
- registry.registerDynamicUse( |
- new DynamicUse(operatorSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(operatorSelector, null)); |
SendStructure sendStructure; |
if (operator.kind == AssignmentOperatorKind.IF_NULL) { |
@@ -3368,8 +3220,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
void registerStaticUses(AccessSemantics semantics) { |
switch (semantics.kind) { |
case AccessKind.SUPER_METHOD: |
- registry.registerStaticUse( |
- new StaticUse.superTearOff(semantics.element)); |
+ registry |
+ .registerStaticUse(new StaticUse.superTearOff(semantics.element)); |
break; |
case AccessKind.SUPER_GETTER: |
registry.registerStaticUse(new StaticUse.superGet(semantics.getter)); |
@@ -3379,29 +3231,27 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
new StaticUse.superSetterSet(semantics.setter)); |
break; |
case AccessKind.SUPER_FIELD: |
- registry.registerStaticUse( |
- new StaticUse.superGet(semantics.element)); |
+ registry.registerStaticUse(new StaticUse.superGet(semantics.element)); |
registry.registerStaticUse( |
new StaticUse.superFieldSet(semantics.element)); |
break; |
case AccessKind.SUPER_FINAL_FIELD: |
- registry.registerStaticUse( |
- new StaticUse.superGet(semantics.element)); |
+ registry.registerStaticUse(new StaticUse.superGet(semantics.element)); |
break; |
case AccessKind.COMPOUND: |
CompoundAccessSemantics compoundSemantics = semantics; |
switch (compoundSemantics.compoundAccessKind) { |
case CompoundAccessKind.SUPER_GETTER_FIELD: |
case CompoundAccessKind.SUPER_FIELD_FIELD: |
- registry.registerStaticUse( |
- new StaticUse.superGet(semantics.getter)); |
+ registry |
+ .registerStaticUse(new StaticUse.superGet(semantics.getter)); |
registry.registerStaticUse( |
new StaticUse.superFieldSet(semantics.setter)); |
break; |
case CompoundAccessKind.SUPER_FIELD_SETTER: |
case CompoundAccessKind.SUPER_GETTER_SETTER: |
- registry.registerStaticUse( |
- new StaticUse.superGet(semantics.getter)); |
+ registry |
+ .registerStaticUse(new StaticUse.superGet(semantics.getter)); |
registry.registerStaticUse( |
new StaticUse.superSetterSet(semantics.setter)); |
break; |
@@ -3414,8 +3264,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
new StaticUse.superSetterSet(semantics.setter)); |
break; |
case CompoundAccessKind.UNRESOLVED_SUPER_SETTER: |
- registry.registerStaticUse( |
- new StaticUse.superGet(semantics.getter)); |
+ registry |
+ .registerStaticUse(new StaticUse.superGet(semantics.getter)); |
break; |
default: |
break; |
@@ -3440,29 +3290,28 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (operator.kind == AssignmentOperatorKind.ASSIGN) { |
// `super.a = b`. |
if (semantics == null) { |
- semantics = |
- computeSuperAccessSemanticsForSelector( |
- node, setterSelector, alternateName: name); |
+ semantics = computeSuperAccessSemanticsForSelector( |
+ node, setterSelector, |
+ alternateName: name); |
switch (semantics.kind) { |
case AccessKind.SUPER_FINAL_FIELD: |
reporter.reportWarningMessage( |
- node, |
- MessageKind.ASSIGNING_FINAL_FIELD_IN_SUPER, |
- {'name': name, |
- 'superclassName': semantics.setter.enclosingClass.name}); |
+ node, MessageKind.ASSIGNING_FINAL_FIELD_IN_SUPER, { |
+ 'name': name, |
+ 'superclassName': semantics.setter.enclosingClass.name |
+ }); |
// TODO(johnniwinther): This shouldn't be needed. |
- registry.registerDynamicUse( |
- new DynamicUse(setterSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(setterSelector, null)); |
registry.registerFeature(Feature.SUPER_NO_SUCH_METHOD); |
break; |
case AccessKind.SUPER_METHOD: |
reporter.reportWarningMessage( |
- node, MessageKind.ASSIGNING_METHOD_IN_SUPER, |
- {'name': name, |
- 'superclassName': semantics.setter.enclosingClass.name}); |
+ node, MessageKind.ASSIGNING_METHOD_IN_SUPER, { |
+ 'name': name, |
+ 'superclassName': semantics.setter.enclosingClass.name |
+ }); |
// TODO(johnniwinther): This shouldn't be needed. |
- registry.registerDynamicUse( |
- new DynamicUse(setterSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(setterSelector, null)); |
registry.registerFeature(Feature.SUPER_NO_SUCH_METHOD); |
break; |
case AccessKind.SUPER_FIELD: |
@@ -3493,9 +3342,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle update of an entity defined by [semantics]. For instance `a = b`, |
/// `a++` or `a += b` where [semantics] describe `a`. |
ResolutionResult handleUpdate( |
- SendSet node, |
- Name name, |
- AccessSemantics semantics) { |
+ SendSet node, Name name, AccessSemantics semantics) { |
SendStructure sendStructure; |
String operatorText = node.assignmentOperator.source; |
Selector getterSelector = new Selector.getter(name); |
@@ -3517,8 +3364,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.useElement(node, semantics.setter); |
registry.useElement(node.selector, semantics.getter); |
- registry.registerDynamicUse( |
- new DynamicUse(operatorSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(operatorSelector, null)); |
SendStructure sendStructure = node.isPrefix |
? new PrefixStructure(semantics, operator) |
@@ -3559,8 +3405,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.setSelector(node, setterSelector); |
registry.setOperatorSelectorInComplexSendSet(node, operatorSelector); |
- registry.registerDynamicUse( |
- new DynamicUse(operatorSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(operatorSelector, null)); |
SendStructure sendStructure; |
if (operator.kind == AssignmentOperatorKind.IF_NULL) { |
@@ -3641,9 +3486,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.registerConstSymbol(name); |
if (!validateSymbol(node, name, reportError: false)) { |
reporter.reportErrorMessage( |
- node, |
- MessageKind.UNSUPPORTED_LITERAL_SYMBOL, |
- {'value': name}); |
+ node, MessageKind.UNSUPPORTED_LITERAL_SYMBOL, {'value': name}); |
} |
analyzeConstantDeferred(node); |
ConstantExpression constant = new SymbolConstantExpression(name); |
@@ -3673,8 +3516,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
ResolutionResult visitRethrow(Rethrow node) { |
if (!inCatchBlock && node.throwToken.stringValue == 'rethrow') { |
- reporter.reportErrorMessage( |
- node, MessageKind.RETHROW_OUTSIDE_CATCH); |
+ reporter.reportErrorMessage(node, MessageKind.RETHROW_OUTSIDE_CATCH); |
} |
return const NoneResult(); |
} |
@@ -3687,12 +3529,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// `return e;` appears in a generative constructor. (Dart Language |
// Specification 13.12.) |
reporter.reportErrorMessage( |
- expression, |
- MessageKind.RETURN_IN_GENERATIVE_CONSTRUCTOR); |
+ expression, MessageKind.RETURN_IN_GENERATIVE_CONSTRUCTOR); |
} else if (!node.isArrowBody && currentAsyncMarker.isYielding) { |
- reporter.reportErrorMessage( |
- node, |
- MessageKind.RETURN_IN_GENERATOR, |
+ reporter.reportErrorMessage(node, MessageKind.RETURN_IN_GENERATOR, |
{'modifier': currentAsyncMarker}); |
} |
} |
@@ -3724,8 +3563,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
ConstructorElementX constructor = enclosingElement; |
bool isConstConstructor = constructor.isConst; |
bool isValidAsConstant = isConstConstructor; |
- ConstructorResult result = resolveRedirectingFactory( |
- node, inConstContext: isConstConstructor); |
+ ConstructorResult result = |
+ resolveRedirectingFactory(node, inConstContext: isConstConstructor); |
ConstructorElement redirectionTarget = result.element; |
constructor.immediateRedirectionTarget = redirectionTarget; |
@@ -3749,18 +3588,16 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
case ConstructorResultKind.UNRESOLVED_CONSTRUCTOR: |
case ConstructorResultKind.NON_CONSTANT: |
isValidAsConstant = false; |
- constructor.setEffectiveTarget( |
- result.element, result.type, isMalformed: true); |
+ constructor.setEffectiveTarget(result.element, result.type, |
+ isMalformed: true); |
break; |
} |
if (Elements.isUnresolved(redirectionTarget)) { |
registry.registerFeature(Feature.THROW_NO_SUCH_METHOD); |
return const NoneResult(); |
} else { |
- if (isConstConstructor && |
- !redirectionTarget.isConst) { |
- reporter.reportErrorMessage( |
- node, MessageKind.CONSTRUCTOR_IS_NOT_CONST); |
+ if (isConstConstructor && !redirectionTarget.isConst) { |
+ reporter.reportErrorMessage(node, MessageKind.CONSTRUCTOR_IS_NOT_CONST); |
isValidAsConstant = false; |
} |
if (redirectionTarget == constructor) { |
@@ -3776,16 +3613,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// redirecting constructor. |
ClassElement targetClass = redirectionTarget.enclosingClass; |
InterfaceType type = registry.getType(node); |
- FunctionType targetConstructorType = |
- redirectionTarget.computeType(resolution) |
- .subst(type.typeArguments, targetClass.typeVariables); |
+ FunctionType targetConstructorType = redirectionTarget |
+ .computeType(resolution) |
+ .subst(type.typeArguments, targetClass.typeVariables); |
FunctionType constructorType = constructor.computeType(resolution); |
- bool isSubtype = compiler.types.isSubtype( |
- targetConstructorType, constructorType); |
+ bool isSubtype = |
+ compiler.types.isSubtype(targetConstructorType, constructorType); |
if (!isSubtype) { |
- reporter.reportWarningMessage( |
- node, |
- MessageKind.NOT_ASSIGNABLE, |
+ reporter.reportWarningMessage(node, MessageKind.NOT_ASSIGNABLE, |
{'fromType': targetConstructorType, 'toType': constructorType}); |
// TODO(johnniwinther): Handle this (potentially) erroneous case. |
isValidAsConstant = false; |
@@ -3805,9 +3640,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
new StaticUse.constructorRedirect(redirectionTarget)); |
// TODO(johnniwinther): Register the effective target type as part of the |
// static use instead. |
- registry.registerTypeUse(new TypeUse.instantiation( |
- redirectionTarget.enclosingClass.thisType |
- .subst(type.typeArguments, targetClass.typeVariables))); |
+ registry.registerTypeUse(new TypeUse.instantiation(redirectionTarget |
+ .enclosingClass.thisType |
+ .subst(type.typeArguments, targetClass.typeVariables))); |
if (enclosingElement == compiler.symbolConstructor) { |
registry.registerFeature(Feature.SYMBOL_CONSTRUCTOR); |
} |
@@ -3830,10 +3665,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
constructor.constantConstructor = |
new RedirectingFactoryConstantConstructor( |
new ConstructedConstantExpression( |
- type, |
- redirectionTarget, |
- callStructure, |
- arguments)); |
+ type, redirectionTarget, callStructure, arguments)); |
} |
return const NoneResult(); |
} |
@@ -3868,16 +3700,15 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
void reportExtraModifier(String modifier) { |
Node modifierNode; |
for (Link<Node> nodes = modifiers.nodes.nodes; |
- !nodes.isEmpty; |
- nodes = nodes.tail) { |
+ !nodes.isEmpty; |
+ nodes = nodes.tail) { |
if (modifier == nodes.head.asIdentifier().source) { |
modifierNode = nodes.head; |
break; |
} |
} |
assert(modifierNode != null); |
- reporter.reportErrorMessage( |
- modifierNode, MessageKind.EXTRANEOUS_MODIFIER, |
+ reporter.reportErrorMessage(modifierNode, MessageKind.EXTRANEOUS_MODIFIER, |
{'modifier': modifier}); |
} |
if (modifiers.isFinal && (modifiers.isConst || modifiers.isVar)) { |
@@ -3912,8 +3743,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
bool oldSendIsMemberAccess = sendIsMemberAccess; |
sendIsMemberAccess = false; |
var oldCategory = allowedCategory; |
- allowedCategory = |
- ElementCategory.VARIABLE | |
+ allowedCategory = ElementCategory.VARIABLE | |
ElementCategory.FUNCTION | |
ElementCategory.IMPLIES_TYPE; |
ResolutionResult result = visit(node.expression); |
@@ -3983,7 +3813,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
break; |
case ConstructorResultKind.UNRESOLVED_CONSTRUCTOR: |
// TODO(johnniwinther): Unify codepaths to only have one return. |
- registry.registerNewStructure(node, |
+ registry.registerNewStructure( |
+ node, |
new NewInvokeStructure( |
new ConstructorAccessSemantics( |
ConstructorAccessKind.UNRESOLVED_CONSTRUCTOR, |
@@ -3992,7 +3823,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
selector)); |
return new ResolutionResult.forElement(constructor); |
case ConstructorResultKind.NON_CONSTANT: |
- registry.registerNewStructure(node, |
+ registry.registerNewStructure( |
+ node, |
new NewInvokeStructure( |
new ConstructorAccessSemantics( |
ConstructorAccessKind.NON_CONSTANT_CONSTRUCTOR, |
@@ -4005,9 +3837,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (!isInvalid) { |
// [constructor] might be the implementation element |
// and only declaration elements may be registered. |
- registry.registerStaticUse( |
- new StaticUse.constructorInvoke( |
- constructor.declaration, callStructure)); |
+ registry.registerStaticUse(new StaticUse.constructorInvoke( |
+ constructor.declaration, callStructure)); |
// TODO(johniwinther): Avoid registration of `type` in face of redirecting |
// factory constructors. |
registry.registerTypeUse(new TypeUse.instantiation(type)); |
@@ -4018,16 +3849,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (constructor == compiler.symbolConstructor) { |
Node argumentNode = node.send.arguments.head; |
- ConstantExpression constant = |
- compiler.resolver.constantCompiler.compileNode( |
- argumentNode, registry.mapping); |
+ ConstantExpression constant = compiler.resolver.constantCompiler |
+ .compileNode(argumentNode, registry.mapping); |
ConstantValue name = compiler.constants.getConstantValue(constant); |
if (!name.isString) { |
DartType type = name.getType(coreTypes); |
reporter.reportErrorMessage( |
- argumentNode, |
- MessageKind.STRING_EXPECTED, |
- {'type': type}); |
+ argumentNode, MessageKind.STRING_EXPECTED, {'type': type}); |
} else { |
StringConstantValue stringConstant = name; |
String nameString = stringConstant.toDartString().slowToString(); |
@@ -4043,8 +3871,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (type.containsTypeVariables) { |
reporter.reportErrorMessage( |
- node.send.selector, |
- MessageKind.TYPE_VARIABLE_IN_CONSTANT); |
+ node.send.selector, MessageKind.TYPE_VARIABLE_IN_CONSTANT); |
isValidAsConstant = false; |
isInvalid = true; |
} |
@@ -4063,36 +3890,33 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
ConstructedConstantExpression constant = |
new ConstructedConstantExpression( |
- type, |
- constructor, |
- callStructure, |
- arguments); |
+ type, constructor, callStructure, arguments); |
registry.registerNewStructure(node, |
new ConstInvokeStructure(ConstantInvokeKind.CONSTRUCTED, constant)); |
return new ConstantResult(node, constant); |
} else if (isInvalid) { |
// Known to be non-constant. |
kind == ConstructorAccessKind.NON_CONSTANT_CONSTRUCTOR; |
- registry.registerNewStructure(node, |
+ registry.registerNewStructure( |
+ node, |
new NewInvokeStructure( |
new ConstructorAccessSemantics(kind, constructor, type), |
selector)); |
} else { |
// Might be valid but we don't know for sure. The compile-time constant |
// evaluator will compute the actual constant as a deferred action. |
- registry.registerNewStructure(node, |
- new LateConstInvokeStructure(registry.mapping)); |
+ registry.registerNewStructure( |
+ node, new LateConstInvokeStructure(registry.mapping)); |
} |
- |
} else { |
// Not constant. |
if (constructor == compiler.symbolConstructor && |
!compiler.mirrorUsageAnalyzerTask.hasMirrorUsage(enclosingElement)) { |
- reporter.reportHintMessage( |
- node.newToken, MessageKind.NON_CONST_BLOAT, |
- {'name': coreClasses.symbolClass.name}); |
+ reporter.reportHintMessage(node.newToken, MessageKind.NON_CONST_BLOAT, |
+ {'name': coreClasses.symbolClass.name}); |
} |
- registry.registerNewStructure(node, |
+ registry.registerNewStructure( |
+ node, |
new NewInvokeStructure( |
new ConstructorAccessSemantics(kind, constructor, type), |
selector)); |
@@ -4101,8 +3925,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return const NoneResult(); |
} |
- void checkConstMapKeysDontOverrideEquals(Spannable spannable, |
- MapConstantValue map) { |
+ void checkConstMapKeysDontOverrideEquals( |
+ Spannable spannable, MapConstantValue map) { |
for (ConstantValue key in map.keys) { |
if (!key.isObject) continue; |
ObjectConstantValue objectConstant = key; |
@@ -4111,18 +3935,15 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (cls == coreClasses.stringClass) continue; |
Element equals = cls.lookupMember('=='); |
if (equals.enclosingClass != coreClasses.objectClass) { |
- reporter.reportErrorMessage( |
- spannable, |
- MessageKind.CONST_MAP_KEY_OVERRIDES_EQUALS, |
- {'type': keyType}); |
+ reporter.reportErrorMessage(spannable, |
+ MessageKind.CONST_MAP_KEY_OVERRIDES_EQUALS, {'type': keyType}); |
} |
} |
} |
void analyzeConstant(Node node, {enforceConst: true}) { |
- ConstantExpression constant = |
- compiler.resolver.constantCompiler.compileNode( |
- node, registry.mapping, enforceConst: enforceConst); |
+ ConstantExpression constant = compiler.resolver.constantCompiler |
+ .compileNode(node, registry.mapping, enforceConst: enforceConst); |
if (constant == null) { |
assert(invariant(node, compiler.compilationFailed)); |
@@ -4166,21 +3987,20 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
* [:null:], if there is no corresponding constructor, class or library. |
*/ |
ConstructorResult resolveConstructor(NewExpression node) { |
- return node.accept(new ConstructorResolver( |
- compiler, this, inConstContext: node.isConst)); |
+ return node.accept( |
+ new ConstructorResolver(compiler, this, inConstContext: node.isConst)); |
} |
ConstructorResult resolveRedirectingFactory(RedirectingFactoryBody node, |
- {bool inConstContext: false}) { |
- return node.accept(new ConstructorResolver( |
- compiler, this, inConstContext: inConstContext)); |
+ {bool inConstContext: false}) { |
+ return node.accept(new ConstructorResolver(compiler, this, |
+ inConstContext: inConstContext)); |
} |
DartType resolveTypeAnnotation(TypeAnnotation node, |
- {bool malformedIsError: false, |
- bool deferredIsMalformed: true}) { |
- DartType type = typeResolver.resolveTypeAnnotation( |
- this, node, malformedIsError: malformedIsError, |
+ {bool malformedIsError: false, bool deferredIsMalformed: true}) { |
+ DartType type = typeResolver.resolveTypeAnnotation(this, node, |
+ malformedIsError: malformedIsError, |
deferredIsMalformed: deferredIsMalformed); |
if (inCheckContext) { |
registry.registerTypeUse(new TypeUse.checkedModeCheck(type)); |
@@ -4214,19 +4034,15 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (typeArgument != null) { |
if (node.isConst && typeArgument.containsTypeVariables) { |
reporter.reportErrorMessage( |
- arguments.nodes.head, |
- MessageKind.TYPE_VARIABLE_IN_CONSTANT); |
+ arguments.nodes.head, MessageKind.TYPE_VARIABLE_IN_CONSTANT); |
isValidAsConstant = false; |
} |
listType = coreTypes.listType(typeArgument); |
} else { |
listType = coreTypes.listType(); |
} |
- registry.registerLiteralList( |
- node, |
- listType, |
- isConstant: node.isConst, |
- isEmpty: node.elements.isEmpty); |
+ registry.registerLiteralList(node, listType, |
+ isConstant: node.isConst, isEmpty: node.elements.isEmpty); |
if (node.isConst) { |
List<ConstantExpression> constantExpressions = <ConstantExpression>[]; |
inConstantContext(() { |
@@ -4252,22 +4068,19 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
sendIsMemberAccess = false; |
} |
return const NoneResult(); |
- |
} |
ResolutionResult visitConditional(Conditional node) { |
ResolutionResult conditionResult = |
doInPromotionScope(node.condition, () => visit(node.condition)); |
- ResolutionResult thenResult = |
- doInPromotionScope(node.thenExpression, () => visit(node.thenExpression)); |
+ ResolutionResult thenResult = doInPromotionScope( |
+ node.thenExpression, () => visit(node.thenExpression)); |
ResolutionResult elseResult = visit(node.elseExpression); |
if (conditionResult.isConstant && |
thenResult.isConstant && |
elseResult.isConstant) { |
ConstantExpression constant = new ConditionalConstantExpression( |
- conditionResult.constant, |
- thenResult.constant, |
- elseResult.constant); |
+ conditionResult.constant, thenResult.constant, elseResult.constant); |
registry.setConstant(node, constant); |
return new ConstantResult(node, constant); |
} |
@@ -4312,8 +4125,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (node.target == null) { |
target = statementScope.currentBreakTarget(); |
if (target == null) { |
- reporter.reportErrorMessage( |
- node, MessageKind.NO_BREAK_TARGET); |
+ reporter.reportErrorMessage(node, MessageKind.NO_BREAK_TARGET); |
return const NoneResult(); |
} |
target.isBreakTarget = true; |
@@ -4327,8 +4139,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
target = label.target; |
if (!target.statement.isValidBreakTarget()) { |
- reporter.reportErrorMessage( |
- node.target, MessageKind.INVALID_BREAK); |
+ reporter.reportErrorMessage(node.target, MessageKind.INVALID_BREAK); |
return const NoneResult(); |
} |
label.setBreakTarget(); |
@@ -4343,8 +4154,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (node.target == null) { |
target = statementScope.currentContinueTarget(); |
if (target == null) { |
- reporter.reportErrorMessage( |
- node, MessageKind.NO_CONTINUE_TARGET); |
+ reporter.reportErrorMessage(node, MessageKind.NO_CONTINUE_TARGET); |
return const NoneResult(); |
} |
target.isContinueTarget = true; |
@@ -4358,8 +4168,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
target = label.target; |
if (!target.statement.isValidContinueTarget()) { |
- reporter.reportErrorMessage( |
- node.target, MessageKind.INVALID_CONTINUE); |
+ reporter.reportErrorMessage(node.target, MessageKind.INVALID_CONTINUE); |
} |
label.setContinueTarget(); |
registry.useLabel(node, label); |
@@ -4378,10 +4187,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
node.awaitToken, MessageKind.INVALID_AWAIT_FOR_IN); |
} |
registry.registerFeature(Feature.ASYNC_FOR_IN); |
- registry.registerDynamicUse( |
- new DynamicUse(Selectors.current, null)); |
- registry.registerDynamicUse( |
- new DynamicUse(Selectors.moveNext, null)); |
+ registry.registerDynamicUse(new DynamicUse(Selectors.current, null)); |
+ registry.registerDynamicUse(new DynamicUse(Selectors.moveNext, null)); |
visit(node.expression); |
@@ -4393,12 +4200,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
ResolutionResult visitSyncForIn(SyncForIn node) { |
registry.registerFeature(Feature.SYNC_FOR_IN); |
- registry.registerDynamicUse( |
- new DynamicUse(Selectors.iterator, null)); |
- registry.registerDynamicUse( |
- new DynamicUse(Selectors.current, null)); |
- registry.registerDynamicUse( |
- new DynamicUse(Selectors.moveNext, null)); |
+ registry.registerDynamicUse(new DynamicUse(Selectors.iterator, null)); |
+ registry.registerDynamicUse(new DynamicUse(Selectors.current, null)); |
+ registry.registerDynamicUse(new DynamicUse(Selectors.moveNext, null)); |
visit(node.expression); |
@@ -4409,9 +4213,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
void visitForInDeclaredIdentifierIn( |
- Node declaration, |
- ForIn node, |
- Scope blockScope) { |
+ Node declaration, ForIn node, Scope blockScope) { |
LibraryElement library = enclosingElement.library; |
bool oldAllowFinalWithoutInitializer = inLoopVariable; |
@@ -4428,15 +4230,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
loopVariable = registry.getDefinition(send); |
Identifier identifier = send.selector.asIdentifier(); |
if (identifier == null) { |
- reporter.reportErrorMessage( |
- send.selector, MessageKind.INVALID_FOR_IN); |
+ reporter.reportErrorMessage(send.selector, MessageKind.INVALID_FOR_IN); |
} else { |
- loopVariableSelector = new Selector.setter( |
- new Name(identifier.source, library)); |
+ loopVariableSelector = |
+ new Selector.setter(new Name(identifier.source, library)); |
} |
if (send.receiver != null) { |
- reporter.reportErrorMessage( |
- send.receiver, MessageKind.INVALID_FOR_IN); |
+ reporter.reportErrorMessage(send.receiver, MessageKind.INVALID_FOR_IN); |
} |
} else if (variableDefinitions != null) { |
Link<Node> nodes = variableDefinitions.definitions.nodes; |
@@ -4447,22 +4247,19 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
Node first = nodes.head; |
Identifier identifier = first.asIdentifier(); |
if (identifier == null) { |
- reporter.reportErrorMessage( |
- first, MessageKind.INVALID_FOR_IN); |
+ reporter.reportErrorMessage(first, MessageKind.INVALID_FOR_IN); |
} else { |
- loopVariableSelector = new Selector.setter( |
- new Name(identifier.source, library)); |
+ loopVariableSelector = |
+ new Selector.setter(new Name(identifier.source, library)); |
loopVariable = registry.getDefinition(identifier); |
} |
} else { |
- reporter.reportErrorMessage( |
- declaration, MessageKind.INVALID_FOR_IN); |
+ reporter.reportErrorMessage(declaration, MessageKind.INVALID_FOR_IN); |
} |
if (loopVariableSelector != null) { |
registry.setSelector(declaration, loopVariableSelector); |
if (loopVariable == null || loopVariable.isInstanceMember) { |
- registry.registerDynamicUse( |
- new DynamicUse(loopVariableSelector, null)); |
+ registry.registerDynamicUse(new DynamicUse(loopVariableSelector, null)); |
} else if (loopVariable.isStatic || loopVariable.isTopLevel) { |
registry.registerStaticUse( |
new StaticUse.staticSet(loopVariable.declaration)); |
@@ -4499,9 +4296,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.defineLabel(element.label, element); |
} else { |
reporter.reportWarningMessage( |
- element.label, |
- MessageKind.UNUSED_LABEL, |
- {'labelName': labelName}); |
+ element.label, MessageKind.UNUSED_LABEL, {'labelName': labelName}); |
} |
}); |
if (!targetElement.isTarget) { |
@@ -4548,15 +4343,11 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
if (node.isConst && mapType.containsTypeVariables) { |
reporter.reportErrorMessage( |
- arguments, |
- MessageKind.TYPE_VARIABLE_IN_CONSTANT); |
+ arguments, MessageKind.TYPE_VARIABLE_IN_CONSTANT); |
isValidAsConstant = false; |
} |
- registry.registerMapLiteral( |
- node, |
- mapType, |
- isConstant: node.isConst, |
- isEmpty: node.entries.isEmpty); |
+ registry.registerMapLiteral(node, mapType, |
+ isConstant: node.isConst, isEmpty: node.entries.isEmpty); |
if (node.isConst) { |
List<ConstantExpression> keyExpressions = <ConstantExpression>[]; |
@@ -4624,8 +4415,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
List<DiagnosticMessage> infos = <DiagnosticMessage>[]; |
for (Link<Node> cases = node.cases.nodes; |
- !cases.isEmpty; |
- cases = cases.tail) { |
+ !cases.isEmpty; |
+ cases = cases.tail) { |
SwitchCase switchCase = cases.head; |
for (Node labelOrCase in switchCase.labelsAndCases) { |
@@ -4639,7 +4430,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
message: 'No constant computed for $node')); |
ConstantValue value = compiler.constants.getConstantValue(constant); |
- DartType caseType = value.getType(coreTypes);//typeOfConstant(value); |
+ DartType caseType = value.getType(coreTypes); //typeOfConstant(value); |
if (firstCaseType == null) { |
firstCase = caseMatch; |
@@ -4654,8 +4445,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
{'type': "double"}); |
} else if (caseType == coreTypes.functionType) { |
reporter.reportErrorMessage( |
- node, MessageKind.SWITCH_CASE_FORBIDDEN, |
- {'type': "Function"}); |
+ node, MessageKind.SWITCH_CASE_FORBIDDEN, {'type': "Function"}); |
} else if (value.isObject && overridesEquals(caseType)) { |
reporter.reportErrorMessage( |
firstCase.expression, |
@@ -4709,29 +4499,21 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// It's an error if the same label occurs twice in the same switch. |
reporter.reportError( |
reporter.createMessage( |
- label, |
- MessageKind.DUPLICATE_LABEL, |
- {'labelName': labelName}), |
+ label, MessageKind.DUPLICATE_LABEL, {'labelName': labelName}), |
<DiagnosticMessage>[ |
- reporter.createMessage( |
- existingElement.label, |
- MessageKind.EXISTING_LABEL, |
- {'labelName': labelName}), |
+ reporter.createMessage(existingElement.label, |
+ MessageKind.EXISTING_LABEL, {'labelName': labelName}), |
]); |
} else { |
// It's only a warning if it shadows another label. |
existingElement = statementScope.lookupLabel(labelName); |
if (existingElement != null) { |
reporter.reportWarning( |
- reporter.createMessage( |
- label, |
- MessageKind.DUPLICATE_LABEL, |
+ reporter.createMessage(label, MessageKind.DUPLICATE_LABEL, |
{'labelName': labelName}), |
<DiagnosticMessage>[ |
- reporter.createMessage( |
- existingElement.label, |
- MessageKind.EXISTING_LABEL, |
- {'labelName': labelName}), |
+ reporter.createMessage(existingElement.label, |
+ MessageKind.EXISTING_LABEL, {'labelName': labelName}), |
]); |
} |
} |
@@ -4807,8 +4589,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (node.formals != null) { |
Link<Node> formalsToProcess = node.formals.nodes; |
if (formalsToProcess.isEmpty) { |
- reporter.reportErrorMessage( |
- node, MessageKind.EMPTY_CATCH_DECLARATION); |
+ reporter.reportErrorMessage(node, MessageKind.EMPTY_CATCH_DECLARATION); |
} else { |
exceptionDefinition = formalsToProcess.head.asVariableDefinitions(); |
formalsToProcess = formalsToProcess.tail; |
@@ -4828,8 +4609,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// Check that the formals aren't optional and that they have no |
// modifiers or type. |
for (Link<Node> link = node.formals.nodes; |
- !link.isEmpty; |
- link = link.tail) { |
+ !link.isEmpty; |
+ link = link.tail) { |
// If the formal parameter is a node list, it means that it is a |
// sequence of optional parameters. |
NodeList nodeList = link.head.asNodeList(); |
@@ -4881,7 +4662,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
/// Looks up [name] in [scope] and unwraps the result. |
-Element lookupInScope(DiagnosticReporter reporter, Node node, |
- Scope scope, String name) { |
+Element lookupInScope( |
+ DiagnosticReporter reporter, Node node, Scope scope, String name) { |
return Elements.unwrap(scope.lookup(name), reporter, node); |
} |