Index: pkg/compiler/lib/src/resolution/class_members.dart |
diff --git a/pkg/compiler/lib/src/resolution/class_members.dart b/pkg/compiler/lib/src/resolution/class_members.dart |
index 36feaa46866aafe5bb7f12ca1a67cb8ff3c1f631..eb993bde89293668e0fb83cff151f55aa98025d7 100644 |
--- a/pkg/compiler/lib/src/resolution/class_members.dart |
+++ b/pkg/compiler/lib/src/resolution/class_members.dart |
@@ -5,24 +5,21 @@ |
library dart2js.resolution.compute_members; |
import '../common.dart'; |
-import '../common/names.dart' show |
- Identifiers, |
- Names; |
-import '../common/resolution.dart' show |
- Resolution; |
-import '../compiler.dart' show |
- Compiler; |
+import '../common/names.dart' show Identifiers, Names; |
+import '../common/resolution.dart' show Resolution; |
+import '../compiler.dart' show Compiler; |
import '../dart_types.dart'; |
-import '../elements/elements.dart' show |
- ClassElement, |
- Element, |
- LibraryElement, |
- Member, |
- MemberElement, |
- MemberSignature, |
- MixinApplicationElement, |
- Name, |
- PublicName; |
+import '../elements/elements.dart' |
+ show |
+ ClassElement, |
+ Element, |
+ LibraryElement, |
+ Member, |
+ MemberElement, |
+ MemberSignature, |
+ MixinApplicationElement, |
+ Name, |
+ PublicName; |
import '../util/util.dart'; |
part 'member_impl.dart'; |
@@ -34,13 +31,14 @@ abstract class MembersCreator { |
final Iterable<String> computedMemberNames; |
final Map<Name, Member> classMembers; |
- Map<dynamic/* Member | Element */, Set<MessageKind>> reportedMessages = |
+ Map<dynamic /* Member | Element */, Set<MessageKind>> reportedMessages = |
new Map<dynamic, Set<MessageKind>>(); |
- MembersCreator(Compiler this.compiler, |
- ClassElement this.cls, |
- Iterable<String> this.computedMemberNames, |
- Map<Name, Member> this.classMembers) { |
+ MembersCreator( |
+ Compiler this.compiler, |
+ ClassElement this.cls, |
+ Iterable<String> this.computedMemberNames, |
+ Map<Name, Member> this.classMembers) { |
assert(invariant(cls, cls.isDeclaration, |
message: "Members may only be computed on declarations.")); |
} |
@@ -51,8 +49,7 @@ abstract class MembersCreator { |
void reportMessage(var marker, MessageKind kind, report()) { |
Set<MessageKind> messages = |
- reportedMessages.putIfAbsent(marker, |
- () => new Set<MessageKind>()); |
+ reportedMessages.putIfAbsent(marker, () => new Set<MessageKind>()); |
if (messages.add(kind)) { |
report(); |
} |
@@ -60,13 +57,12 @@ abstract class MembersCreator { |
bool shouldSkipMember(MemberSignature member) { |
return member == null || shouldSkipName(member.name.text); |
- |
} |
bool shouldSkipName(String name) { |
return computedMemberNames != null && |
- // 'call' is implicitly contained in [computedMemberNames]. |
- (name == Identifiers.call || computedMemberNames.contains(name)); |
+ // 'call' is implicitly contained in [computedMemberNames]. |
+ (name == Identifiers.call || computedMemberNames.contains(name)); |
} |
/// Compute all members of [cls] with the given names. |
@@ -159,8 +155,8 @@ abstract class MembersCreator { |
} |
if (names != null) { |
- _computeClassMember(compiler, mixinApplication.mixin, |
- nameText, names); |
+ _computeClassMember( |
+ compiler, mixinApplication.mixin, nameText, names); |
for (Name memberName in names) { |
inheritMixinMember( |
mixinApplication.mixin.lookupClassMember(memberName)); |
@@ -180,14 +176,13 @@ abstract class MembersCreator { |
if (shouldSkipName(elementName)) return; |
if (nameText != null && elementName != nameText) return; |
- void addDeclaredMember(Name name, |
- DartType type, FunctionType functionType) { |
+ void addDeclaredMember( |
+ Name name, DartType type, FunctionType functionType) { |
DeclaredMember inherited = classMembers[name]; |
DeclaredMember declared; |
if (element.isAbstract) { |
declared = new DeclaredAbstractMember( |
- name, element, thisType, type, functionType, |
- inherited); |
+ name, element, thisType, type, functionType, inherited); |
} else { |
declared = |
new DeclaredMember(name, element, thisType, type, functionType); |
@@ -202,10 +197,11 @@ abstract class MembersCreator { |
DartType type = element.computeType(resolution); |
addDeclaredMember(name, type, new FunctionType.synthesized(type)); |
if (!element.isConst && !element.isFinal) { |
- addDeclaredMember(name.setter, type, |
+ addDeclaredMember( |
+ name.setter, |
+ type, |
new FunctionType.synthesized( |
- const VoidType(), |
- <DartType>[type])); |
+ const VoidType(), <DartType>[type])); |
} |
} else if (element.isGetter) { |
FunctionType functionType = element.computeType(resolution); |
@@ -242,9 +238,8 @@ abstract class MembersCreator { |
} |
/// Checks that [classMember] is a valid implementation for [interfaceMember]. |
- void checkInterfaceMember(Name name, |
- MemberSignature interfaceMember, |
- Member classMember) { |
+ void checkInterfaceMember( |
+ Name name, MemberSignature interfaceMember, Member classMember) { |
if (classMember != null) { |
// TODO(johnniwinther): Check that the class member is a valid override |
// of the interface member. |
@@ -259,54 +254,56 @@ abstract class MembersCreator { |
} else if (interfaceMember.isGetter) { |
kind = MessageKind.ABSTRACT_GETTER; |
} |
- reportMessage( |
- interfaceMember.element, MessageKind.ABSTRACT_METHOD, () { |
- reporter.reportWarningMessage( |
- interfaceMember.element, kind, |
+ reportMessage(interfaceMember.element, MessageKind.ABSTRACT_METHOD, () { |
+ reporter.reportWarningMessage(interfaceMember.element, kind, |
{'class': cls.name, 'name': name.text}); |
}); |
} else { |
- reportWarning(MessageKind singleKind, |
- MessageKind multipleKind, |
- MessageKind explicitlyDeclaredKind, |
- [MessageKind implicitlyDeclaredKind]) { |
+ reportWarning(MessageKind singleKind, MessageKind multipleKind, |
+ MessageKind explicitlyDeclaredKind, |
+ [MessageKind implicitlyDeclaredKind]) { |
Member inherited = interfaceMember.declarations.first; |
- reportMessage( |
- interfaceMember, MessageKind.UNIMPLEMENTED_METHOD, () { |
+ reportMessage(interfaceMember, MessageKind.UNIMPLEMENTED_METHOD, () { |
DiagnosticMessage warning = reporter.createMessage( |
cls, |
interfaceMember.declarations.length == 1 |
- ? singleKind : multipleKind, |
- {'class': cls.name, |
- 'name': name.text, |
- 'method': interfaceMember, |
- 'declarer': inherited.declarer}); |
+ ? singleKind |
+ : multipleKind, |
+ { |
+ 'class': cls.name, |
+ 'name': name.text, |
+ 'method': interfaceMember, |
+ 'declarer': inherited.declarer |
+ }); |
List<DiagnosticMessage> infos = <DiagnosticMessage>[]; |
for (Member inherited in interfaceMember.declarations) { |
infos.add(reporter.createMessage( |
inherited.element, |
- inherited.isDeclaredByField ? |
- implicitlyDeclaredKind : explicitlyDeclaredKind, |
- {'class': inherited.declarer.name, |
- 'name': name.text})); |
+ inherited.isDeclaredByField |
+ ? implicitlyDeclaredKind |
+ : explicitlyDeclaredKind, |
+ {'class': inherited.declarer.name, 'name': name.text})); |
} |
reporter.reportWarning(warning, infos); |
}); |
} |
if (interfaceMember.isSetter) { |
- reportWarning(MessageKind.UNIMPLEMENTED_SETTER_ONE, |
- MessageKind.UNIMPLEMENTED_SETTER, |
- MessageKind.UNIMPLEMENTED_EXPLICIT_SETTER, |
- MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER); |
+ reportWarning( |
+ MessageKind.UNIMPLEMENTED_SETTER_ONE, |
+ MessageKind.UNIMPLEMENTED_SETTER, |
+ MessageKind.UNIMPLEMENTED_EXPLICIT_SETTER, |
+ MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER); |
} else if (interfaceMember.isGetter) { |
- reportWarning(MessageKind.UNIMPLEMENTED_GETTER_ONE, |
- MessageKind.UNIMPLEMENTED_GETTER, |
- MessageKind.UNIMPLEMENTED_EXPLICIT_GETTER, |
- MessageKind.UNIMPLEMENTED_IMPLICIT_GETTER); |
+ reportWarning( |
+ MessageKind.UNIMPLEMENTED_GETTER_ONE, |
+ MessageKind.UNIMPLEMENTED_GETTER, |
+ MessageKind.UNIMPLEMENTED_EXPLICIT_GETTER, |
+ MessageKind.UNIMPLEMENTED_IMPLICIT_GETTER); |
} else if (interfaceMember.isMethod) { |
- reportWarning(MessageKind.UNIMPLEMENTED_METHOD_ONE, |
- MessageKind.UNIMPLEMENTED_METHOD, |
- MessageKind.UNIMPLEMENTED_METHOD_CONT); |
+ reportWarning( |
+ MessageKind.UNIMPLEMENTED_METHOD_ONE, |
+ MessageKind.UNIMPLEMENTED_METHOD, |
+ MessageKind.UNIMPLEMENTED_METHOD_CONT); |
} |
} |
// TODO(johnniwinther): If [cls] is not abstract, check that for all |
@@ -326,13 +323,12 @@ abstract class MembersCreator { |
if (compiler.backend.isBackendLibrary(cls.library)) return; |
reportMessage(functionClass, MessageKind.UNIMPLEMENTED_METHOD, () { |
- reporter.reportWarningMessage( |
- cls, |
- MessageKind.UNIMPLEMENTED_METHOD_ONE, |
- {'class': cls.name, |
- 'name': Identifiers.call, |
- 'method': Identifiers.call, |
- 'declarer': functionClass.name}); |
+ reporter.reportWarningMessage(cls, MessageKind.UNIMPLEMENTED_METHOD_ONE, { |
+ 'class': cls.name, |
+ 'name': Identifiers.call, |
+ 'method': Identifiers.call, |
+ 'declarer': functionClass.name |
+ }); |
}); |
} |
@@ -346,23 +342,20 @@ abstract class MembersCreator { |
if (!declared.isStatic) { |
ClassElement superclass = cls.superclass; |
while (superclass != null) { |
- Member superMember = |
- superclass.lookupClassMember(declared.name); |
+ Member superMember = superclass.lookupClassMember(declared.name); |
if (superMember != null && superMember.isStatic) { |
reportMessage(superMember, MessageKind.INSTANCE_STATIC_SAME_NAME, |
() { |
reporter.reportWarning( |
reporter.createMessage( |
- declared.element, |
- MessageKind.INSTANCE_STATIC_SAME_NAME, |
- {'memberName': declared.name, |
- 'className': superclass.name}), |
+ declared.element, MessageKind.INSTANCE_STATIC_SAME_NAME, { |
+ 'memberName': declared.name, |
+ 'className': superclass.name |
+ }), |
<DiagnosticMessage>[ |
- reporter.createMessage( |
- superMember.element, |
- MessageKind.INSTANCE_STATIC_SAME_NAME_CONT), |
+ reporter.createMessage(superMember.element, |
+ MessageKind.INSTANCE_STATIC_SAME_NAME_CONT), |
]); |
- |
}); |
break; |
} |
@@ -380,11 +373,12 @@ abstract class MembersCreator { |
continue; |
} |
- reportMessage( |
- inherited.element, MessageKind.NO_STATIC_OVERRIDE, () { |
+ reportMessage(inherited.element, MessageKind.NO_STATIC_OVERRIDE, () { |
reportErrorWithContext( |
- declared.element, MessageKind.NO_STATIC_OVERRIDE, |
- inherited.element, MessageKind.NO_STATIC_OVERRIDE_CONT); |
+ declared.element, |
+ MessageKind.NO_STATIC_OVERRIDE, |
+ inherited.element, |
+ MessageKind.NO_STATIC_OVERRIDE_CONT); |
}); |
} |
} |
@@ -398,105 +392,102 @@ abstract class MembersCreator { |
// An error should already have been reported. |
assert(invariant(declared.element, compiler.compilationFailed, |
message: "Member $inherited inherited from its " |
- "declaring class: ${cls}.")); |
+ "declaring class: ${cls}.")); |
continue; |
} |
void reportError(MessageKind errorKind, MessageKind infoKind) { |
- reportMessage( |
- inherited.element, MessageKind.INVALID_OVERRIDE_METHOD, () { |
+ reportMessage(inherited.element, MessageKind.INVALID_OVERRIDE_METHOD, |
+ () { |
reporter.reportError( |
- reporter.createMessage( |
- declared.element, |
- errorKind, |
- {'name': declared.name.text, |
- 'class': cls.thisType, |
- 'inheritedClass': inherited.declarer}), |
+ reporter.createMessage(declared.element, errorKind, { |
+ 'name': declared.name.text, |
+ 'class': cls.thisType, |
+ 'inheritedClass': inherited.declarer |
+ }), |
<DiagnosticMessage>[ |
- reporter.createMessage( |
- inherited.element, |
- infoKind, |
- {'name': declared.name.text, |
- 'class': inherited.declarer}), |
+ reporter.createMessage(inherited.element, infoKind, { |
+ 'name': declared.name.text, |
+ 'class': inherited.declarer |
+ }), |
]); |
}); |
} |
if (declared.isDeclaredByField && inherited.isMethod) { |
reportError(MessageKind.CANNOT_OVERRIDE_METHOD_WITH_FIELD, |
- MessageKind.CANNOT_OVERRIDE_METHOD_WITH_FIELD_CONT); |
+ MessageKind.CANNOT_OVERRIDE_METHOD_WITH_FIELD_CONT); |
} else if (declared.isMethod && inherited.isDeclaredByField) { |
reportError(MessageKind.CANNOT_OVERRIDE_FIELD_WITH_METHOD, |
- MessageKind.CANNOT_OVERRIDE_FIELD_WITH_METHOD_CONT); |
+ MessageKind.CANNOT_OVERRIDE_FIELD_WITH_METHOD_CONT); |
} else if (declared.isGetter && inherited.isMethod) { |
reportError(MessageKind.CANNOT_OVERRIDE_METHOD_WITH_GETTER, |
- MessageKind.CANNOT_OVERRIDE_METHOD_WITH_GETTER_CONT); |
+ MessageKind.CANNOT_OVERRIDE_METHOD_WITH_GETTER_CONT); |
} else if (declared.isMethod && inherited.isGetter) { |
reportError(MessageKind.CANNOT_OVERRIDE_GETTER_WITH_METHOD, |
- MessageKind.CANNOT_OVERRIDE_GETTER_WITH_METHOD_CONT); |
+ MessageKind.CANNOT_OVERRIDE_GETTER_WITH_METHOD_CONT); |
} else { |
DartType inheritedType = inherited.functionType; |
if (!compiler.types.isSubtype(declaredType, inheritedType)) { |
- void reportWarning(var marker, |
- MessageKind warningKind, |
- MessageKind infoKind) { |
+ void reportWarning( |
+ var marker, MessageKind warningKind, MessageKind infoKind) { |
reportMessage(marker, MessageKind.INVALID_OVERRIDE_METHOD, () { |
reporter.reportWarning( |
- reporter.createMessage( |
- declared.element, |
- warningKind, |
- {'declaredType': declared.type, |
- 'name': declared.name.text, |
- 'class': cls.thisType, |
- 'inheritedType': inherited.type, |
- 'inheritedClass': inherited.declarer}), |
+ reporter.createMessage(declared.element, warningKind, { |
+ 'declaredType': declared.type, |
+ 'name': declared.name.text, |
+ 'class': cls.thisType, |
+ 'inheritedType': inherited.type, |
+ 'inheritedClass': inherited.declarer |
+ }), |
<DiagnosticMessage>[ |
- reporter.createMessage( |
- inherited.element, |
- infoKind, |
- {'name': declared.name.text, |
- 'class': inherited.declarer}), |
+ reporter.createMessage(inherited.element, infoKind, { |
+ 'name': declared.name.text, |
+ 'class': inherited.declarer |
+ }), |
]); |
}); |
} |
if (declared.isDeclaredByField) { |
if (inherited.isDeclaredByField) { |
- reportWarning(inherited.element, |
- MessageKind.INVALID_OVERRIDE_FIELD, |
- MessageKind.INVALID_OVERRIDDEN_FIELD); |
+ reportWarning( |
+ inherited.element, |
+ MessageKind.INVALID_OVERRIDE_FIELD, |
+ MessageKind.INVALID_OVERRIDDEN_FIELD); |
} else if (inherited.isGetter) { |
- reportWarning(inherited, |
- MessageKind.INVALID_OVERRIDE_GETTER_WITH_FIELD, |
- MessageKind.INVALID_OVERRIDDEN_GETTER); |
+ reportWarning( |
+ inherited, |
+ MessageKind.INVALID_OVERRIDE_GETTER_WITH_FIELD, |
+ MessageKind.INVALID_OVERRIDDEN_GETTER); |
} else if (inherited.isSetter) { |
- reportWarning(inherited, |
- MessageKind.INVALID_OVERRIDE_SETTER_WITH_FIELD, |
- MessageKind.INVALID_OVERRIDDEN_SETTER); |
+ reportWarning( |
+ inherited, |
+ MessageKind.INVALID_OVERRIDE_SETTER_WITH_FIELD, |
+ MessageKind.INVALID_OVERRIDDEN_SETTER); |
} |
} else if (declared.isGetter) { |
if (inherited.isDeclaredByField) { |
- reportWarning(inherited, |
- MessageKind.INVALID_OVERRIDE_FIELD_WITH_GETTER, |
- MessageKind.INVALID_OVERRIDDEN_FIELD); |
+ reportWarning( |
+ inherited, |
+ MessageKind.INVALID_OVERRIDE_FIELD_WITH_GETTER, |
+ MessageKind.INVALID_OVERRIDDEN_FIELD); |
} else { |
- reportWarning(inherited, |
- MessageKind.INVALID_OVERRIDE_GETTER, |
- MessageKind.INVALID_OVERRIDDEN_GETTER); |
+ reportWarning(inherited, MessageKind.INVALID_OVERRIDE_GETTER, |
+ MessageKind.INVALID_OVERRIDDEN_GETTER); |
} |
} else if (declared.isSetter) { |
if (inherited.isDeclaredByField) { |
- reportWarning(inherited, |
- MessageKind.INVALID_OVERRIDE_FIELD_WITH_SETTER, |
- MessageKind.INVALID_OVERRIDDEN_FIELD); |
+ reportWarning( |
+ inherited, |
+ MessageKind.INVALID_OVERRIDE_FIELD_WITH_SETTER, |
+ MessageKind.INVALID_OVERRIDDEN_FIELD); |
} else { |
- reportWarning(inherited, |
- MessageKind.INVALID_OVERRIDE_SETTER, |
- MessageKind.INVALID_OVERRIDDEN_SETTER); |
+ reportWarning(inherited, MessageKind.INVALID_OVERRIDE_SETTER, |
+ MessageKind.INVALID_OVERRIDDEN_SETTER); |
} |
} else { |
- reportWarning(inherited, |
- MessageKind.INVALID_OVERRIDE_METHOD, |
- MessageKind.INVALID_OVERRIDDEN_METHOD); |
+ reportWarning(inherited, MessageKind.INVALID_OVERRIDE_METHOD, |
+ MessageKind.INVALID_OVERRIDDEN_METHOD); |
} |
} |
} |
@@ -504,36 +495,37 @@ abstract class MembersCreator { |
} |
} |
- void reportErrorWithContext(Element errorneousElement, |
- MessageKind errorMessage, |
- Element contextElement, |
- MessageKind contextMessage) { |
+ void reportErrorWithContext( |
+ Element errorneousElement, |
+ MessageKind errorMessage, |
+ Element contextElement, |
+ MessageKind contextMessage) { |
reporter.reportError( |
- reporter.createMessage( |
- errorneousElement, |
- errorMessage, |
- {'memberName': contextElement.name, |
- 'className': contextElement.enclosingClass.name}), |
+ reporter.createMessage(errorneousElement, errorMessage, { |
+ 'memberName': contextElement.name, |
+ 'className': contextElement.enclosingClass.name |
+ }), |
<DiagnosticMessage>[ |
- reporter.createMessage(contextElement, contextMessage), |
+ reporter.createMessage(contextElement, contextMessage), |
]); |
} |
/// Compute all class and interface names by the [name] in [cls]. |
- static void computeClassMembersByName(Compiler compiler, |
- ClassMemberMixin cls, |
- String name) { |
+ static void computeClassMembersByName( |
+ Compiler compiler, ClassMemberMixin cls, String name) { |
if (cls.isMemberComputed(name)) return; |
LibraryElement library = cls.library; |
- _computeClassMember(compiler, cls, name, |
- new Setlet<Name>()..add(new Name(name, library)) |
- ..add(new Name(name, library, isSetter: true))); |
+ _computeClassMember( |
+ compiler, |
+ cls, |
+ name, |
+ new Setlet<Name>() |
+ ..add(new Name(name, library)) |
+ ..add(new Name(name, library, isSetter: true))); |
} |
- static void _computeClassMember(Compiler compiler, |
- ClassMemberMixin cls, |
- String name, |
- Setlet<Name> names) { |
+ static void _computeClassMember(Compiler compiler, ClassMemberMixin cls, |
+ String name, Setlet<Name> names) { |
cls.computeClassMember(compiler, name, names); |
} |
@@ -546,10 +538,8 @@ abstract class MembersCreator { |
/// Class member creator for classes where the interface members are known to |
/// be a subset of the class members. |
class ClassMembersCreator extends MembersCreator { |
- ClassMembersCreator(Compiler compiler, |
- ClassElement cls, |
- Iterable<String> computedMemberNames, |
- Map<Name, Member> classMembers) |
+ ClassMembersCreator(Compiler compiler, ClassElement cls, |
+ Iterable<String> computedMemberNames, Map<Name, Member> classMembers) |
: super(compiler, cls, computedMemberNames, classMembers); |
Map<Name, Member> computeMembers(String name, Setlet<Name> names) { |
@@ -565,7 +555,7 @@ class ClassMembersCreator extends MembersCreator { |
LibraryElement library = cls.library; |
classMembers.forEach((Name name, Member classMember) { |
if (!name.isAccessibleFrom(library)) return; |
- checkInterfaceMember(name, classMember, classMember.implementation); |
+ checkInterfaceMember(name, classMember, classMember.implementation); |
}); |
} |
} |
@@ -575,11 +565,12 @@ class ClassMembersCreator extends MembersCreator { |
class InterfaceMembersCreator extends MembersCreator { |
final Map<Name, MemberSignature> interfaceMembers; |
- InterfaceMembersCreator(Compiler compiler, |
- ClassElement cls, |
- Iterable<String> computedMemberNames, |
- Map<Name, Member> classMembers, |
- Map<Name, MemberSignature> this.interfaceMembers) |
+ InterfaceMembersCreator( |
+ Compiler compiler, |
+ ClassElement cls, |
+ Iterable<String> computedMemberNames, |
+ Map<Name, Member> classMembers, |
+ Map<Name, MemberSignature> this.interfaceMembers) |
: super(compiler, cls, computedMemberNames, classMembers); |
Map<Name, Member> computeMembers(String name, Setlet<Name> names) { |
@@ -596,16 +587,14 @@ class InterfaceMembersCreator extends MembersCreator { |
/// |
/// If [name] and [names] are not null, the computation is restricted to |
/// members with these names. |
- Map<Name, Setlet<Member>> computeSuperMembers(String name, |
- Setlet<Name> names) { |
+ Map<Name, Setlet<Member>> computeSuperMembers( |
+ String name, Setlet<Name> names) { |
computeSuperClassMembers(name, names); |
return computeSuperInterfaceMembers(name, names); |
} |
- Map<Name, Setlet<Member>> computeSuperInterfaceMembers(String name, |
- Setlet<Name> names) { |
- |
- |
+ Map<Name, Setlet<Member>> computeSuperInterfaceMembers( |
+ String name, Setlet<Name> names) { |
InterfaceType supertype = cls.supertype; |
assert(invariant(cls, supertype != null, |
message: "Interface members computed for $cls.")); |
@@ -614,12 +603,11 @@ class InterfaceMembersCreator extends MembersCreator { |
Map<Name, Setlet<Member>> inheritedInterfaceMembers = |
new Map<Name, Setlet<Member>>(); |
- void inheritInterfaceMember(InterfaceType supertype, |
- MemberSignature member) { |
+ void inheritInterfaceMember( |
+ InterfaceType supertype, MemberSignature member) { |
if (shouldSkipMember(member)) return; |
- Setlet<Member> members = |
- inheritedInterfaceMembers.putIfAbsent( |
- member.name, () => new Setlet<Member>()); |
+ Setlet<Member> members = inheritedInterfaceMembers.putIfAbsent( |
+ member.name, () => new Setlet<Member>()); |
for (DeclaredMember declaredMember in member.declarations) { |
members.add(declaredMember.inheritFrom(supertype)); |
} |
@@ -633,8 +621,8 @@ class InterfaceMembersCreator extends MembersCreator { |
if (names != null) { |
for (Name memberName in names) { |
- inheritInterfaceMember(supertype, |
- superclass.lookupInterfaceMember(memberName)); |
+ inheritInterfaceMember( |
+ supertype, superclass.lookupInterfaceMember(memberName)); |
} |
} else { |
inheritInterfaceMembers(supertype); |
@@ -642,8 +630,8 @@ class InterfaceMembersCreator extends MembersCreator { |
// Inherit interface members from superinterfaces. |
for (Link<DartType> link = cls.interfaces; |
- !link.isEmpty; |
- link = link.tail) { |
+ !link.isEmpty; |
+ link = link.tail) { |
InterfaceType superinterface = link.head; |
if (names != null) { |
MembersCreator._computeClassMember( |
@@ -677,14 +665,14 @@ class InterfaceMembersCreator extends MembersCreator { |
/// interface members [inheritedInterfaceMembers] and declared members |
/// [declaredMembers]. The computed members are stored in [interfaceMembers]. |
void computeInterfaceMembers( |
- Map<Name, Setlet<Member>> inheritedInterfaceMembers, |
- Map<Name, Member> declaredMembers) { |
+ Map<Name, Setlet<Member>> inheritedInterfaceMembers, |
+ Map<Name, Member> declaredMembers) { |
InterfaceType thisType = cls.thisType; |
// Compute the interface members by overriding the inherited members with |
// a declared member or by computing a single, possibly synthesized, |
// inherited member. |
- inheritedInterfaceMembers.forEach( |
- (Name name, Setlet<Member> inheritedMembers) { |
+ inheritedInterfaceMembers |
+ .forEach((Name name, Setlet<Member> inheritedMembers) { |
Member declared = declaredMembers[name]; |
if (declared != null) { |
// Check that [declaredMember] is a valid override |
@@ -710,19 +698,20 @@ class InterfaceMembersCreator extends MembersCreator { |
if (someAreGetters) break outer; |
} |
for (MemberSignature other in inheritedMembers) { |
- if (!compiler.types.isSubtype(inherited.functionType, |
- other.functionType)) { |
+ if (!compiler.types |
+ .isSubtype(inherited.functionType, other.functionType)) { |
continue outer; |
} |
} |
- subtypesOfAllInherited.putIfAbsent(inherited.functionType, |
- () => new Setlet<Member>()).add(inherited); |
+ subtypesOfAllInherited |
+ .putIfAbsent(inherited.functionType, () => new Setlet<Member>()) |
+ .add(inherited); |
} |
if (someAreGetters && !allAreGetters) { |
DiagnosticMessage warning = reporter.createMessage( |
cls, |
MessageKind.INHERIT_GETTER_AND_METHOD, |
- {'class': thisType, 'name': name.text }); |
+ {'class': thisType, 'name': name.text}); |
List<DiagnosticMessage> infos = <DiagnosticMessage>[]; |
for (Member inherited in inheritedMembers) { |
MessageKind kind; |
@@ -731,16 +720,14 @@ class InterfaceMembersCreator extends MembersCreator { |
} else { |
assert(invariant(cls, inherited.isGetter, |
message: 'Conflicting member is neither a method nor a ' |
- 'getter.')); |
+ 'getter.')); |
if (inherited.isDeclaredByField) { |
kind = MessageKind.INHERITED_IMPLICIT_GETTER; |
} else { |
kind = MessageKind.INHERITED_EXPLICIT_GETTER; |
} |
} |
- infos.add(reporter.createMessage( |
- inherited.element, |
- kind, |
+ infos.add(reporter.createMessage(inherited.element, kind, |
{'class': inherited.declarer, 'name': name.text})); |
} |
reporter.reportWarning(warning, infos); |
@@ -771,8 +758,7 @@ class InterfaceMembersCreator extends MembersCreator { |
} |
/// Create and inherit a synthesized member for [inheritedMembers]. |
- void _inheritedSynthesizedMember(Name name, |
- Setlet<Member> inheritedMembers) { |
+ void _inheritedSynthesizedMember(Name name, Setlet<Member> inheritedMembers) { |
// Multiple signatures with different types => create the synthesized |
// version. |
int minRequiredParameters; |
@@ -786,8 +772,7 @@ class InterfaceMembersCreator extends MembersCreator { |
} |
if (member.type.isFunctionType) { |
FunctionType type = member.type; |
- type.namedParameters.forEach( |
- (String name) => names.add(name)); |
+ type.namedParameters.forEach((String name) => names.add(name)); |
requiredParameters = type.parameterTypes.length; |
optionalParameters = type.optionalParameterTypes.length; |
} |
@@ -801,8 +786,7 @@ class InterfaceMembersCreator extends MembersCreator { |
maxPositionalParameters = positionalParameters; |
} |
} |
- int optionalParameters = |
- maxPositionalParameters - minRequiredParameters; |
+ int optionalParameters = maxPositionalParameters - minRequiredParameters; |
// TODO(johnniwinther): Support function types with both optional |
// and named parameters? |
if (optionalParameters == 0 || names.isEmpty) { |
@@ -811,18 +795,18 @@ class InterfaceMembersCreator extends MembersCreator { |
new List.filled(minRequiredParameters, dynamic); |
List<DartType> optionalParameterTypes = |
new List.filled(optionalParameters, dynamic); |
- List<String> namedParameters = |
- names.toList()..sort((a, b) => a.compareTo(b)); |
+ List<String> namedParameters = names.toList() |
+ ..sort((a, b) => a.compareTo(b)); |
List<DartType> namedParameterTypes = |
new List.filled(namedParameters.length, dynamic); |
FunctionType memberType = new FunctionType.synthesized( |
const DynamicType(), |
requiredParameterTypes, |
optionalParameterTypes, |
- namedParameters, namedParameterTypes); |
+ namedParameters, |
+ namedParameterTypes); |
DartType type = memberType; |
- if (inheritedMembers.first.isGetter || |
- inheritedMembers.first.isSetter) { |
+ if (inheritedMembers.first.isGetter || inheritedMembers.first.isSetter) { |
type = const DynamicType(); |
} |
interfaceMembers[name] = |
@@ -858,9 +842,9 @@ abstract class ClassMemberMixin implements ClassElement { |
if (interfaceMembersAreClassMembers) { |
ClassMemberMixin superclass = this.superclass; |
if ((superclass != null && |
- (!superclass.interfaceMembersAreClassMembers || |
- superclass.isMixinApplication)) || |
- !interfaces.isEmpty) { |
+ (!superclass.interfaceMembersAreClassMembers || |
+ superclass.isMixinApplication)) || |
+ !interfaces.isEmpty) { |
interfaceMembersAreClassMembers = false; |
} |
} |
@@ -869,10 +853,10 @@ abstract class ClassMemberMixin implements ClassElement { |
} |
} |
return interfaceMembersAreClassMembers |
- ? new ClassMembersCreator(compiler, this, |
- computedMemberNames, classMembers) |
- : new InterfaceMembersCreator(compiler, this, |
- computedMemberNames, classMembers, interfaceMembers); |
+ ? new ClassMembersCreator( |
+ compiler, this, computedMemberNames, classMembers) |
+ : new InterfaceMembersCreator(compiler, this, computedMemberNames, |
+ classMembers, interfaceMembers); |
} |
static Iterable<String> _EMPTY_MEMBERS_NAMES = const <String>[]; |
@@ -883,8 +867,9 @@ abstract class ClassMemberMixin implements ClassElement { |
void computeClassMember(Compiler compiler, String name, Setlet<Name> names) { |
if (isMemberComputed(name)) return; |
if (Name.isPrivateName(name)) { |
- names..add(new Name(name, library)) |
- ..add(new Name(name, library, isSetter: true)); |
+ names |
+ ..add(new Name(name, library)) |
+ ..add(new Name(name, library, isSetter: true)); |
} |
MembersCreator creator = _prepareCreator(compiler); |
creator.computeMembersByName(name, names); |
@@ -918,14 +903,12 @@ abstract class ClassMemberMixin implements ClassElement { |
if (computedMemberNames == null) { |
return classMembers != null; |
} else { |
- return name == Identifiers.call || |
- computedMemberNames.contains(name); |
+ return name == Identifiers.call || computedMemberNames.contains(name); |
} |
} |
Member lookupClassMember(Name name) { |
- assert(invariant(this, |
- isMemberComputed(name.text), |
+ assert(invariant(this, isMemberComputed(name.text), |
message: "Member ${name} has not been computed for $this.")); |
return classMembers[name]; |
} |