| 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 library kernel.transformations.method_call; | 5 library kernel.transformations.method_call; |
| 6 | 6 |
| 7 import 'dart:math' as math; | 7 import 'dart:math' as math; |
| 8 | 8 |
| 9 import '../ast.dart'; | 9 import '../ast.dart'; |
| 10 import '../class_hierarchy.dart'; | 10 import '../class_hierarchy.dart'; |
| (...skipping 870 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 881 // Mark the new procedure as visited already (i.e. don't rewrite it again!) | 881 // Mark the new procedure as visited already (i.e. don't rewrite it again!) |
| 882 _visited.add(procedure); | 882 _visited.add(procedure); |
| 883 | 883 |
| 884 return procedure; | 884 return procedure; |
| 885 } | 885 } |
| 886 | 886 |
| 887 /// Creates an "new _InvocationMirror(...)" invocation. | 887 /// Creates an "new _InvocationMirror(...)" invocation. |
| 888 ConstructorInvocation _createInvocation( | 888 ConstructorInvocation _createInvocation( |
| 889 String methodName, Arguments callArguments) { | 889 String methodName, Arguments callArguments) { |
| 890 if (_invocationMirrorConstructor == null) { | 890 if (_invocationMirrorConstructor == null) { |
| 891 Class clazz = coreTypes.getCoreClass('dart:core', '_InvocationMirror'); | 891 Class clazz = coreTypes.getClass('dart:core', '_InvocationMirror'); |
| 892 _invocationMirrorConstructor = clazz.constructors[0]; | 892 _invocationMirrorConstructor = clazz.constructors[0]; |
| 893 } | 893 } |
| 894 | 894 |
| 895 // The _InvocationMirror constructor takes the following arguments: | 895 // The _InvocationMirror constructor takes the following arguments: |
| 896 // * Method name (a string). | 896 // * Method name (a string). |
| 897 // * An arguments descriptor - a list consisting of: | 897 // * An arguments descriptor - a list consisting of: |
| 898 // - number of arguments (including receiver). | 898 // - number of arguments (including receiver). |
| 899 // - number of positional arguments (including receiver). | 899 // - number of positional arguments (including receiver). |
| 900 // - pairs (2 entries in the list) of | 900 // - pairs (2 entries in the list) of |
| 901 // * named arguments name. | 901 // * named arguments name. |
| (...skipping 23 matching lines...) Expand all Loading... |
| 925 new Arguments([ | 925 new Arguments([ |
| 926 new StringLiteral(methodName), | 926 new StringLiteral(methodName), |
| 927 _fixedLengthList(argumentsDescriptor), | 927 _fixedLengthList(argumentsDescriptor), |
| 928 _fixedLengthList(arguments), | 928 _fixedLengthList(arguments), |
| 929 new BoolLiteral(false) | 929 new BoolLiteral(false) |
| 930 ])); | 930 ])); |
| 931 } | 931 } |
| 932 | 932 |
| 933 /// Create a fixed length list containing given expressions. | 933 /// Create a fixed length list containing given expressions. |
| 934 Expression _fixedLengthList(List<Expression> list) { | 934 Expression _fixedLengthList(List<Expression> list) { |
| 935 if (_listFrom == null) { | 935 _listFrom ??= coreTypes.getMember('dart:core', 'List', 'from'); |
| 936 Class clazz = coreTypes.getCoreClass('dart:core', 'List'); | |
| 937 _listFrom = clazz.procedures.firstWhere((c) => c.name.name == "from"); | |
| 938 } | |
| 939 return new StaticInvocation( | 936 return new StaticInvocation( |
| 940 _listFrom, | 937 _listFrom, |
| 941 new Arguments([new ListLiteral(list)], | 938 new Arguments([new ListLiteral(list)], |
| 942 named: [new NamedExpression("growable", new BoolLiteral(false))], | 939 named: [new NamedExpression("growable", new BoolLiteral(false))], |
| 943 types: [const DynamicType()])); | 940 types: [const DynamicType()])); |
| 944 } | 941 } |
| 945 | 942 |
| 946 /// Creates a new procedure taking given arguments, caching it. | 943 /// Creates a new procedure taking given arguments, caching it. |
| 947 /// | 944 /// |
| 948 /// Copies any non-given default values for parameters into the new procedure | 945 /// Copies any non-given default values for parameters into the new procedure |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1307 return printStackTrace; | 1304 return printStackTrace; |
| 1308 } | 1305 } |
| 1309 } | 1306 } |
| 1310 | 1307 |
| 1311 class _Pair<K, V> { | 1308 class _Pair<K, V> { |
| 1312 final K key; | 1309 final K key; |
| 1313 final V value; | 1310 final V value; |
| 1314 | 1311 |
| 1315 _Pair(this.key, this.value); | 1312 _Pair(this.key, this.value); |
| 1316 } | 1313 } |
| OLD | NEW |