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 |