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

Unified Diff: dart/pkg/analyzer/lib/src/generated/element.dart

Issue 56933002: Version 0.8.10.1 (Closed) Base URL: http://dart.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « dart/pkg/analyzer/lib/src/generated/ast.dart ('k') | dart/pkg/analyzer/lib/src/generated/engine.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dart/pkg/analyzer/lib/src/generated/element.dart
===================================================================
--- dart/pkg/analyzer/lib/src/generated/element.dart (revision 29785)
+++ dart/pkg/analyzer/lib/src/generated/element.dart (working copy)
@@ -4312,9 +4312,14 @@
/**
* Is `true` if this variable is potentially mutated somewhere in its scope.
*/
- bool _isPotentiallyMutated2 = false;
+ bool _isPotentiallyMutatedInScope2 = false;
/**
+ * Is `true` if this variable is potentially mutated somewhere in closure.
+ */
+ bool _isPotentiallyMutatedInClosure2 = false;
+
+ /**
* The offset to the beginning of the visible range for this element.
*/
int _visibleRangeOffset = 0;
@@ -4344,13 +4349,21 @@
}
return new SourceRange(_visibleRangeOffset, _visibleRangeLength);
}
- bool get isPotentiallyMutated => _isPotentiallyMutated2;
+ bool get isPotentiallyMutatedInClosure => _isPotentiallyMutatedInClosure2;
+ bool get isPotentiallyMutatedInScope => _isPotentiallyMutatedInScope2;
/**
+ * Specifies that this variable is potentially mutated somewhere in closure.
+ */
+ void markPotentiallyMutatedInClosure() {
+ _isPotentiallyMutatedInClosure2 = true;
+ }
+
+ /**
* Specifies that this variable is potentially mutated somewhere in its scope.
*/
- void markPotentiallyMutated() {
- _isPotentiallyMutated2 = true;
+ void markPotentiallyMutatedInScope() {
+ _isPotentiallyMutatedInScope2 = true;
}
/**
@@ -4613,9 +4626,14 @@
/**
* Is `true` if this variable is potentially mutated somewhere in its scope.
*/
- bool _isPotentiallyMutated3 = false;
+ bool _isPotentiallyMutatedInScope3 = false;
/**
+ * Is `true` if this variable is potentially mutated somewhere in closure.
+ */
+ bool _isPotentiallyMutatedInClosure3 = false;
+
+ /**
* An array containing all of the parameters defined by this parameter element. There will only be
* parameters if this parameter is a function typed parameter.
*/
@@ -4685,13 +4703,21 @@
return new SourceRange(_visibleRangeOffset, _visibleRangeLength);
}
bool get isInitializingFormal => false;
- bool get isPotentiallyMutated => _isPotentiallyMutated3;
+ bool get isPotentiallyMutatedInClosure => _isPotentiallyMutatedInClosure3;
+ bool get isPotentiallyMutatedInScope => _isPotentiallyMutatedInScope3;
/**
+ * Specifies that this variable is potentially mutated somewhere in closure.
+ */
+ void markPotentiallyMutatedInClosure() {
+ _isPotentiallyMutatedInClosure3 = true;
+ }
+
+ /**
* Specifies that this variable is potentially mutated somewhere in its scope.
*/
- void markPotentiallyMutated() {
- _isPotentiallyMutated3 = true;
+ void markPotentiallyMutatedInScope() {
+ _isPotentiallyMutatedInScope3 = true;
}
/**
@@ -5191,12 +5217,20 @@
bool get isFinal => hasModifier(Modifier.FINAL);
/**
+ * Return `true` if this variable is potentially mutated somewhere in closure. This
+ * information is only available for local variables (including parameters).
+ *
+ * @return `true` if this variable is potentially mutated somewhere in closure
+ */
+ bool get isPotentiallyMutatedInClosure => false;
+
+ /**
* Return `true` if this variable is potentially mutated somewhere in its scope. This
* information is only available for local variables (including parameters).
*
* @return `true` if this variable is potentially mutated somewhere in its scope
*/
- bool get isPotentiallyMutated => false;
+ bool get isPotentiallyMutatedInScope => false;
/**
* Set whether this variable is const to correspond to the given value.
@@ -5835,7 +5869,7 @@
BottomTypeImpl() : super(null, "<bottom>");
bool operator ==(Object object) => identical(object, this);
bool get isBottom => true;
- bool isMoreSpecificThan(Type2 type) => true;
+ bool isMoreSpecificThan3(Type2 type, bool withDynamic) => true;
bool isSubtypeOf(Type2 type) => true;
bool isSupertypeOf(Type2 type) => false;
BottomTypeImpl substitute2(List<Type2> argumentTypes, List<Type2> parameterTypes) => this;
@@ -5860,11 +5894,11 @@
}
bool operator ==(Object object) => object is DynamicTypeImpl;
bool get isDynamic => true;
- bool isMoreSpecificThan(Type2 type) {
+ bool isMoreSpecificThan3(Type2 type, bool withDynamic) {
if (identical(this, type)) {
return true;
}
- return false;
+ return withDynamic;
}
bool isSubtypeOf(Type2 type) => true;
bool isSupertypeOf(Type2 type) => true;
@@ -6086,7 +6120,7 @@
return element.hashCode;
}
bool isAssignableTo(Type2 type) => this.isSubtypeOf(type);
- bool isMoreSpecificThan(Type2 type) {
+ bool isMoreSpecificThan3(Type2 type, bool withDynamic) {
if (type == null) {
return false;
} else if (identical(this, type) || type.isDynamic || type.isDartCoreFunction || type.isObject) {
@@ -6110,7 +6144,7 @@
return false;
} else if (t.normalParameterTypes.length > 0) {
for (int i = 0; i < tTypes.length; i++) {
- if (!tTypes[i].isMoreSpecificThan(sTypes[i])) {
+ if (!tTypes[i].isMoreSpecificThan3(sTypes[i], withDynamic)) {
return false;
}
}
@@ -6127,7 +6161,7 @@
if (typeT == null) {
return false;
}
- if (!typeT.isMoreSpecificThan(entryS.getValue())) {
+ if (!typeT.isMoreSpecificThan3(entryS.getValue(), withDynamic)) {
return false;
}
}
@@ -6141,7 +6175,7 @@
}
if (tOpTypes.length == 0 && sOpTypes.length == 0) {
for (int i = 0; i < sTypes.length; i++) {
- if (!tTypes[i].isMoreSpecificThan(sTypes[i])) {
+ if (!tTypes[i].isMoreSpecificThan3(sTypes[i], withDynamic)) {
return false;
}
}
@@ -6161,7 +6195,7 @@
sAllTypes[i] = sOpTypes[j];
}
for (int i = 0; i < sAllTypes.length; i++) {
- if (!tAllTypes[i].isMoreSpecificThan(sAllTypes[i])) {
+ if (!tAllTypes[i].isMoreSpecificThan3(sAllTypes[i], withDynamic)) {
return false;
}
}
@@ -6169,7 +6203,7 @@
}
Type2 tRetType = t.returnType;
Type2 sRetType = s.returnType;
- return sRetType.isVoid || tRetType.isMoreSpecificThan(sRetType);
+ return sRetType.isVoid || tRetType.isMoreSpecificThan3(sRetType, withDynamic);
}
bool isSubtypeOf(Type2 type) {
if (type == null) {
@@ -6698,35 +6732,40 @@
return element.name == "Function" && element.library.isDartCore;
}
bool isDirectSupertypeOf(InterfaceType type) {
- ClassElement i = element;
- ClassElement j = type.element;
- InterfaceType supertype = j.supertype;
+ InterfaceType i = this;
+ InterfaceType j = type;
+ ClassElement jElement = j.element;
+ InterfaceType supertype = jElement.supertype;
if (supertype == null) {
return false;
}
- ClassElement supertypeElement = supertype.element;
- if (supertypeElement == i) {
+ List<Type2> jArgs = j.typeArguments;
+ List<Type2> jVars = jElement.type.typeArguments;
+ supertype = supertype.substitute2(jArgs, jVars);
+ if (supertype == i) {
return true;
}
- for (InterfaceType interfaceType in j.interfaces) {
- if (interfaceType.element == i) {
+ for (InterfaceType interfaceType in jElement.interfaces) {
+ interfaceType = interfaceType.substitute2(jArgs, jVars);
+ if (interfaceType == i) {
return true;
}
}
- for (InterfaceType mixinType in j.mixins) {
- if (mixinType.element == i) {
+ for (InterfaceType mixinType in jElement.mixins) {
+ mixinType = mixinType.substitute2(jArgs, jVars);
+ if (mixinType == i) {
return true;
}
}
return false;
}
- bool isMoreSpecificThan(Type2 type) {
+ bool isMoreSpecificThan3(Type2 type, bool withDynamic) {
if (identical(type, DynamicTypeImpl.instance)) {
return true;
} else if (type is! InterfaceType) {
return false;
}
- return isMoreSpecificThan2(type as InterfaceType, new Set<ClassElement>());
+ return isMoreSpecificThan2(type as InterfaceType, new Set<ClassElement>(), withDynamic);
}
bool get isObject => element.supertype == null;
bool isSubtypeOf(Type2 type) {
@@ -6901,7 +6940,7 @@
builder.append(">");
}
}
- bool isMoreSpecificThan2(InterfaceType s, Set<ClassElement> visitedClasses) {
+ bool isMoreSpecificThan2(InterfaceType s, Set<ClassElement> visitedClasses, bool withDynamic) {
if (this == s) {
return true;
}
@@ -6917,7 +6956,7 @@
return false;
}
for (int i = 0; i < tArguments.length; i++) {
- if (!tArguments[i].isMoreSpecificThan(sArguments[i])) {
+ if (!tArguments[i].isMoreSpecificThan3(sArguments[i], withDynamic)) {
return false;
}
}
@@ -6929,16 +6968,16 @@
}
javaSetAdd(visitedClasses, element);
InterfaceType supertype = superclass;
- if (supertype != null && ((supertype as InterfaceTypeImpl)).isMoreSpecificThan2(s, visitedClasses)) {
+ if (supertype != null && ((supertype as InterfaceTypeImpl)).isMoreSpecificThan2(s, visitedClasses, withDynamic)) {
return true;
}
for (InterfaceType interfaceType in interfaces) {
- if (((interfaceType as InterfaceTypeImpl)).isMoreSpecificThan2(s, visitedClasses)) {
+ if (((interfaceType as InterfaceTypeImpl)).isMoreSpecificThan2(s, visitedClasses, withDynamic)) {
return true;
}
}
for (InterfaceType mixinType in mixins) {
- if (((mixinType as InterfaceTypeImpl)).isMoreSpecificThan2(s, visitedClasses)) {
+ if (((mixinType as InterfaceTypeImpl)).isMoreSpecificThan2(s, visitedClasses, withDynamic)) {
return true;
}
}
@@ -6952,7 +6991,6 @@
return false;
}
javaSetAdd(visitedClasses, elementT);
- typeT = substitute2(_typeArguments, elementT.type.typeArguments);
if (typeT == typeS) {
return true;
} else if (elementT == typeS.element) {
@@ -7052,7 +7090,8 @@
bool get isBottom => false;
bool get isDartCoreFunction => false;
bool get isDynamic => false;
- bool isMoreSpecificThan(Type2 type) => false;
+ bool isMoreSpecificThan(Type2 type) => isMoreSpecificThan3(type, false);
+ bool isMoreSpecificThan3(Type2 type, bool withDynamic) => false;
bool get isObject => false;
bool isSupertypeOf(Type2 type) => type.isSubtypeOf(this);
bool get isVoid => false;
@@ -7118,7 +7157,7 @@
bool operator ==(Object object) => object is TypeParameterTypeImpl && (element == ((object as TypeParameterTypeImpl)).element);
TypeParameterElement get element => super.element as TypeParameterElement;
int get hashCode => element.hashCode;
- bool isMoreSpecificThan(Type2 s) {
+ bool isMoreSpecificThan3(Type2 s, bool withDynamic) {
if (this == s) {
return true;
}
@@ -7128,9 +7167,9 @@
if (s.isDynamic) {
return true;
}
- return isMoreSpecificThan3(s, new Set<Type2>());
+ return isMoreSpecificThan4(s, new Set<Type2>(), withDynamic);
}
- bool isSubtypeOf(Type2 s) => isMoreSpecificThan(s);
+ bool isSubtypeOf(Type2 s) => isMoreSpecificThan3(s, true);
Type2 substitute2(List<Type2> argumentTypes, List<Type2> parameterTypes) {
int length = parameterTypes.length;
for (int i = 0; i < length; i++) {
@@ -7140,7 +7179,7 @@
}
return this;
}
- bool isMoreSpecificThan3(Type2 s, Set<Type2> visitedTypes) {
+ bool isMoreSpecificThan4(Type2 s, Set<Type2> visitedTypes, bool withDynamic) {
Type2 bound = element.bound;
if (s == bound) {
return true;
@@ -7157,9 +7196,9 @@
return false;
}
javaSetAdd(visitedTypes, bound);
- return boundTypeParameter.isMoreSpecificThan3(s, visitedTypes);
+ return boundTypeParameter.isMoreSpecificThan4(s, visitedTypes, withDynamic);
}
- return bound.isMoreSpecificThan(s);
+ return bound.isMoreSpecificThan3(s, withDynamic);
}
}
/**
@@ -7732,6 +7771,15 @@
bool isMoreSpecificThan(Type2 type);
/**
+ * Return `true` if this type is more specific than the given type.
+ *
+ * @param type the type being compared with this type
+ * @param withDynamic `true` if "dynamic" should be considered as a subtype of any type
+ * @return `true` if this type is more specific than the given type
+ */
+ bool isMoreSpecificThan3(Type2 type, bool withDynamic);
+
+ /**
* Return `true` if this type represents the type 'Object'.
*
* @return `true` if this type represents the type 'Object'
« no previous file with comments | « dart/pkg/analyzer/lib/src/generated/ast.dart ('k') | dart/pkg/analyzer/lib/src/generated/engine.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698