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

Unified Diff: pkg/compiler/lib/src/inferrer/type_graph_nodes.dart

Issue 1859343004: dartfmt pkg/compiler (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
diff --git a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
index 0ed437c2c86365e8d92fabc26483070f86d78c3f..181553991fa9f96d908141a9c8370e334cdf5d99 100644
--- a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
+++ b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
@@ -11,34 +11,26 @@ import '../common/names.dart' show Identifiers;
import '../compiler.dart' show Compiler;
import '../constants/values.dart';
import '../cps_ir/cps_ir_nodes.dart' as cps_ir show Node;
-import '../dart_types.dart' show
- DartType,
- FunctionType,
- InterfaceType,
- TypeKind;
+import '../dart_types.dart'
+ show DartType, FunctionType, InterfaceType, TypeKind;
import '../elements/elements.dart';
import '../native/native.dart' as native;
-import '../tree/tree.dart' as ast show
- DartString,
- Node,
- LiteralBool,
- Send,
- SendSet,
- TryStatement;
-import '../types/types.dart' show
- ContainerTypeMask,
- DictionaryTypeMask,
- MapTypeMask,
- TypeMask,
- ValueTypeMask;
+import '../tree/tree.dart' as ast
+ show DartString, Node, LiteralBool, Send, SendSet, TryStatement;
+import '../types/types.dart'
+ show
+ ContainerTypeMask,
+ DictionaryTypeMask,
+ MapTypeMask,
+ TypeMask,
+ ValueTypeMask;
import '../universe/selector.dart' show Selector;
import '../util/util.dart' show ImmutableEmptySet, Setlet;
import '../world.dart' show ClassWorld;
import 'inferrer_visitor.dart' show ArgumentsTypes;
-import 'type_graph_inferrer.dart' show
- TypeGraphInferrerEngine,
- TypeInformationSystem;
+import 'type_graph_inferrer.dart'
+ show TypeGraphInferrerEngine, TypeInformationSystem;
import 'debug.dart' as debug;
/**
@@ -105,8 +97,9 @@ abstract class TypeInformation {
bool get isConcrete => false;
- TypeInformation(this.context) : _assignments = <TypeInformation>[],
- users = new Setlet<TypeInformation>();
+ TypeInformation(this.context)
+ : _assignments = <TypeInformation>[],
+ users = new Setlet<TypeInformation>();
TypeInformation.noAssignments(this.context)
: _assignments = const <TypeInformation>[],
@@ -220,7 +213,9 @@ abstract class TypeInformation {
}
void removeAndClearReferences(TypeGraphInferrerEngine inferrer) {
- assignments.forEach((info) { info.removeUser(this); });
+ assignments.forEach((info) {
+ info.removeUser(this);
+ });
}
void stabilize(TypeGraphInferrerEngine inferrer) {
@@ -279,8 +274,7 @@ class PlaceholderTypeInformation extends TypeInformation {
* called.
*/
class ParameterAssignments extends IterableBase<TypeInformation> {
- final Map<TypeInformation, int> assignments =
- new Map<TypeInformation, int>();
+ final Map<TypeInformation, int> assignments = new Map<TypeInformation, int>();
void remove(TypeInformation info) {
int existing = assignments[info];
@@ -365,8 +359,8 @@ abstract class ElementTypeInformation extends TypeInformation {
ElementTypeInformation._internal(MemberTypeInformation context, this.element)
: super(context);
- ElementTypeInformation._withAssignments(MemberTypeInformation context,
- this.element, assignments)
+ ElementTypeInformation._withAssignments(
+ MemberTypeInformation context, this.element, assignments)
: super.withAssignments(context, assignments);
}
@@ -467,7 +461,7 @@ class MemberTypeInformation extends ElementTypeInformation
TypeMask handleSpecialCases(TypeGraphInferrerEngine inferrer) {
if (element.isField &&
(!inferrer.backend.canBeUsedForGlobalOptimizations(element) ||
- inferrer.annotations.assumeDynamic(element))) {
+ inferrer.annotations.assumeDynamic(element))) {
// Do not infer types for fields that have a corresponding annotation or
// are assigned by synthesized calls
@@ -480,20 +474,24 @@ class MemberTypeInformation extends ElementTypeInformation
// goes in the work queue.
giveUp(inferrer);
if (element.isField) {
- return inferrer.typeOfNativeBehavior(
- native.NativeBehavior.ofFieldLoad(element, inferrer.compiler)).type;
+ return inferrer
+ .typeOfNativeBehavior(
+ native.NativeBehavior.ofFieldLoad(element, inferrer.compiler))
+ .type;
} else {
assert(element.isFunction ||
- element.isGetter ||
- element.isSetter ||
- element.isConstructor);
+ element.isGetter ||
+ element.isSetter ||
+ element.isConstructor);
TypedElement typedElement = element;
var elementType = typedElement.type;
if (elementType.kind != TypeKind.FUNCTION) {
return safeType(inferrer);
} else {
- return inferrer.typeOfNativeBehavior(
- native.NativeBehavior.ofMethod(element, inferrer.compiler)).type;
+ return inferrer
+ .typeOfNativeBehavior(
+ native.NativeBehavior.ofMethod(element, inferrer.compiler))
+ .type;
}
}
}
@@ -512,24 +510,22 @@ class MemberTypeInformation extends ElementTypeInformation
return null;
}
- TypeMask potentiallyNarrowType(TypeMask mask,
- TypeGraphInferrerEngine inferrer) {
+ TypeMask potentiallyNarrowType(
+ TypeMask mask, TypeGraphInferrerEngine inferrer) {
Compiler compiler = inferrer.compiler;
if (!compiler.options.trustTypeAnnotations &&
!compiler.options.enableTypeAssertions &&
!inferrer.annotations.trustTypeAnnotations(element)) {
return mask;
}
- if (element.isGenerativeConstructor ||
- element.isSetter) {
+ if (element.isGenerativeConstructor || element.isSetter) {
return mask;
}
if (element.isField) {
return _narrowType(compiler, mask, element.type);
}
- assert(element.isFunction ||
- element.isGetter ||
- element.isFactoryConstructor);
+ assert(
+ element.isFunction || element.isGetter || element.isFactoryConstructor);
FunctionType type = element.type;
return _narrowType(compiler, mask, type.returnType);
@@ -586,19 +582,19 @@ class ParameterTypeInformation extends ElementTypeInformation {
ParameterElement get element => super.element;
FunctionElement get declaration => element.functionDeclaration;
- ParameterTypeInformation._internal(ParameterElement element,
- TypeInformationSystem types)
- : super._internal(types.getInferredTypeOf(element.functionDeclaration),
- element) {
+ ParameterTypeInformation._internal(
+ ParameterElement element, TypeInformationSystem types)
+ : super._internal(
+ types.getInferredTypeOf(element.functionDeclaration), element) {
assert(!element.functionDeclaration.isInstanceMember);
}
- ParameterTypeInformation._instanceMember(ParameterElement element,
- TypeInformationSystem types)
+ ParameterTypeInformation._instanceMember(
+ ParameterElement element, TypeInformationSystem types)
: super._withAssignments(
- types.getInferredTypeOf(element.functionDeclaration),
- element,
- new ParameterAssignments()) {
+ types.getInferredTypeOf(element.functionDeclaration),
+ element,
+ new ParameterAssignments()) {
assert(element.functionDeclaration.isInstanceMember);
}
@@ -637,8 +633,8 @@ class ParameterTypeInformation extends ElementTypeInformation {
}
if (declaration.isInstanceMember &&
(declaration.name == Identifiers.noSuchMethod_ ||
- (declaration.name == Identifiers.call &&
- disableInferenceForClosures))) {
+ (declaration.name == Identifiers.call &&
+ disableInferenceForClosures))) {
// Do not infer types for parameters of [noSuchMethod] and
// [call] instance methods.
giveUp(inferrer);
@@ -661,8 +657,8 @@ class ParameterTypeInformation extends ElementTypeInformation {
return null;
}
- TypeMask potentiallyNarrowType(TypeMask mask,
- TypeGraphInferrerEngine inferrer) {
+ TypeMask potentiallyNarrowType(
+ TypeMask mask, TypeGraphInferrerEngine inferrer) {
Compiler compiler = inferrer.compiler;
if (!compiler.options.trustTypeAnnotations &&
!inferrer.annotations.trustTypeAnnotations(declaration)) {
@@ -678,8 +674,8 @@ class ParameterTypeInformation extends ElementTypeInformation {
TypeMask computeType(TypeGraphInferrerEngine inferrer) {
TypeMask special = handleSpecialCases(inferrer);
if (special != null) return special;
- return potentiallyNarrowType(inferrer.types.computeTypeMask(assignments),
- inferrer);
+ return potentiallyNarrowType(
+ inferrer.types.computeTypeMask(assignments), inferrer);
}
TypeMask safeType(TypeGraphInferrerEngine inferrer) {
@@ -721,14 +717,9 @@ abstract class CallSiteTypeInformation extends TypeInformation
final ArgumentsTypes arguments;
final bool inLoop;
- CallSiteTypeInformation(
- MemberTypeInformation context,
- this.call,
- this.caller,
- this.selector,
- this.mask,
- this.arguments,
- this.inLoop) : super.noAssignments(context);
+ CallSiteTypeInformation(MemberTypeInformation context, this.call, this.caller,
+ this.selector, this.mask, this.arguments, this.inLoop)
+ : super.noAssignments(context);
String toString() => 'Call site $call $type';
@@ -762,8 +753,8 @@ class StaticCallSiteTypeInformation extends CallSiteTypeInformation {
arguments.forEach((info) => info.addUser(this));
}
inferrer.updateParameterAssignments(
- this, calledElement, arguments, selector, mask, remove: false,
- addToQueue: false);
+ this, calledElement, arguments, selector, mask,
+ remove: false, addToQueue: false);
}
bool get isSynthesized {
@@ -808,6 +799,7 @@ class StaticCallSiteTypeInformation extends CallSiteTypeInformation {
class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
final TypeInformation receiver;
+
/// Cached targets of this call.
Iterable<Element> targets;
@@ -835,8 +827,8 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
callee.addCall(caller, call);
callee.addUser(this);
inferrer.updateParameterAssignments(
- this, element, arguments, selector, typeMask, remove: false,
- addToQueue: false);
+ this, element, arguments, selector, typeMask,
+ remove: false, addToQueue: false);
}
}
@@ -847,7 +839,8 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
if (mask != receiverType) {
return receiverType == inferrer.compiler.typesTask.dynamicType
- ? null : receiverType;
+ ? null
+ : receiverType;
} else {
return mask;
}
@@ -856,9 +849,9 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
bool targetsIncludeComplexNoSuchMethod(TypeGraphInferrerEngine inferrer) {
return targets.any((Element e) {
return e is FunctionElement &&
- e.isInstanceMember &&
- e.name == Identifiers.noSuchMethod_ &&
- inferrer.backend.isComplexNoSuchMethod(e);
+ e.isInstanceMember &&
+ e.name == Identifiers.noSuchMethod_ &&
+ inferrer.backend.isComplexNoSuchMethod(e);
});
}
@@ -868,9 +861,8 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
* example, we know int + int returns an int. The Dart code for
* [int.operator+] only says it returns a [num].
*/
- TypeInformation handleIntrisifiedSelector(Selector selector,
- TypeMask mask,
- TypeGraphInferrerEngine inferrer) {
+ TypeInformation handleIntrisifiedSelector(
+ Selector selector, TypeMask mask, TypeGraphInferrerEngine inferrer) {
ClassWorld classWorld = inferrer.classWorld;
if (!classWorld.backend.intImplementation.isResolved) return null;
if (mask == null) return null;
@@ -888,8 +880,8 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
return info.type.satisfies(uint31Implementation, classWorld);
}
bool isPositiveInt(info) {
- return info.type.satisfies(
- classWorld.backend.positiveIntImplementation, classWorld);
+ return info.type
+ .satisfies(classWorld.backend.positiveIntImplementation, classWorld);
}
String name = selector.name;
@@ -897,12 +889,16 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
// Dart code, for example:
// int + int -> int
// uint31 | uint31 -> uint31
- if (name == '*' || name == '+' || name == '%' || name == 'remainder' ||
+ if (name == '*' ||
+ name == '+' ||
+ name == '%' ||
+ name == 'remainder' ||
name == '~/') {
if (isPositiveInt(receiver) &&
arguments.hasOnePositionalArgumentThatMatches(isPositiveInt)) {
// uint31 + uint31 -> uint32
- if (name == '+' && isUInt31(receiver) &&
+ if (name == '+' &&
+ isUInt31(receiver) &&
arguments.hasOnePositionalArgumentThatMatches(isUInt31)) {
return inferrer.types.uint32Type;
} else {
@@ -954,8 +950,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
Compiler compiler = inferrer.compiler;
TypeMask maskToUse =
compiler.world.extendMaskIfReachesAll(selector, typeMask);
- bool canReachAll = compiler.enabledInvokeOn &&
- (maskToUse != typeMask);
+ bool canReachAll = compiler.enabledInvokeOn && (maskToUse != typeMask);
// If this call could potentially reach all methods that satisfy
// the untyped selector (through noSuchMethod's `Invocation`
@@ -972,27 +967,27 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
targets
.where((target) => !oldTargets.contains(target))
.forEach((element) {
- MemberTypeInformation callee =
- inferrer.types.getInferredTypeOf(element);
- callee.addCall(caller, call);
- callee.addUser(this);
- inferrer.updateParameterAssignments(
- this, element, arguments, selector, typeMask, remove: false,
- addToQueue: true);
- });
+ MemberTypeInformation callee =
+ inferrer.types.getInferredTypeOf(element);
+ callee.addCall(caller, call);
+ callee.addUser(this);
+ inferrer.updateParameterAssignments(
+ this, element, arguments, selector, typeMask,
+ remove: false, addToQueue: true);
+ });
// Walk over the old targets, and remove calls that cannot happen anymore.
oldTargets
.where((target) => !targets.contains(target))
.forEach((element) {
- MemberTypeInformation callee =
- inferrer.types.getInferredTypeOf(element);
- callee.removeCall(caller, call);
- callee.removeUser(this);
- inferrer.updateParameterAssignments(
- this, element, arguments, selector, typeMask, remove: true,
- addToQueue: true);
- });
+ MemberTypeInformation callee =
+ inferrer.types.getInferredTypeOf(element);
+ callee.removeCall(caller, call);
+ callee.removeUser(this);
+ inferrer.updateParameterAssignments(
+ this, element, arguments, selector, typeMask,
+ remove: true, addToQueue: true);
+ });
}
// Walk over the found targets, and compute the joined union type mask
@@ -1020,7 +1015,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
if (dictionaryTypeMask.typeMap.containsKey(key)) {
if (debug.VERBOSE) {
print("Dictionary lookup for $key yields "
- "${dictionaryTypeMask.typeMap[key]}.");
+ "${dictionaryTypeMask.typeMap[key]}.");
}
return dictionaryTypeMask.typeMap[key];
} else {
@@ -1034,8 +1029,7 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
}
MapTypeMask mapTypeMask = typeMask;
if (debug.VERBOSE) {
- print(
- "Map lookup for $selector yields ${mapTypeMask.valueType}.");
+ print("Map lookup for $selector yields ${mapTypeMask.valueType}.");
}
return mapTypeMask.valueType;
} else {
@@ -1067,8 +1061,8 @@ class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
inferrer.types.getInferredTypeOf(element);
callee.addCall(caller, call);
inferrer.updateParameterAssignments(
- this, element, arguments, selector, mask, remove: false,
- addToQueue: true);
+ this, element, arguments, selector, mask,
+ remove: false, addToQueue: true);
}
}
}
@@ -1171,8 +1165,7 @@ class ConcreteTypeInformation extends TypeInformation {
// needs to notify its users.
}
- void removeUser(TypeInformation user) {
- }
+ void removeUser(TypeInformation user) {}
void addAssignment(TypeInformation assignment) {
throw "Not supported";
@@ -1261,8 +1254,8 @@ class NarrowTypeInformation extends TypeInformation {
TypeMask computeType(TypeGraphInferrerEngine inferrer) {
TypeMask input = assignments.first.type;
- TypeMask intersection = input.intersection(typeAnnotation,
- inferrer.classWorld);
+ TypeMask intersection =
+ input.intersection(typeAnnotation, inferrer.classWorld);
if (debug.ANOMALY_WARN) {
if (!input.containsMask(intersection, inferrer.classWorld) ||
!typeAnnotation.containsMask(intersection, inferrer.classWorld)) {
@@ -1292,8 +1285,8 @@ abstract class InferredTypeInformation extends TypeInformation {
/** Whether the element type in that container has been inferred. */
bool inferred = false;
- InferredTypeInformation(MemberTypeInformation context,
- TypeInformation parentType)
+ InferredTypeInformation(
+ MemberTypeInformation context, TypeInformation parentType)
: super(context) {
if (parentType != null) addAssignment(parentType);
}
@@ -1312,8 +1305,7 @@ abstract class InferredTypeInformation extends TypeInformation {
* A [ListTypeInformation] is a [TypeInformation] created
* for each `List` instantiations.
*/
-class ListTypeInformation extends TypeInformation
- with TracedTypeInformation {
+class ListTypeInformation extends TypeInformation with TracedTypeInformation {
final ElementInContainerTypeInformation elementType;
/** The container type before it is inferred. */
@@ -1331,10 +1323,8 @@ class ListTypeInformation extends TypeInformation
*/
bool checksGrowable = true;
- ListTypeInformation(MemberTypeInformation context,
- this.originalType,
- this.elementType,
- this.originalLength)
+ ListTypeInformation(MemberTypeInformation context, this.originalType,
+ this.elementType, this.originalLength)
: super(context) {
type = originalType;
inferredLength = originalType.length;
@@ -1356,11 +1346,12 @@ class ListTypeInformation extends TypeInformation
if (!mask.isContainer ||
mask.elementType != elementType.type ||
mask.length != inferredLength) {
- return new ContainerTypeMask(originalType.forwardTo,
- originalType.allocationNode,
- originalType.allocationElement,
- elementType.type,
- inferredLength);
+ return new ContainerTypeMask(
+ originalType.forwardTo,
+ originalType.allocationNode,
+ originalType.allocationElement,
+ elementType.type,
+ inferredLength);
}
return mask;
}
@@ -1379,8 +1370,7 @@ class ListTypeInformation extends TypeInformation
* elements in a [ListTypeInformation].
*/
class ElementInContainerTypeInformation extends InferredTypeInformation {
- ElementInContainerTypeInformation(MemberTypeInformation context,
- elementType)
+ ElementInContainerTypeInformation(MemberTypeInformation context, elementType)
: super(context, elementType);
String toString() => 'Element in container $type';
@@ -1394,8 +1384,7 @@ class ElementInContainerTypeInformation extends InferredTypeInformation {
* A [MapTypeInformation] is a [TypeInformation] created
* for maps.
*/
-class MapTypeInformation extends TypeInformation
- with TracedTypeInformation {
+class MapTypeInformation extends TypeInformation with TracedTypeInformation {
// When in Dictionary mode, this map tracks the type of the values that
// have been assigned to a specific [String] key.
final Map<String, ValueInMapTypeInformation> typeInfoMap = {};
@@ -1409,25 +1398,22 @@ class MapTypeInformation extends TypeInformation
bool get inDictionaryMode => !bailedOut && _allKeysAreStrings;
- MapTypeInformation(MemberTypeInformation context,
- this.originalType,
- this.keyType,
- this.valueType)
+ MapTypeInformation(MemberTypeInformation context, this.originalType,
+ this.keyType, this.valueType)
: super(context) {
keyType.addUser(this);
valueType.addUser(this);
type = originalType;
}
- TypeInformation addEntryAssignment(TypeInformation key,
- TypeInformation value,
- [bool nonNull = false]) {
+ TypeInformation addEntryAssignment(TypeInformation key, TypeInformation value,
+ [bool nonNull = false]) {
TypeInformation newInfo = null;
if (_allKeysAreStrings && key is StringLiteralTypeInformation) {
String keyString = key.asString();
typeInfoMap.putIfAbsent(keyString, () {
- newInfo = new ValueInMapTypeInformation(context, null, nonNull);
- return newInfo;
+ newInfo = new ValueInMapTypeInformation(context, null, nonNull);
+ return newInfo;
});
typeInfoMap[keyString].addAssignment(value);
} else {
@@ -1482,18 +1468,20 @@ class MapTypeInformation extends TypeInformation
for (var key in typeInfoMap.keys) {
mappings[key] = typeInfoMap[key].type;
}
- return new DictionaryTypeMask(originalType.forwardTo,
- originalType.allocationNode,
- originalType.allocationElement,
- keyType.type,
- valueType.type,
- mappings);
+ return new DictionaryTypeMask(
+ originalType.forwardTo,
+ originalType.allocationNode,
+ originalType.allocationElement,
+ keyType.type,
+ valueType.type,
+ mappings);
} else {
- return new MapTypeMask(originalType.forwardTo,
- originalType.allocationNode,
- originalType.allocationElement,
- keyType.type,
- valueType.type);
+ return new MapTypeMask(
+ originalType.forwardTo,
+ originalType.allocationNode,
+ originalType.allocationElement,
+ keyType.type,
+ valueType.type);
}
}
@@ -1516,8 +1504,7 @@ class MapTypeInformation extends TypeInformation
}
} else if (type.isMap) {
MapTypeMask mask = type;
- if (mask.keyType != keyType.type ||
- mask.valueType != valueType.type) {
+ if (mask.keyType != keyType.type || mask.valueType != valueType.type) {
return toTypeMask(inferrer);
}
} else {
@@ -1531,8 +1518,8 @@ class MapTypeInformation extends TypeInformation
bool hasStableType(TypeGraphInferrerEngine inferrer) {
return keyType.isStable &&
- valueType.isStable &&
- super.hasStableType(inferrer);
+ valueType.isStable &&
+ super.hasStableType(inferrer);
}
void cleanup() {
@@ -1555,8 +1542,8 @@ class MapTypeInformation extends TypeInformation
* for the keys in a [MapTypeInformation]
*/
class KeyInMapTypeInformation extends InferredTypeInformation {
- KeyInMapTypeInformation(MemberTypeInformation context,
- TypeInformation keyType)
+ KeyInMapTypeInformation(
+ MemberTypeInformation context, TypeInformation keyType)
: super(context, keyType);
accept(TypeInformationVisitor visitor) {
@@ -1576,8 +1563,9 @@ class ValueInMapTypeInformation extends InferredTypeInformation {
// mode can ever be marked as [nonNull].
final bool nonNull;
- ValueInMapTypeInformation(MemberTypeInformation context,
- TypeInformation valueType, [this.nonNull = false])
+ ValueInMapTypeInformation(
+ MemberTypeInformation context, TypeInformation valueType,
+ [this.nonNull = false])
: super(context, valueType);
accept(TypeInformationVisitor visitor) {
@@ -1585,8 +1573,9 @@ class ValueInMapTypeInformation extends InferredTypeInformation {
}
TypeMask computeType(TypeGraphInferrerEngine inferrer) {
- return nonNull ? super.computeType(inferrer)
- : super.computeType(inferrer).nullable();
+ return nonNull
+ ? super.computeType(inferrer)
+ : super.computeType(inferrer).nullable();
}
String toString() => 'Value in Map $type';
@@ -1602,7 +1591,7 @@ class PhiElementTypeInformation extends TypeInformation {
final Local variable;
PhiElementTypeInformation(MemberTypeInformation context, this.branchNode,
- this.isLoopPhi, this.variable)
+ this.isLoopPhi, this.variable)
: super(context);
TypeMask computeType(TypeGraphInferrerEngine inferrer) {
@@ -1621,8 +1610,7 @@ class ClosureTypeInformation extends TypeInformation
final ast.Node node;
final Element element;
- ClosureTypeInformation(MemberTypeInformation context, this.node,
- this.element)
+ ClosureTypeInformation(MemberTypeInformation context, this.node, this.element)
: super(context);
TypeMask computeType(TypeGraphInferrerEngine inferrer) => safeType(inferrer);
@@ -1648,6 +1636,7 @@ class ClosureTypeInformation extends TypeInformation
abstract class TracedTypeInformation implements TypeInformation {
/// Set to false once analysis has succeeded.
bool bailedOut = true;
+
/// Set to true once analysis is completed.
bool analyzed = false;
@@ -1658,8 +1647,9 @@ abstract class TracedTypeInformation implements TypeInformation {
* flow in.
*/
Set<TypeInformation> get flowsInto {
- return (_flowsInto == null) ? const ImmutableEmptySet<TypeInformation>()
- : _flowsInto;
+ return (_flowsInto == null)
+ ? const ImmutableEmptySet<TypeInformation>()
+ : _flowsInto;
}
/**
« no previous file with comments | « pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart ('k') | pkg/compiler/lib/src/info/naive_analysis_result.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698