| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 // Test that computation of callers of an element works when two | 5 // Test that computation of callers of an element works when two |
| 6 // elements of the same name are being invoked in the same method. | 6 // elements of the same name are being invoked in the same method. |
| 7 | 7 |
| 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/common_elements.dart'; |
| 10 import 'package:compiler/src/inferrer/type_graph_inferrer.dart'; | 11 import 'package:compiler/src/inferrer/type_graph_inferrer.dart'; |
| 11 import 'package:compiler/src/world.dart' show ClosedWorld, ClosedWorldRefiner; | 12 import 'package:compiler/src/world.dart' show ClosedWorld, ClosedWorldRefiner; |
| 12 | 13 |
| 13 import 'compiler_helper.dart'; | 14 import 'compiler_helper.dart'; |
| 14 | 15 |
| 15 const String TEST = """ | 16 const String TEST = """ |
| 16 class A { | 17 class A { |
| 17 var field; | 18 var field; |
| 18 } | 19 } |
| 19 | 20 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 32 class MyInferrer extends TypeGraphInferrer { | 33 class MyInferrer extends TypeGraphInferrer { |
| 33 MyInferrer(compiler, closedWorld, closedWorldRefiner) | 34 MyInferrer(compiler, closedWorld, closedWorldRefiner) |
| 34 : super(compiler, closedWorld, closedWorldRefiner); | 35 : super(compiler, closedWorld, closedWorldRefiner); |
| 35 clear() {} | 36 clear() {} |
| 36 } | 37 } |
| 37 | 38 |
| 38 void main() { | 39 void main() { |
| 39 Uri uri = new Uri(scheme: 'source'); | 40 Uri uri = new Uri(scheme: 'source'); |
| 40 var compiler = compilerFor(TEST, uri, analyzeOnly: true); | 41 var compiler = compilerFor(TEST, uri, analyzeOnly: true); |
| 41 asyncTest(() => compiler.run(uri).then((_) { | 42 asyncTest(() => compiler.run(uri).then((_) { |
| 42 ClosedWorldRefiner closedWorldRefiner = compiler.closeResolution(); | 43 ElementEnvironment elementEnvironment = |
| 44 compiler.frontendStrategy.elementEnvironment; |
| 45 ClosedWorldRefiner closedWorldRefiner = |
| 46 compiler.closeResolution(elementEnvironment.mainFunction); |
| 43 ClosedWorld closedWorld = | 47 ClosedWorld closedWorld = |
| 44 compiler.resolutionWorldBuilder.closedWorldForTesting; | 48 compiler.resolutionWorldBuilder.closedWorldForTesting; |
| 45 var inferrer = | 49 var inferrer = |
| 46 new MyInferrer(compiler, closedWorld, closedWorldRefiner); | 50 new MyInferrer(compiler, closedWorld, closedWorldRefiner); |
| 47 compiler.globalInference.typesInferrerInternal = inferrer; | 51 compiler.globalInference.typesInferrerInternal = inferrer; |
| 48 compiler.globalInference.runGlobalTypeInference( | 52 compiler.globalInference.runGlobalTypeInference( |
| 49 compiler.mainFunction, closedWorld, closedWorldRefiner); | 53 closedWorld.elementEnvironment.mainFunction, |
| 54 closedWorld, |
| 55 closedWorldRefiner); |
| 50 var mainElement = findElement(compiler, 'main'); | 56 var mainElement = findElement(compiler, 'main'); |
| 51 var classA = findElement(compiler, 'A'); | 57 var classA = findElement(compiler, 'A'); |
| 52 var fieldA = classA.lookupLocalMember('field'); | 58 var fieldA = classA.lookupLocalMember('field'); |
| 53 var classB = findElement(compiler, 'B'); | 59 var classB = findElement(compiler, 'B'); |
| 54 var fieldB = classB.lookupLocalMember('field'); | 60 var fieldB = classB.lookupLocalMember('field'); |
| 55 | 61 |
| 56 Expect.isTrue(inferrer.getCallersOf(fieldA).contains(mainElement)); | 62 Expect.isTrue(inferrer.getCallersOf(fieldA).contains(mainElement)); |
| 57 Expect.isTrue(inferrer.getCallersOf(fieldB).contains(mainElement)); | 63 Expect.isTrue(inferrer.getCallersOf(fieldB).contains(mainElement)); |
| 58 })); | 64 })); |
| 59 } | 65 } |
| OLD | NEW |