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

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

Issue 1558353003: Add a count of type parameters to UnlinkedPublicName. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 analyzer.src.summary.public_namespace_visitor; 5 library analyzer.src.summary.public_namespace_visitor;
6 6
7 import 'package:analyzer/analyzer.dart'; 7 import 'package:analyzer/analyzer.dart';
8 import 'package:analyzer/src/summary/base.dart'; 8 import 'package:analyzer/src/summary/base.dart';
9 import 'package:analyzer/src/summary/format.dart'; 9 import 'package:analyzer/src/summary/format.dart';
10 10
(...skipping 29 matching lines...) Expand all
40 } 40 }
41 41
42 class _PublicNamespaceVisitor extends RecursiveAstVisitor { 42 class _PublicNamespaceVisitor extends RecursiveAstVisitor {
43 final BuilderContext ctx; 43 final BuilderContext ctx;
44 final List<UnlinkedPublicNameBuilder> names = <UnlinkedPublicNameBuilder>[]; 44 final List<UnlinkedPublicNameBuilder> names = <UnlinkedPublicNameBuilder>[];
45 final List<UnlinkedExportBuilder> exports = <UnlinkedExportBuilder>[]; 45 final List<UnlinkedExportBuilder> exports = <UnlinkedExportBuilder>[];
46 final List<UnlinkedPartBuilder> parts = <UnlinkedPartBuilder>[]; 46 final List<UnlinkedPartBuilder> parts = <UnlinkedPartBuilder>[];
47 47
48 _PublicNamespaceVisitor(this.ctx); 48 _PublicNamespaceVisitor(this.ctx);
49 49
50 void addNameIfPublic(String name, PrelinkedReferenceKind kind) { 50 void addNameIfPublic(
51 String name, PrelinkedReferenceKind kind, int numTypeParameters) {
51 if (isPublic(name)) { 52 if (isPublic(name)) {
52 names.add(encodeUnlinkedPublicName(ctx, name: name, kind: kind)); 53 names.add(encodeUnlinkedPublicName(ctx,
54 name: name, kind: kind, numTypeParameters: numTypeParameters));
53 } 55 }
54 } 56 }
55 57
56 bool isPublic(String name) => !name.startsWith('_'); 58 bool isPublic(String name) => !name.startsWith('_');
57 59
58 @override 60 @override
59 visitClassDeclaration(ClassDeclaration node) { 61 visitClassDeclaration(ClassDeclaration node) {
60 addNameIfPublic(node.name.name, PrelinkedReferenceKind.classOrEnum); 62 addNameIfPublic(node.name.name, PrelinkedReferenceKind.classOrEnum,
63 node.typeParameters?.typeParameters?.length ?? 0);
61 } 64 }
62 65
63 @override 66 @override
64 visitClassTypeAlias(ClassTypeAlias node) { 67 visitClassTypeAlias(ClassTypeAlias node) {
65 addNameIfPublic(node.name.name, PrelinkedReferenceKind.classOrEnum); 68 addNameIfPublic(node.name.name, PrelinkedReferenceKind.classOrEnum,
69 node.typeParameters?.typeParameters?.length ?? 0);
66 } 70 }
67 71
68 @override 72 @override
69 visitEnumDeclaration(EnumDeclaration node) { 73 visitEnumDeclaration(EnumDeclaration node) {
70 addNameIfPublic(node.name.name, PrelinkedReferenceKind.classOrEnum); 74 addNameIfPublic(node.name.name, PrelinkedReferenceKind.classOrEnum, 0);
71 } 75 }
72 76
73 @override 77 @override
74 visitExportDirective(ExportDirective node) { 78 visitExportDirective(ExportDirective node) {
75 exports.add(encodeUnlinkedExport(ctx, 79 exports.add(encodeUnlinkedExport(ctx,
76 uri: node.uri.stringValue, 80 uri: node.uri.stringValue,
77 combinators: node.combinators 81 combinators: node.combinators
78 .map((Combinator c) => c.accept(new _CombinatorEncoder(ctx))) 82 .map((Combinator c) => c.accept(new _CombinatorEncoder(ctx)))
79 .toList())); 83 .toList()));
80 } 84 }
81 85
82 @override 86 @override
83 visitFunctionDeclaration(FunctionDeclaration node) { 87 visitFunctionDeclaration(FunctionDeclaration node) {
84 String name = node.name.name; 88 String name = node.name.name;
85 if (node.isSetter) { 89 if (node.isSetter) {
86 name += '='; 90 name += '=';
87 } 91 }
88 addNameIfPublic(name, PrelinkedReferenceKind.other); 92 addNameIfPublic(name, PrelinkedReferenceKind.other,
93 node.functionExpression.typeParameters?.typeParameters?.length ?? 0);
89 } 94 }
90 95
91 @override 96 @override
92 visitFunctionTypeAlias(FunctionTypeAlias node) { 97 visitFunctionTypeAlias(FunctionTypeAlias node) {
93 addNameIfPublic(node.name.name, PrelinkedReferenceKind.typedef); 98 addNameIfPublic(node.name.name, PrelinkedReferenceKind.typedef,
99 node.typeParameters?.typeParameters?.length ?? 0);
94 } 100 }
95 101
96 @override 102 @override
97 visitPartDirective(PartDirective node) { 103 visitPartDirective(PartDirective node) {
98 parts.add(encodeUnlinkedPart(ctx, uri: node.uri.stringValue)); 104 parts.add(encodeUnlinkedPart(ctx, uri: node.uri.stringValue));
99 } 105 }
100 106
101 @override 107 @override
102 visitVariableDeclaration(VariableDeclaration node) { 108 visitVariableDeclaration(VariableDeclaration node) {
103 String name = node.name.name; 109 String name = node.name.name;
104 addNameIfPublic(name, PrelinkedReferenceKind.other); 110 addNameIfPublic(name, PrelinkedReferenceKind.other, 0);
105 if (!node.isFinal && !node.isConst) { 111 if (!node.isFinal && !node.isConst) {
106 addNameIfPublic('$name=', PrelinkedReferenceKind.other); 112 addNameIfPublic('$name=', PrelinkedReferenceKind.other, 0);
107 } 113 }
108 } 114 }
109 } 115 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/summary/format.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