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

Unified Diff: pkg/compiler/lib/src/common/resolution.dart

Issue 2250193002: Move definition of Feature next to definitions of WorldImpact and Use (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 4 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/common/resolution.dart
diff --git a/pkg/compiler/lib/src/common/resolution.dart b/pkg/compiler/lib/src/common/resolution.dart
index 841e77cc6849f89595f94935144678683285dcfb..42f7b32bc57ec55f8954c29b5386a2acf8350267 100644
--- a/pkg/compiler/lib/src/common/resolution.dart
+++ b/pkg/compiler/lib/src/common/resolution.dart
@@ -10,7 +10,7 @@ import '../compiler.dart' show Compiler;
import '../constants/expressions.dart' show ConstantExpression;
import '../constants/values.dart' show ConstantValue;
import '../core_types.dart' show CoreClasses, CoreTypes;
-import '../dart_types.dart' show DartType, InterfaceType, Types;
+import '../dart_types.dart' show DartType, Types;
import '../elements/elements.dart'
show
AstElement,
@@ -36,6 +36,7 @@ import '../resolution/resolution.dart';
import '../tree/tree.dart' show Send, TypeAnnotation;
import '../universe/call_structure.dart' show CallStructure;
import '../universe/world_impact.dart' show WorldImpact;
+import '../universe/feature.dart';
import 'backend_api.dart';
import 'work.dart' show ItemCompilationContext, WorkItem;
@@ -69,132 +70,6 @@ class ResolutionImpact extends WorldImpact {
Iterable<dynamic> get nativeData => const <dynamic>[];
}
-/// A language feature seen during resolution.
-// TODO(johnniwinther): Should mirror usage be part of this?
-enum Feature {
- /// Invocation of a generative construction on an abstract class.
- ABSTRACT_CLASS_INSTANTIATION,
-
- /// An assert statement with no message.
- ASSERT,
-
- /// An assert statement with a message.
- ASSERT_WITH_MESSAGE,
-
- /// A method with an `async` body modifier.
- ASYNC,
-
- /// An asynchronous for in statement like `await for (var e in i) {}`.
- ASYNC_FOR_IN,
-
- /// A method with an `async*` body modifier.
- ASYNC_STAR,
-
- /// A catch statement.
- CATCH_STATEMENT,
-
- /// A compile time error.
- COMPILE_TIME_ERROR,
-
- /// A fall through in a switch case.
- FALL_THROUGH_ERROR,
-
- /// A ++/-- operation.
- INC_DEC_OPERATION,
-
- /// A field whose initialization is not a constant.
- LAZY_FIELD,
-
- /// A catch clause with a variable for the stack trace.
- STACK_TRACE_IN_CATCH,
-
- /// String interpolation.
- STRING_INTERPOLATION,
-
- /// String juxtaposition.
- STRING_JUXTAPOSITION,
-
- /// An implicit call to `super.noSuchMethod`, like calling an unresolved
- /// super method.
- SUPER_NO_SUCH_METHOD,
-
- /// A redirection to the `Symbol` constructor.
- SYMBOL_CONSTRUCTOR,
-
- /// An synchronous for in statement, like `for (var e in i) {}`.
- SYNC_FOR_IN,
-
- /// A method with a `sync*` body modifier.
- SYNC_STAR,
-
- /// A throw expression.
- THROW_EXPRESSION,
-
- /// An implicit throw of a `NoSuchMethodError`, like calling an unresolved
- /// static method.
- THROW_NO_SUCH_METHOD,
-
- /// An implicit throw of a runtime error, like
- THROW_RUNTIME_ERROR,
-
- /// The need for a type variable bound check, like instantiation of a generic
- /// type whose type variable have non-trivial bounds.
- TYPE_VARIABLE_BOUNDS_CHECK,
-}
-
-/// A use of a map literal seen during resolution.
-class MapLiteralUse {
- final InterfaceType type;
- final bool isConstant;
- final bool isEmpty;
-
- MapLiteralUse(this.type, {this.isConstant: false, this.isEmpty: false});
-
- int get hashCode {
- return type.hashCode * 13 +
- isConstant.hashCode * 17 +
- isEmpty.hashCode * 19;
- }
-
- bool operator ==(other) {
- if (identical(this, other)) return true;
- if (other is! MapLiteralUse) return false;
- return type == other.type &&
- isConstant == other.isConstant &&
- isEmpty == other.isEmpty;
- }
-
- String toString() {
- return 'MapLiteralUse($type,isConstant:$isConstant,isEmpty:$isEmpty)';
- }
-}
-
-/// A use of a list literal seen during resolution.
-class ListLiteralUse {
- final InterfaceType type;
- final bool isConstant;
- final bool isEmpty;
-
- ListLiteralUse(this.type, {this.isConstant: false, this.isEmpty: false});
-
- int get hashCode {
- return type.hashCode * 13 +
- isConstant.hashCode * 17 +
- isEmpty.hashCode * 19;
- }
-
- bool operator ==(other) {
- if (identical(this, other)) return true;
- if (other is! ListLiteralUse) return false;
- return type == other.type &&
- isConstant == other.isConstant &&
- isEmpty == other.isEmpty;
- }
-
- String toString() {
- return 'ListLiteralUse($type,isConstant:$isConstant,isEmpty:$isEmpty)';
- }
-}
/// Interface for the accessing the front-end analysis.
// TODO(johnniwinther): Find a better name for this.

Powered by Google App Engine
This is Rietveld 408576698