| 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 library serialization.summarize_ast; | 5 library serialization.summarize_ast; |
| 6 | 6 |
| 7 import 'package:analyzer/dart/ast/ast.dart'; | 7 import 'package:analyzer/dart/ast/ast.dart'; |
| 8 import 'package:analyzer/dart/ast/token.dart'; | 8 import 'package:analyzer/dart/ast/token.dart'; |
| 9 import 'package:analyzer/dart/ast/visitor.dart'; | 9 import 'package:analyzer/dart/ast/visitor.dart'; |
| 10 import 'package:analyzer/src/generated/utilities_dart.dart'; | 10 import 'package:analyzer/src/generated/utilities_dart.dart'; |
| (...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 UnlinkedExecutableBuilder b = new UnlinkedExecutableBuilder(); | 514 UnlinkedExecutableBuilder b = new UnlinkedExecutableBuilder(); |
| 515 String nameString = name; | 515 String nameString = name; |
| 516 if (isGetter) { | 516 if (isGetter) { |
| 517 b.kind = UnlinkedExecutableKind.getter; | 517 b.kind = UnlinkedExecutableKind.getter; |
| 518 } else if (isSetter) { | 518 } else if (isSetter) { |
| 519 b.kind = UnlinkedExecutableKind.setter; | 519 b.kind = UnlinkedExecutableKind.setter; |
| 520 nameString = '$nameString='; | 520 nameString = '$nameString='; |
| 521 } else { | 521 } else { |
| 522 b.kind = UnlinkedExecutableKind.functionOrMethod; | 522 b.kind = UnlinkedExecutableKind.functionOrMethod; |
| 523 } | 523 } |
| 524 b.isAbstract = body is EmptyFunctionBody; | 524 b.isExternal = isExternal; |
| 525 b.isAbstract = !isExternal && body is EmptyFunctionBody; |
| 525 b.name = nameString; | 526 b.name = nameString; |
| 526 b.nameOffset = nameOffset; | 527 b.nameOffset = nameOffset; |
| 527 b.typeParameters = | 528 b.typeParameters = |
| 528 serializeTypeParameters(typeParameters, typeParameterScope); | 529 serializeTypeParameters(typeParameters, typeParameterScope); |
| 529 if (!isTopLevel) { | 530 if (!isTopLevel) { |
| 530 b.isStatic = isDeclaredStatic; | 531 b.isStatic = isDeclaredStatic; |
| 531 } | 532 } |
| 532 b.returnType = serializeTypeName(returnType); | 533 b.returnType = serializeTypeName(returnType); |
| 533 b.isExternal = isExternal; | |
| 534 bool isSemanticallyStatic = isTopLevel || isDeclaredStatic; | 534 bool isSemanticallyStatic = isTopLevel || isDeclaredStatic; |
| 535 if (formalParameters != null) { | 535 if (formalParameters != null) { |
| 536 b.parameters = formalParameters.parameters | 536 b.parameters = formalParameters.parameters |
| 537 .map((FormalParameter p) => p.accept(this)) | 537 .map((FormalParameter p) => p.accept(this)) |
| 538 .toList(); | 538 .toList(); |
| 539 if (!isSemanticallyStatic) { | 539 if (!isSemanticallyStatic) { |
| 540 for (int i = 0; i < formalParameters.parameters.length; i++) { | 540 for (int i = 0; i < formalParameters.parameters.length; i++) { |
| 541 if (!b.parameters[i].isFunctionTyped && | 541 if (!b.parameters[i].isFunctionTyped && |
| 542 b.parameters[i].type == null) { | 542 b.parameters[i].type == null) { |
| 543 b.parameters[i].inferredTypeSlot = assignSlot(); | 543 b.parameters[i].inferredTypeSlot = assignSlot(); |
| (...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 883 } | 883 } |
| 884 } | 884 } |
| 885 } | 885 } |
| 886 if (node.constKeyword != null) { | 886 if (node.constKeyword != null) { |
| 887 b.isConst = true; | 887 b.isConst = true; |
| 888 b.constCycleSlot = assignSlot(); | 888 b.constCycleSlot = assignSlot(); |
| 889 } | 889 } |
| 890 b.isExternal = node.externalKeyword != null; | 890 b.isExternal = node.externalKeyword != null; |
| 891 b.documentationComment = serializeDocumentation(node.documentationComment); | 891 b.documentationComment = serializeDocumentation(node.documentationComment); |
| 892 b.annotations = serializeAnnotations(node.metadata); | 892 b.annotations = serializeAnnotations(node.metadata); |
| 893 b.codeRange = serializeCodeRange(node); |
| 893 if (node.constKeyword != null) { | 894 if (node.constKeyword != null) { |
| 894 Set<String> constructorParameterNames = | 895 Set<String> constructorParameterNames = |
| 895 node.parameters.parameters.map((p) => p.identifier.name).toSet(); | 896 node.parameters.parameters.map((p) => p.identifier.name).toSet(); |
| 896 b.constantInitializers = node.initializers | 897 b.constantInitializers = node.initializers |
| 897 .map((ConstructorInitializer initializer) => | 898 .map((ConstructorInitializer initializer) => |
| 898 serializeConstructorInitializer(initializer, (Expression expr) { | 899 serializeConstructorInitializer(initializer, (Expression expr) { |
| 899 return serializeConstExpr(expr, constructorParameterNames); | 900 return serializeConstExpr(expr, constructorParameterNames); |
| 900 })) | 901 })) |
| 901 .toList(); | 902 .toList(); |
| 902 } | 903 } |
| 903 serializeFunctionBody(b, node.body); | 904 serializeFunctionBody(b, node.body); |
| 904 executables.add(b); | 905 executables.add(b); |
| 905 } | 906 } |
| 906 | 907 |
| 907 @override | 908 @override |
| 908 UnlinkedParamBuilder visitDefaultFormalParameter( | 909 UnlinkedParamBuilder visitDefaultFormalParameter( |
| 909 DefaultFormalParameter node) { | 910 DefaultFormalParameter node) { |
| 910 UnlinkedParamBuilder b = node.parameter.accept(this); | 911 UnlinkedParamBuilder b = node.parameter.accept(this); |
| 911 if (node.defaultValue != null) { | 912 if (node.defaultValue != null) { |
| 912 b.defaultValue = serializeConstExpr(node.defaultValue); | 913 b.defaultValue = serializeConstExpr(node.defaultValue); |
| 913 b.defaultValueCode = node.defaultValue.toSource(); | 914 b.defaultValueCode = node.defaultValue.toSource(); |
| 914 } | 915 } |
| 915 b.initializer = serializeInitializerFunction(node.defaultValue); | 916 b.initializer = serializeInitializerFunction(node.defaultValue); |
| 917 b.codeRange = serializeCodeRange(node); |
| 916 return b; | 918 return b; |
| 917 } | 919 } |
| 918 | 920 |
| 919 @override | 921 @override |
| 920 void visitEnumDeclaration(EnumDeclaration node) { | 922 void visitEnumDeclaration(EnumDeclaration node) { |
| 921 UnlinkedEnumBuilder b = new UnlinkedEnumBuilder(); | 923 UnlinkedEnumBuilder b = new UnlinkedEnumBuilder(); |
| 922 b.name = node.name.name; | 924 b.name = node.name.name; |
| 923 b.nameOffset = node.name.offset; | 925 b.nameOffset = node.name.offset; |
| 924 b.values = node.constants | 926 b.values = node.constants |
| 925 .map((EnumConstantDeclaration value) => new UnlinkedEnumValueBuilder( | 927 .map((EnumConstantDeclaration value) => new UnlinkedEnumValueBuilder( |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1152 /** | 1154 /** |
| 1153 * A [_TypeParameterScope] is a [_Scope] which defines [_ScopedTypeParameter]s. | 1155 * A [_TypeParameterScope] is a [_Scope] which defines [_ScopedTypeParameter]s. |
| 1154 */ | 1156 */ |
| 1155 class _TypeParameterScope extends _Scope { | 1157 class _TypeParameterScope extends _Scope { |
| 1156 /** | 1158 /** |
| 1157 * Get the number of [_ScopedTypeParameter]s defined in this | 1159 * Get the number of [_ScopedTypeParameter]s defined in this |
| 1158 * [_TypeParameterScope]. | 1160 * [_TypeParameterScope]. |
| 1159 */ | 1161 */ |
| 1160 int get length => _definedNames.length; | 1162 int get length => _definedNames.length; |
| 1161 } | 1163 } |
| OLD | NEW |