| 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 | 4 |
| 5 /** | 5 /** |
| 6 * This library is capable of producing linked summaries from unlinked | 6 * This library is capable of producing linked summaries from unlinked |
| 7 * ones (or prelinked ones). It functions by building a miniature | 7 * ones (or prelinked ones). It functions by building a miniature |
| 8 * element model to represent the contents of the summaries, and then | 8 * element model to represent the contents of the summaries, and then |
| 9 * scanning the element model to gather linked information and adding | 9 * scanning the element model to gather linked information and adding |
| 10 * it to the summary data structures. | 10 * it to the summary data structures. |
| (...skipping 2247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2258 stack.add(BottomTypeImpl.instance); | 2258 stack.add(BottomTypeImpl.instance); |
| 2259 break; | 2259 break; |
| 2260 case UnlinkedExprOperation.pushLocalFunctionReference: | 2260 case UnlinkedExprOperation.pushLocalFunctionReference: |
| 2261 int popCount = _getNextInt(); | 2261 int popCount = _getNextInt(); |
| 2262 assert(popCount == 0); // TODO(paulberry): handle the nonzero case. | 2262 assert(popCount == 0); // TODO(paulberry): handle the nonzero case. |
| 2263 stack.add(function.functions[_getNextInt()].type); | 2263 stack.add(function.functions[_getNextInt()].type); |
| 2264 break; | 2264 break; |
| 2265 case UnlinkedExprOperation.pushParameter: | 2265 case UnlinkedExprOperation.pushParameter: |
| 2266 stack.add(_findParameterType(_getNextString())); | 2266 stack.add(_findParameterType(_getNextString())); |
| 2267 break; | 2267 break; |
| 2268 case UnlinkedExprOperation.ifNull: |
| 2269 _doIfNull(); |
| 2270 break; |
| 2268 default: | 2271 default: |
| 2269 // TODO(paulberry): implement. | 2272 // TODO(paulberry): implement. |
| 2270 throw new UnimplementedError('$operation'); | 2273 throw new UnimplementedError('$operation'); |
| 2271 } | 2274 } |
| 2272 } | 2275 } |
| 2273 assert(intPtr == unlinkedConst.ints.length); | 2276 assert(intPtr == unlinkedConst.ints.length); |
| 2274 assert(refPtr == unlinkedConst.references.length); | 2277 assert(refPtr == unlinkedConst.references.length); |
| 2275 assert(strPtr == unlinkedConst.strings.length); | 2278 assert(strPtr == unlinkedConst.strings.length); |
| 2276 assert(assignmentOperatorPtr == unlinkedConst.assignmentOperators.length); | 2279 assert(assignmentOperatorPtr == unlinkedConst.assignmentOperators.length); |
| 2277 assert(stack.length == 1); | 2280 assert(stack.length == 1); |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2397 } else { | 2400 } else { |
| 2398 // Method tear-off | 2401 // Method tear-off |
| 2399 return element.type; | 2402 return element.type; |
| 2400 } | 2403 } |
| 2401 } | 2404 } |
| 2402 } | 2405 } |
| 2403 return DynamicTypeImpl.instance; | 2406 return DynamicTypeImpl.instance; |
| 2404 }()); | 2407 }()); |
| 2405 } | 2408 } |
| 2406 | 2409 |
| 2410 void _doIfNull() { |
| 2411 DartType secondType = stack.removeLast(); |
| 2412 DartType firstType = stack.removeLast(); |
| 2413 DartType type = _leastUpperBound(firstType, secondType); |
| 2414 type = _dynamicIfNull(type); |
| 2415 stack.add(type); |
| 2416 } |
| 2417 |
| 2407 void _doInvokeConstructor() { | 2418 void _doInvokeConstructor() { |
| 2408 int numNamed = _getNextInt(); | 2419 int numNamed = _getNextInt(); |
| 2409 int numPositional = _getNextInt(); | 2420 int numPositional = _getNextInt(); |
| 2410 // TODO(paulberry): don't just pop the args; use their types | 2421 // TODO(paulberry): don't just pop the args; use their types |
| 2411 // to infer the type of type arguments. | 2422 // to infer the type of type arguments. |
| 2412 stack.length -= numNamed + numPositional; | 2423 stack.length -= numNamed + numPositional; |
| 2413 strPtr += numNamed; | 2424 strPtr += numNamed; |
| 2414 EntityRef ref = _getNextRef(); | 2425 EntityRef ref = _getNextRef(); |
| 2415 ClassElementForLink_Class element = | 2426 ClassElementForLink_Class element = |
| 2416 unit.resolveConstructorClassRef(ref.reference).asClass; | 2427 unit.resolveConstructorClassRef(ref.reference).asClass; |
| (...skipping 2662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5079 * there are no type parameters in scope. | 5090 * there are no type parameters in scope. |
| 5080 */ | 5091 */ |
| 5081 TypeParameterizedElementMixin get _typeParameterContext; | 5092 TypeParameterizedElementMixin get _typeParameterContext; |
| 5082 | 5093 |
| 5083 @override | 5094 @override |
| 5084 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 5095 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 5085 | 5096 |
| 5086 @override | 5097 @override |
| 5087 String toString() => '$enclosingElement.$name'; | 5098 String toString() => '$enclosingElement.$name'; |
| 5088 } | 5099 } |
| OLD | NEW |