Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(357)

Side by Side Diff: pkg/analyzer/lib/src/summary/summarize_ast.dart

Issue 1833823002: Add tests for summarizing / resynthesizing using only AST. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/summary/prelink.dart ('k') | pkg/analyzer/lib/src/summary/summarize_elements.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698