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

Unified Diff: pkg/compiler/lib/src/js_backend/constant_system_javascript.dart

Issue 1559233002: WIP: Compute constant expressions in resolution. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 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/js_backend/constant_system_javascript.dart
diff --git a/pkg/compiler/lib/src/js_backend/constant_system_javascript.dart b/pkg/compiler/lib/src/js_backend/constant_system_javascript.dart
index 3dca32bb4515634d3d6e46465927ddeec5b7a12c..83a8355651c5f9bbeb325d8d135b8895fc3b1e90 100644
--- a/pkg/compiler/lib/src/js_backend/constant_system_javascript.dart
+++ b/pkg/compiler/lib/src/js_backend/constant_system_javascript.dart
@@ -9,7 +9,7 @@ import '../constants/constant_system.dart';
import '../constants/values.dart';
import '../constant_system_dart.dart';
import '../dart_types.dart';
-import '../elements/elements.dart' show ClassElement;
+import '../elements/elements.dart' show ClassElement, FieldElement;
import '../tree/tree.dart' show DartString, LiteralDartString;
import 'js_backend.dart';
@@ -193,6 +193,7 @@ class JavaScriptConstantSystem extends ConstantSystem {
const JavaScriptBinaryArithmeticOperation(const MultiplyOperation());
final negate = const JavaScriptNegateOperation();
final not = const NotOperation();
+ final notEqual = const NotEqualsOperation();
final shiftLeft =
const JavaScriptBinaryBitOperation(const ShiftLeftOperation());
final shiftRight = const JavaScriptShiftRightOperation();
@@ -267,6 +268,19 @@ class JavaScriptConstantSystem extends ConstantSystem {
compiler.backend.typeImplementation.computeType(compiler.resolution));
}
+ @override
+ ConstantValue createSymbol(Compiler compiler, String text) {
+ InterfaceType type = compiler.symbolClass.rawType;
+ ConstantValue argument = createString(new DartString.literal(text));
+ Map<FieldElement, ConstantValue> fields = <FieldElement, ConstantValue>{};
+ compiler.symbolImplementationClass.forEachInstanceField(
+ (ClassElement enclosingClass, FieldElement field) {
+ fields[field] = argument;
+ });
+ assert(fields.length == 1);
+ return new ConstructedConstantValue(type, fields);
+ }
+
// Integer checks don't verify that the number is not -0.0.
bool isInt(ConstantValue constant) => constant.isInt || constant.isMinusZero;
bool isDouble(ConstantValue constant)
« no previous file with comments | « pkg/compiler/lib/src/js_backend/constant_handler_javascript.dart ('k') | pkg/compiler/lib/src/js_backend/namer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698