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

Unified Diff: tests/compiler/dart2js/constant_expression_evaluate_test.dart

Issue 1168393003: Enforce LF line endings in the git database. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: rebase Created 5 years, 6 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
« no previous file with comments | « tests/compiler/dart2js/check_members_test.dart ('k') | tests/compiler/dart2js/exit_code_helper.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/compiler/dart2js/constant_expression_evaluate_test.dart
diff --git a/tests/compiler/dart2js/constant_expression_evaluate_test.dart b/tests/compiler/dart2js/constant_expression_evaluate_test.dart
index 2e8241207981331f8139f189cd290971261f05ca..94a0213eaacb2ea6aba5b4dfb5c37746a40afbe2 100644
--- a/tests/compiler/dart2js/constant_expression_evaluate_test.dart
+++ b/tests/compiler/dart2js/constant_expression_evaluate_test.dart
@@ -1,237 +1,237 @@
-// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library dart2js.constants.expressions.evaluate_test;
-
-import 'dart:async';
-import 'package:async_helper/async_helper.dart';
-import 'package:expect/expect.dart';
-import 'package:compiler/src/constants/expressions.dart';
-import 'package:compiler/src/constants/values.dart';
-import 'package:compiler/src/constant_system_dart.dart';
-import 'package:compiler/src/core_types.dart';
-import 'package:compiler/src/dart2jslib.dart';
-import 'package:compiler/src/elements/elements.dart';
-import 'memory_compiler.dart';
-
-class TestData {
- /// Declarations needed for the [constants].
- final String declarations;
- /// Tested constants.
- final List constants;
-
- const TestData(this.declarations, this.constants);
-}
-
-class ConstantData {
- /// Source code for the constant expression.
- final String code;
- /// Map from environment to expected constant value as structured text.
- final Map<Map<String, String>, String> expectedValues;
-
- const ConstantData(this.code,
- this.expectedValues);
-}
-
-class MemoryEnvironment implements Environment {
- final Compiler compiler;
- final Map<String, String> env;
-
- MemoryEnvironment(this.compiler,
- [this.env = const <String, String>{}]);
-
- @override
- String readFromEnvironment(String name) => env[name];
-}
-
-const List<TestData> DATA = const [
- const TestData('', const [
- const ConstantData('null', const { const {} : 'NullConstant' }),
- const ConstantData('false', const { const {} : 'BoolConstant(false)' }),
- const ConstantData('true', const { const {} : 'BoolConstant(true)' }),
- const ConstantData('0', const { const {} : 'IntConstant(0)' }),
- const ConstantData('0.0', const { const {} : 'DoubleConstant(0.0)' }),
- const ConstantData('"foo"', const { const {} : 'StringConstant("foo")' }),
- const ConstantData('1 + 2', const { const {} : 'IntConstant(3)' }),
- const ConstantData('-(1)', const { const {} : 'IntConstant(-1)' }),
- const ConstantData('"foo".length', const { const {} : 'IntConstant(3)' }),
- const ConstantData('identical(0, 1)',
- const { const {} : 'BoolConstant(false)' }),
- const ConstantData('"a" "b"', const { const {} : 'StringConstant("ab")' }),
- const ConstantData('identical',
- const { const {} : 'FunctionConstant(identical)' }),
- const ConstantData('true ? 0 : 1', const { const {} : 'IntConstant(0)' }),
- const ConstantData('proxy',
- const { const {} : 'ConstructedConstant(_Proxy())' }),
- const ConstantData('Object', const { const {} : 'TypeConstant(Object)' }),
- const ConstantData('const [0, 1]',
- const { const {} : 'ListConstant([IntConstant(0), IntConstant(1)])' }),
- const ConstantData('const <int>[0, 1]', const {
- const {} : 'ListConstant(<int>[IntConstant(0), IntConstant(1)])' }),
- const ConstantData('const {0: 1, 2: 3}',
- const { const {} :
- 'MapConstant({IntConstant(0): IntConstant(1), '
- 'IntConstant(2): IntConstant(3)})' }),
- const ConstantData('const <int, int>{0: 1, 2: 3}',
- const { const {} :
- 'MapConstant(<int, int>{IntConstant(0): IntConstant(1), '
- 'IntConstant(2): IntConstant(3)})' }),
- const ConstantData(
- 'const bool.fromEnvironment("foo", defaultValue: false)',
- const { const {} : 'BoolConstant(false)',
- const {'foo': 'true'} : 'BoolConstant(true)'}),
- const ConstantData(
- 'const int.fromEnvironment("foo", defaultValue: 42)',
- const { const {} : 'IntConstant(42)',
- const {'foo': '87'} : 'IntConstant(87)'}),
- const ConstantData(
- 'const String.fromEnvironment("foo", defaultValue: "bar")',
- const { const {} : 'StringConstant("bar")',
- const {'foo': 'foo'} : 'StringConstant("foo")'}),
- ]),
- const TestData('''
-const a = const bool.fromEnvironment("foo", defaultValue: true);
-const b = const int.fromEnvironment("bar", defaultValue: 42);
-
-class A {
- const A();
-}
-class B {
- final field1;
- const B(this.field1);
-}
-class C extends B {
- final field2;
- const C({field1: 42, this.field2: false}) : super(field1);
- const C.named([field = false]) : this(field1: field, field2: field);
-}
-''', const [
- const ConstantData('const Object()',
- const { const {} : 'ConstructedConstant(Object())' }),
- const ConstantData('const A()',
- const { const {} : 'ConstructedConstant(A())' }),
- const ConstantData('const B(0)',
- const { const {} : 'ConstructedConstant(B(field1=IntConstant(0)))' }),
- const ConstantData('const B(const A())',
- const { const {} :
- 'ConstructedConstant(B(field1=ConstructedConstant(A())))' }),
- const ConstantData('const C()', const { const {} :
- 'ConstructedConstant(C(field1=IntConstant(42),'
- 'field2=BoolConstant(false)))' }),
- const ConstantData('const C(field1: 87)', const { const {} :
- 'ConstructedConstant(C(field1=IntConstant(87),'
- 'field2=BoolConstant(false)))' }),
- const ConstantData('const C(field2: true)', const { const {} :
- 'ConstructedConstant(C(field1=IntConstant(42),'
- 'field2=BoolConstant(true)))' }),
- const ConstantData('const C.named()', const { const {} :
- 'ConstructedConstant(C(field1=BoolConstant(false),'
- 'field2=BoolConstant(false)))' }),
- const ConstantData('const C.named(87)', const { const {} :
- 'ConstructedConstant(C(field1=IntConstant(87),'
- 'field2=IntConstant(87)))' }),
- const ConstantData('const C(field1: a, field2: b)', const {
- const {} :
- 'ConstructedConstant(C(field1=BoolConstant(true),'
- 'field2=IntConstant(42)))',
- const {'foo': 'false', 'bar': '87'} :
- 'ConstructedConstant(C(field1=BoolConstant(false),'
- 'field2=IntConstant(87)))', }),
- ]),
- const TestData('''
-class A<T> implements B {
- final field1;
- const A({this.field1:42});
-}
-class B<S> implements C {
- const factory B({field1}) = A<B<S>>;
- const factory B.named() = A<S>;
-}
-class C<U> {
- const factory C({field1}) = A<B<double>>;
-}
-''', const [
- const ConstantData('const A()',
- const { const {} :
- 'ConstructedConstant(A<dynamic>(field1=IntConstant(42)))' }),
- const ConstantData('const A<int>(field1: 87)',
- const { const {} :
- 'ConstructedConstant(A<int>(field1=IntConstant(87)))' }),
- const ConstantData('const B()',
- const { const {} :
- 'ConstructedConstant(A<B<dynamic>>(field1=IntConstant(42)))' }),
- const ConstantData('const B<int>()',
- const { const {} :
- 'ConstructedConstant(A<B<int>>(field1=IntConstant(42)))' }),
- const ConstantData('const B<int>(field1: 87)',
- const { const {} :
- 'ConstructedConstant(A<B<int>>(field1=IntConstant(87)))' }),
- const ConstantData('const C<int>(field1: 87)',
- const { const {} :
- 'ConstructedConstant(A<B<double>>(field1=IntConstant(87)))' }),
- const ConstantData('const B<int>.named()',
- const { const {} :
- 'ConstructedConstant(A<int>(field1=IntConstant(42)))' }),
- ]),
- const TestData('''
-const c = const int.fromEnvironment("foo", defaultValue: 5);
-const d = const int.fromEnvironment("bar", defaultValue: 10);
-
-class A {
- final field;
- const A(a, b) : field = a + b;
-}
-
-class B extends A {
- const B(a) : super(a, a * 2);
-}
-''', const [
- const ConstantData('const A(c, d)', const {
- const {} :
- 'ConstructedConstant(A(field=IntConstant(15)))',
- const {'foo': '7', 'bar': '11'} :
- 'ConstructedConstant(A(field=IntConstant(18)))', }),
- const ConstantData('const B(d)', const {
- const {} :
- 'ConstructedConstant(B(field=IntConstant(30)))',
- const {'bar': '42'} :
- 'ConstructedConstant(B(field=IntConstant(126)))', }),
- ]),
-];
-
-main() {
- asyncTest(() => Future.forEach(DATA, testData));
-}
-
-Future testData(TestData data) {
- StringBuffer sb = new StringBuffer();
- sb.write('${data.declarations}\n');
- Map constants = {};
- data.constants.forEach((ConstantData constantData) {
- String name = 'c${constants.length}';
- sb.write('const $name = ${constantData.code};\n');
- constants[name] = constantData;
- });
- sb.write('main() {}\n');
- String source = sb.toString();
- Compiler compiler = compilerFor(
- {'main.dart': source}, options: ['--analyze-all']);
- return compiler.runCompiler(Uri.parse('memory:main.dart')).then((_) {
- var library = compiler.mainApp;
- constants.forEach((String name, ConstantData data) {
- FieldElement field = library.localLookup(name);
- ConstantExpression constant = field.constant;
- data.expectedValues.forEach(
- (Map<String, String> env, String expectedText) {
- Environment environment = new MemoryEnvironment(compiler, env);
- ConstantValue value =
- constant.evaluate(environment, DART_CONSTANT_SYSTEM);
- String valueText = value.toStructuredString();
- Expect.equals(expectedText, valueText,
- "Unexpected value '${valueText}' for contant "
- "`${constant.getText()}`, expected '${expectedText}'.");
- });
- });
- });
-}
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library dart2js.constants.expressions.evaluate_test;
+
+import 'dart:async';
+import 'package:async_helper/async_helper.dart';
+import 'package:expect/expect.dart';
+import 'package:compiler/src/constants/expressions.dart';
+import 'package:compiler/src/constants/values.dart';
+import 'package:compiler/src/constant_system_dart.dart';
+import 'package:compiler/src/core_types.dart';
+import 'package:compiler/src/dart2jslib.dart';
+import 'package:compiler/src/elements/elements.dart';
+import 'memory_compiler.dart';
+
+class TestData {
+ /// Declarations needed for the [constants].
+ final String declarations;
+ /// Tested constants.
+ final List constants;
+
+ const TestData(this.declarations, this.constants);
+}
+
+class ConstantData {
+ /// Source code for the constant expression.
+ final String code;
+ /// Map from environment to expected constant value as structured text.
+ final Map<Map<String, String>, String> expectedValues;
+
+ const ConstantData(this.code,
+ this.expectedValues);
+}
+
+class MemoryEnvironment implements Environment {
+ final Compiler compiler;
+ final Map<String, String> env;
+
+ MemoryEnvironment(this.compiler,
+ [this.env = const <String, String>{}]);
+
+ @override
+ String readFromEnvironment(String name) => env[name];
+}
+
+const List<TestData> DATA = const [
+ const TestData('', const [
+ const ConstantData('null', const { const {} : 'NullConstant' }),
+ const ConstantData('false', const { const {} : 'BoolConstant(false)' }),
+ const ConstantData('true', const { const {} : 'BoolConstant(true)' }),
+ const ConstantData('0', const { const {} : 'IntConstant(0)' }),
+ const ConstantData('0.0', const { const {} : 'DoubleConstant(0.0)' }),
+ const ConstantData('"foo"', const { const {} : 'StringConstant("foo")' }),
+ const ConstantData('1 + 2', const { const {} : 'IntConstant(3)' }),
+ const ConstantData('-(1)', const { const {} : 'IntConstant(-1)' }),
+ const ConstantData('"foo".length', const { const {} : 'IntConstant(3)' }),
+ const ConstantData('identical(0, 1)',
+ const { const {} : 'BoolConstant(false)' }),
+ const ConstantData('"a" "b"', const { const {} : 'StringConstant("ab")' }),
+ const ConstantData('identical',
+ const { const {} : 'FunctionConstant(identical)' }),
+ const ConstantData('true ? 0 : 1', const { const {} : 'IntConstant(0)' }),
+ const ConstantData('proxy',
+ const { const {} : 'ConstructedConstant(_Proxy())' }),
+ const ConstantData('Object', const { const {} : 'TypeConstant(Object)' }),
+ const ConstantData('const [0, 1]',
+ const { const {} : 'ListConstant([IntConstant(0), IntConstant(1)])' }),
+ const ConstantData('const <int>[0, 1]', const {
+ const {} : 'ListConstant(<int>[IntConstant(0), IntConstant(1)])' }),
+ const ConstantData('const {0: 1, 2: 3}',
+ const { const {} :
+ 'MapConstant({IntConstant(0): IntConstant(1), '
+ 'IntConstant(2): IntConstant(3)})' }),
+ const ConstantData('const <int, int>{0: 1, 2: 3}',
+ const { const {} :
+ 'MapConstant(<int, int>{IntConstant(0): IntConstant(1), '
+ 'IntConstant(2): IntConstant(3)})' }),
+ const ConstantData(
+ 'const bool.fromEnvironment("foo", defaultValue: false)',
+ const { const {} : 'BoolConstant(false)',
+ const {'foo': 'true'} : 'BoolConstant(true)'}),
+ const ConstantData(
+ 'const int.fromEnvironment("foo", defaultValue: 42)',
+ const { const {} : 'IntConstant(42)',
+ const {'foo': '87'} : 'IntConstant(87)'}),
+ const ConstantData(
+ 'const String.fromEnvironment("foo", defaultValue: "bar")',
+ const { const {} : 'StringConstant("bar")',
+ const {'foo': 'foo'} : 'StringConstant("foo")'}),
+ ]),
+ const TestData('''
+const a = const bool.fromEnvironment("foo", defaultValue: true);
+const b = const int.fromEnvironment("bar", defaultValue: 42);
+
+class A {
+ const A();
+}
+class B {
+ final field1;
+ const B(this.field1);
+}
+class C extends B {
+ final field2;
+ const C({field1: 42, this.field2: false}) : super(field1);
+ const C.named([field = false]) : this(field1: field, field2: field);
+}
+''', const [
+ const ConstantData('const Object()',
+ const { const {} : 'ConstructedConstant(Object())' }),
+ const ConstantData('const A()',
+ const { const {} : 'ConstructedConstant(A())' }),
+ const ConstantData('const B(0)',
+ const { const {} : 'ConstructedConstant(B(field1=IntConstant(0)))' }),
+ const ConstantData('const B(const A())',
+ const { const {} :
+ 'ConstructedConstant(B(field1=ConstructedConstant(A())))' }),
+ const ConstantData('const C()', const { const {} :
+ 'ConstructedConstant(C(field1=IntConstant(42),'
+ 'field2=BoolConstant(false)))' }),
+ const ConstantData('const C(field1: 87)', const { const {} :
+ 'ConstructedConstant(C(field1=IntConstant(87),'
+ 'field2=BoolConstant(false)))' }),
+ const ConstantData('const C(field2: true)', const { const {} :
+ 'ConstructedConstant(C(field1=IntConstant(42),'
+ 'field2=BoolConstant(true)))' }),
+ const ConstantData('const C.named()', const { const {} :
+ 'ConstructedConstant(C(field1=BoolConstant(false),'
+ 'field2=BoolConstant(false)))' }),
+ const ConstantData('const C.named(87)', const { const {} :
+ 'ConstructedConstant(C(field1=IntConstant(87),'
+ 'field2=IntConstant(87)))' }),
+ const ConstantData('const C(field1: a, field2: b)', const {
+ const {} :
+ 'ConstructedConstant(C(field1=BoolConstant(true),'
+ 'field2=IntConstant(42)))',
+ const {'foo': 'false', 'bar': '87'} :
+ 'ConstructedConstant(C(field1=BoolConstant(false),'
+ 'field2=IntConstant(87)))', }),
+ ]),
+ const TestData('''
+class A<T> implements B {
+ final field1;
+ const A({this.field1:42});
+}
+class B<S> implements C {
+ const factory B({field1}) = A<B<S>>;
+ const factory B.named() = A<S>;
+}
+class C<U> {
+ const factory C({field1}) = A<B<double>>;
+}
+''', const [
+ const ConstantData('const A()',
+ const { const {} :
+ 'ConstructedConstant(A<dynamic>(field1=IntConstant(42)))' }),
+ const ConstantData('const A<int>(field1: 87)',
+ const { const {} :
+ 'ConstructedConstant(A<int>(field1=IntConstant(87)))' }),
+ const ConstantData('const B()',
+ const { const {} :
+ 'ConstructedConstant(A<B<dynamic>>(field1=IntConstant(42)))' }),
+ const ConstantData('const B<int>()',
+ const { const {} :
+ 'ConstructedConstant(A<B<int>>(field1=IntConstant(42)))' }),
+ const ConstantData('const B<int>(field1: 87)',
+ const { const {} :
+ 'ConstructedConstant(A<B<int>>(field1=IntConstant(87)))' }),
+ const ConstantData('const C<int>(field1: 87)',
+ const { const {} :
+ 'ConstructedConstant(A<B<double>>(field1=IntConstant(87)))' }),
+ const ConstantData('const B<int>.named()',
+ const { const {} :
+ 'ConstructedConstant(A<int>(field1=IntConstant(42)))' }),
+ ]),
+ const TestData('''
+const c = const int.fromEnvironment("foo", defaultValue: 5);
+const d = const int.fromEnvironment("bar", defaultValue: 10);
+
+class A {
+ final field;
+ const A(a, b) : field = a + b;
+}
+
+class B extends A {
+ const B(a) : super(a, a * 2);
+}
+''', const [
+ const ConstantData('const A(c, d)', const {
+ const {} :
+ 'ConstructedConstant(A(field=IntConstant(15)))',
+ const {'foo': '7', 'bar': '11'} :
+ 'ConstructedConstant(A(field=IntConstant(18)))', }),
+ const ConstantData('const B(d)', const {
+ const {} :
+ 'ConstructedConstant(B(field=IntConstant(30)))',
+ const {'bar': '42'} :
+ 'ConstructedConstant(B(field=IntConstant(126)))', }),
+ ]),
+];
+
+main() {
+ asyncTest(() => Future.forEach(DATA, testData));
+}
+
+Future testData(TestData data) {
+ StringBuffer sb = new StringBuffer();
+ sb.write('${data.declarations}\n');
+ Map constants = {};
+ data.constants.forEach((ConstantData constantData) {
+ String name = 'c${constants.length}';
+ sb.write('const $name = ${constantData.code};\n');
+ constants[name] = constantData;
+ });
+ sb.write('main() {}\n');
+ String source = sb.toString();
+ Compiler compiler = compilerFor(
+ {'main.dart': source}, options: ['--analyze-all']);
+ return compiler.runCompiler(Uri.parse('memory:main.dart')).then((_) {
+ var library = compiler.mainApp;
+ constants.forEach((String name, ConstantData data) {
+ FieldElement field = library.localLookup(name);
+ ConstantExpression constant = field.constant;
+ data.expectedValues.forEach(
+ (Map<String, String> env, String expectedText) {
+ Environment environment = new MemoryEnvironment(compiler, env);
+ ConstantValue value =
+ constant.evaluate(environment, DART_CONSTANT_SYSTEM);
+ String valueText = value.toStructuredString();
+ Expect.equals(expectedText, valueText,
+ "Unexpected value '${valueText}' for contant "
+ "`${constant.getText()}`, expected '${expectedText}'.");
+ });
+ });
+ });
+}
« no previous file with comments | « tests/compiler/dart2js/check_members_test.dart ('k') | tests/compiler/dart2js/exit_code_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698