OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 // Helper to test compilation equivalence between source and .dill based | 5 // Helper to test compilation equivalence between source and .dill based |
6 // compilation. | 6 // compilation. |
7 library dart2js.kernel.compile_from_dill_test_helper; | 7 library dart2js.kernel.compile_from_dill_test_helper; |
8 | 8 |
9 import 'dart:async'; | 9 import 'dart:async'; |
10 import 'dart:io'; | 10 import 'dart:io'; |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 expectIdenticalOutput: test.expectIdenticalOutput); | 179 expectIdenticalOutput: test.expectIdenticalOutput); |
180 } | 180 } |
181 } | 181 } |
182 | 182 |
183 Future<ResultKind> runTest( | 183 Future<ResultKind> runTest( |
184 Uri entryPoint, Map<String, String> memorySourceFiles, | 184 Uri entryPoint, Map<String, String> memorySourceFiles, |
185 {bool skipWarnings: false, | 185 {bool skipWarnings: false, |
186 bool skipErrors: false, | 186 bool skipErrors: false, |
187 bool verbose: false, | 187 bool verbose: false, |
188 List<String> options: const <String>[], | 188 List<String> options: const <String>[], |
| 189 bool expectAstEquivalence: false, |
189 bool expectIdenticalOutput: true}) async { | 190 bool expectIdenticalOutput: true}) async { |
190 enableDebugMode(); | 191 enableDebugMode(); |
191 EnumCreator.matchKernelRepresentationForTesting = true; | 192 EnumCreator.matchKernelRepresentationForTesting = true; |
192 Elements.usePatchedDart2jsSdkSorting = true; | 193 Elements.usePatchedDart2jsSdkSorting = true; |
193 | 194 |
194 Directory dir = await Directory.systemTemp.createTemp('dart2js-with-dill'); | 195 Directory dir = await Directory.systemTemp.createTemp('dart2js-with-dill'); |
195 print('--- create temp directory $dir -------------------------------'); | 196 print('--- create temp directory $dir -------------------------------'); |
196 memorySourceFiles.forEach((String name, String source) { | 197 memorySourceFiles.forEach((String name, String source) { |
197 new File.fromUri(dir.uri.resolve(name)).writeAsStringSync(source); | 198 new File.fromUri(dir.uri.resolve(name)).writeAsStringSync(source); |
198 }); | 199 }); |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 elementFilter: elementFilter, | 275 elementFilter: elementFilter, |
275 verbose: verbose); | 276 verbose: verbose); |
276 | 277 |
277 checkEmitters(compiler1.backend.emitter, compiler2.backend.emitter, | 278 checkEmitters(compiler1.backend.emitter, compiler2.backend.emitter, |
278 elementEquivalence: (a, b) => equivalence.entityEquivalence(a, b), | 279 elementEquivalence: (a, b) => equivalence.entityEquivalence(a, b), |
279 typeEquivalence: (DartType a, DartType b) { | 280 typeEquivalence: (DartType a, DartType b) { |
280 return equivalence.typeEquivalence(unalias(a), b); | 281 return equivalence.typeEquivalence(unalias(a), b); |
281 }, | 282 }, |
282 verbose: verbose); | 283 verbose: verbose); |
283 | 284 |
284 checkGeneratedCode(compiler1.backend, compiler2.backend, | 285 if (expectAstEquivalence) { |
285 elementEquivalence: (a, b) => equivalence.entityEquivalence(a, b)); | 286 checkGeneratedCode(compiler1.backend, compiler2.backend, |
| 287 elementEquivalence: (a, b) => equivalence.entityEquivalence(a, b)); |
| 288 } |
286 | 289 |
287 if (expectIdenticalOutput) { | 290 if (expectIdenticalOutput) { |
288 print('--- checking output------- ---------------------------------------'); | 291 print('--- checking output------- ---------------------------------------'); |
289 collector1.outputMap | 292 collector1.outputMap |
290 .forEach((OutputType outputType, Map<String, BufferedOutputSink> map1) { | 293 .forEach((OutputType outputType, Map<String, BufferedOutputSink> map1) { |
291 if (outputType == OutputType.sourceMap) { | 294 if (outputType == OutputType.sourceMap) { |
292 // TODO(johnniwinther): Support source map from .dill. | 295 // TODO(johnniwinther): Support source map from .dill. |
293 return; | 296 return; |
294 } | 297 } |
295 Map<String, BufferedOutputSink> map2 = collector2.outputMap[outputType]; | 298 Map<String, BufferedOutputSink> map2 = collector2.outputMap[outputType]; |
296 checkSets(map1.keys, map2.keys, 'output', equality); | 299 checkSets(map1.keys, map2.keys, 'output', equality); |
297 map1.forEach((String name, BufferedOutputSink output1) { | 300 map1.forEach((String name, BufferedOutputSink output1) { |
298 BufferedOutputSink output2 = map2[name]; | 301 BufferedOutputSink output2 = map2[name]; |
299 Expect.stringEquals(output1.text, output2.text); | 302 Expect.stringEquals(output1.text, output2.text); |
300 }); | 303 }); |
301 }); | 304 }); |
302 } | 305 } |
303 return ResultKind.success; | 306 return ResultKind.success; |
304 } | 307 } |
OLD | NEW |