OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library dart2js.constants.expressions.evaluate_test; | 5 library dart2js.constants.expressions.evaluate_test; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'package:async_helper/async_helper.dart'; | 8 import 'package:async_helper/async_helper.dart'; |
9 import 'package:expect/expect.dart'; | 9 import 'package:expect/expect.dart'; |
10 import 'package:compiler/src/constants/evaluation.dart'; | 10 import 'package:compiler/src/constants/evaluation.dart'; |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 } | 101 } |
102 class B { | 102 class B { |
103 final field1; | 103 final field1; |
104 const B(this.field1); | 104 const B(this.field1); |
105 } | 105 } |
106 class C extends B { | 106 class C extends B { |
107 final field2; | 107 final field2; |
108 const C({field1: 42, this.field2: false}) : super(field1); | 108 const C({field1: 42, this.field2: false}) : super(field1); |
109 const C.named([field = false]) : this(field1: field, field2: field); | 109 const C.named([field = false]) : this(field1: field, field2: field); |
110 } | 110 } |
111 class D extends C { | |
112 final field3 = 99; | |
113 const D(a, b) : super(field2: a, field1: b); | |
114 } | |
115 ''', const [ | 111 ''', const [ |
116 const ConstantData('const Object()', | 112 const ConstantData('const Object()', |
117 const { const {} : 'ConstructedConstant(Object())' }), | 113 const { const {} : 'ConstructedConstant(Object())' }), |
118 const ConstantData('const A()', | 114 const ConstantData('const A()', |
119 const { const {} : 'ConstructedConstant(A())' }), | 115 const { const {} : 'ConstructedConstant(A())' }), |
120 const ConstantData('const B(0)', | 116 const ConstantData('const B(0)', |
121 const { const {} : 'ConstructedConstant(B(field1=IntConstant(0)))' }), | 117 const { const {} : 'ConstructedConstant(B(field1=IntConstant(0)))' }), |
122 const ConstantData('const B(const A())', | 118 const ConstantData('const B(const A())', |
123 const { const {} : | 119 const { const {} : |
124 'ConstructedConstant(B(field1=ConstructedConstant(A())))' }), | 120 'ConstructedConstant(B(field1=ConstructedConstant(A())))' }), |
(...skipping 12 matching lines...) Expand all Loading... |
137 const ConstantData('const C.named(87)', const { const {} : | 133 const ConstantData('const C.named(87)', const { const {} : |
138 'ConstructedConstant(C(field1=IntConstant(87),' | 134 'ConstructedConstant(C(field1=IntConstant(87),' |
139 'field2=IntConstant(87)))' }), | 135 'field2=IntConstant(87)))' }), |
140 const ConstantData('const C(field1: a, field2: b)', const { | 136 const ConstantData('const C(field1: a, field2: b)', const { |
141 const {} : | 137 const {} : |
142 'ConstructedConstant(C(field1=BoolConstant(true),' | 138 'ConstructedConstant(C(field1=BoolConstant(true),' |
143 'field2=IntConstant(42)))', | 139 'field2=IntConstant(42)))', |
144 const {'foo': 'false', 'bar': '87'} : | 140 const {'foo': 'false', 'bar': '87'} : |
145 'ConstructedConstant(C(field1=BoolConstant(false),' | 141 'ConstructedConstant(C(field1=BoolConstant(false),' |
146 'field2=IntConstant(87)))', }), | 142 'field2=IntConstant(87)))', }), |
147 const ConstantData('const D(42, 87)', const { const {} : | |
148 'ConstructedConstant(D(field1=IntConstant(87),' | |
149 'field2=IntConstant(42),' | |
150 'field3=IntConstant(99)))' }), | |
151 ]), | 143 ]), |
152 const TestData(''' | 144 const TestData(''' |
153 class A<T> implements B { | 145 class A<T> implements B { |
154 final field1; | 146 final field1; |
155 const A({this.field1:42}); | 147 const A({this.field1:42}); |
156 } | 148 } |
157 class B<S> implements C { | 149 class B<S> implements C { |
158 const factory B({field1}) = A<B<S>>; | 150 const factory B({field1}) = A<B<S>>; |
159 const factory B.named() = A<S>; | 151 const factory B.named() = A<S>; |
160 } | 152 } |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 Environment environment = new MemoryEnvironment(compiler, env); | 229 Environment environment = new MemoryEnvironment(compiler, env); |
238 ConstantValue value = | 230 ConstantValue value = |
239 constant.evaluate(environment, DART_CONSTANT_SYSTEM); | 231 constant.evaluate(environment, DART_CONSTANT_SYSTEM); |
240 String valueText = value.toStructuredText(); | 232 String valueText = value.toStructuredText(); |
241 Expect.equals(expectedText, valueText, | 233 Expect.equals(expectedText, valueText, |
242 "Unexpected value '${valueText}' for contant " | 234 "Unexpected value '${valueText}' for contant " |
243 "`${constant.toDartText()}`, expected '${expectedText}'."); | 235 "`${constant.toDartText()}`, expected '${expectedText}'."); |
244 }); | 236 }); |
245 }); | 237 }); |
246 } | 238 } |
OLD | NEW |