| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 library kernel.transformations.mixin_full_resolution; | 4 library kernel.transformations.mixin_full_resolution; |
| 5 | 5 |
| 6 import '../ast.dart'; | 6 import '../ast.dart'; |
| 7 import '../class_hierarchy.dart'; | 7 import '../class_hierarchy.dart'; |
| 8 import '../clone.dart'; | 8 import '../clone.dart'; |
| 9 import '../core_types.dart'; | 9 import '../core_types.dart'; |
| 10 import '../type_algebra.dart'; | 10 import '../type_algebra.dart'; |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 new ThisExpression(), target, visitedArguments) | 225 new ThisExpression(), target, visitedArguments) |
| 226 ..fileOffset = node.fileOffset; | 226 ..fileOffset = node.fileOffset; |
| 227 } else if (target == null || (target is Procedure && !target.isAccessor)) { | 227 } else if (target == null || (target is Procedure && !target.isAccessor)) { |
| 228 // Target not found at all, or call was illegal. | 228 // Target not found at all, or call was illegal. |
| 229 return _callNoSuchMethod(node.name.name, visitedArguments, node, | 229 return _callNoSuchMethod(node.name.name, visitedArguments, node, |
| 230 isSuper: true); | 230 isSuper: true); |
| 231 } else if (target != null) { | 231 } else if (target != null) { |
| 232 return new MethodInvocation( | 232 return new MethodInvocation( |
| 233 new DirectPropertyGet(new ThisExpression(), target), | 233 new DirectPropertyGet(new ThisExpression(), target), |
| 234 new Name('call'), | 234 new Name('call'), |
| 235 visitedArguments)..fileOffset = node.fileOffset; | 235 visitedArguments) |
| 236 ..fileOffset = node.fileOffset; |
| 236 } | 237 } |
| 237 } | 238 } |
| 238 | 239 |
| 239 /// Create a call to no such method. | 240 /// Create a call to no such method. |
| 240 Expression _callNoSuchMethod( | 241 Expression _callNoSuchMethod( |
| 241 String methodName, Arguments methodArguments, TreeNode node, | 242 String methodName, Arguments methodArguments, TreeNode node, |
| 242 {isSuper: false, isGetter: false, isSetter: false}) { | 243 {isSuper: false, isGetter: false, isSetter: false}) { |
| 243 Member noSuchMethod = | 244 Member noSuchMethod = |
| 244 hierarchy.getDispatchTarget(lookupClass, new Name("noSuchMethod")); | 245 hierarchy.getDispatchTarget(lookupClass, new Name("noSuchMethod")); |
| 245 String methodNameUsed = (isGetter) | 246 String methodNameUsed = (isGetter) |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 370 return null; | 371 return null; |
| 371 } | 372 } |
| 372 } | 373 } |
| 373 | 374 |
| 374 throw new Exception( | 375 throw new Exception( |
| 375 'Could not find a generative constructor named "${constructor.name}" ' | 376 'Could not find a generative constructor named "${constructor.name}" ' |
| 376 'in lookup class "${lookupClass.name}"!'); | 377 'in lookup class "${lookupClass.name}"!'); |
| 377 } | 378 } |
| 378 } | 379 } |
| 379 } | 380 } |
| OLD | NEW |