| 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.analyzer.ast_from_analyzer; | 4 library kernel.analyzer.ast_from_analyzer; |
| 5 | 5 |
| 6 import '../ast.dart' as ast; | 6 import '../ast.dart' as ast; |
| 7 import '../frontend/accessors.dart'; | 7 import '../frontend/accessors.dart'; |
| 8 import '../frontend/super_initializers.dart'; | 8 import '../frontend/super_initializers.dart'; |
| 9 import '../log.dart'; | 9 import '../log.dart'; |
| 10 import '../type_algebra.dart'; | 10 import '../type_algebra.dart'; |
| (...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 | 449 |
| 450 case ParameterKind.POSITIONAL: | 450 case ParameterKind.POSITIONAL: |
| 451 positional.add(parameterNode); | 451 positional.add(parameterNode); |
| 452 break; | 452 break; |
| 453 | 453 |
| 454 case ParameterKind.NAMED: | 454 case ParameterKind.NAMED: |
| 455 named.add(parameterNode); | 455 named.add(parameterNode); |
| 456 break; | 456 break; |
| 457 } | 457 } |
| 458 } | 458 } |
| 459 if (named.isNotEmpty) { |
| 460 named.sort(); |
| 461 } |
| 459 var returnType = element is ConstructorElement | 462 var returnType = element is ConstructorElement |
| 460 ? const ast.VoidType() | 463 ? const ast.VoidType() |
| 461 : buildType(element.returnType); | 464 : buildType(element.returnType); |
| 462 return new ast.FunctionNode(null, | 465 return new ast.FunctionNode(null, |
| 463 typeParameters: typeParameters, | 466 typeParameters: typeParameters, |
| 464 positionalParameters: positional, | 467 positionalParameters: positional, |
| 465 namedParameters: named, | 468 namedParameters: named, |
| 466 requiredParameterCount: requiredParameterCount, | 469 requiredParameterCount: requiredParameterCount, |
| 467 returnType: returnType); | 470 returnType: returnType); |
| 468 } | 471 } |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 | 553 |
| 551 case ParameterKind.POSITIONAL: | 554 case ParameterKind.POSITIONAL: |
| 552 positional.add(declaration); | 555 positional.add(declaration); |
| 553 break; | 556 break; |
| 554 | 557 |
| 555 case ParameterKind.NAMED: | 558 case ParameterKind.NAMED: |
| 556 named.add(declaration); | 559 named.add(declaration); |
| 557 break; | 560 break; |
| 558 } | 561 } |
| 559 } | 562 } |
| 563 if (named.isNotEmpty) { |
| 564 named.sort(); |
| 565 } |
| 560 return new ast.FunctionNode(buildOptionalFunctionBody(body), | 566 return new ast.FunctionNode(buildOptionalFunctionBody(body), |
| 561 typeParameters: typeParameters, | 567 typeParameters: typeParameters, |
| 562 positionalParameters: positional, | 568 positionalParameters: positional, |
| 563 namedParameters: named, | 569 namedParameters: named, |
| 564 requiredParameterCount: requiredParameterCount, | 570 requiredParameterCount: requiredParameterCount, |
| 565 returnType: buildOptionalTypeAnnotation(returnType) ?? | 571 returnType: buildOptionalTypeAnnotation(returnType) ?? |
| 566 inferredReturnType ?? | 572 inferredReturnType ?? |
| 567 const ast.DynamicType(), | 573 const ast.DynamicType(), |
| 568 asyncMarker: getAsyncMarker( | 574 asyncMarker: getAsyncMarker( |
| 569 isAsync: body.isAsynchronous, isStar: body.isGenerator)); | 575 isAsync: body.isAsynchronous, isStar: body.isGenerator)); |
| (...skipping 1573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2143 .map((tp) => convertTypeParameter(tp, boundVariables)) | 2149 .map((tp) => convertTypeParameter(tp, boundVariables)) |
| 2144 .toList(); | 2150 .toList(); |
| 2145 } | 2151 } |
| 2146 | 2152 |
| 2147 List<ast.DartType> convertTypeList( | 2153 List<ast.DartType> convertTypeList( |
| 2148 Iterable<DartType> types, List<TypeParameterElement> boundVariables) { | 2154 Iterable<DartType> types, List<TypeParameterElement> boundVariables) { |
| 2149 if (types.isEmpty) return const <ast.DartType>[]; | 2155 if (types.isEmpty) return const <ast.DartType>[]; |
| 2150 return types.map((t) => convertType(t, boundVariables)).toList(); | 2156 return types.map((t) => convertType(t, boundVariables)).toList(); |
| 2151 } | 2157 } |
| 2152 | 2158 |
| 2153 Map<String, ast.DartType> convertTypeMap( | 2159 List<ast.NamedType> convertTypeMap( |
| 2154 Map<String, DartType> types, List<TypeParameterElement> boundVariables) { | 2160 Map<String, DartType> types, List<TypeParameterElement> boundVariables) { |
| 2155 if (types.isEmpty) return const <String, ast.DartType>{}; | 2161 if (types.isEmpty) return const <ast.NamedType>[]; |
| 2156 var result = <String, ast.DartType>{}; | 2162 List<ast.NamedType> result = <ast.NamedType>[]; |
| 2157 types.forEach((name, type) { | 2163 types.forEach((name, type) { |
| 2158 result[name] = convertType(type, boundVariables); | 2164 result.add(new ast.NamedType(name, convertType(type, boundVariables))); |
| 2159 }); | 2165 }); |
| 2166 result.sort(); |
| 2160 return result; | 2167 return result; |
| 2161 } | 2168 } |
| 2162 | 2169 |
| 2163 ast.DartType visitSimpleIdentifier(SimpleIdentifier node) { | 2170 ast.DartType visitSimpleIdentifier(SimpleIdentifier node) { |
| 2164 Element element = node.staticElement; | 2171 Element element = node.staticElement; |
| 2165 switch (ElementKind.of(element)) { | 2172 switch (ElementKind.of(element)) { |
| 2166 case ElementKind.CLASS: | 2173 case ElementKind.CLASS: |
| 2167 return new ast.InterfaceType(scope.getClassReference(element)); | 2174 return new ast.InterfaceType(scope.getClassReference(element)); |
| 2168 | 2175 |
| 2169 case ElementKind.DYNAMIC: | 2176 case ElementKind.DYNAMIC: |
| (...skipping 606 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2776 if (element is FieldElement) return element.getter; | 2783 if (element is FieldElement) return element.getter; |
| 2777 return element; | 2784 return element; |
| 2778 } | 2785 } |
| 2779 | 2786 |
| 2780 Element desynthesizeSetter(Element element) { | 2787 Element desynthesizeSetter(Element element) { |
| 2781 if (element == null || !element.isSynthetic) return element; | 2788 if (element == null || !element.isSynthetic) return element; |
| 2782 if (element is PropertyAccessorElement) return element.variable; | 2789 if (element is PropertyAccessorElement) return element.variable; |
| 2783 if (element is FieldElement) return element.setter; | 2790 if (element is FieldElement) return element.setter; |
| 2784 return element; | 2791 return element; |
| 2785 } | 2792 } |
| OLD | NEW |