OLD | NEW |
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/format.dart'; | 8 import 'package:analyzer/src/summary/format.dart'; |
9 | 9 |
10 /** | 10 /** |
(...skipping 25 matching lines...) Expand all Loading... |
36 } | 36 } |
37 | 37 |
38 class _PublicNamespaceVisitor extends RecursiveAstVisitor { | 38 class _PublicNamespaceVisitor extends RecursiveAstVisitor { |
39 final List<UnlinkedPublicNameBuilder> names = <UnlinkedPublicNameBuilder>[]; | 39 final List<UnlinkedPublicNameBuilder> names = <UnlinkedPublicNameBuilder>[]; |
40 final List<UnlinkedExportPublicBuilder> exports = | 40 final List<UnlinkedExportPublicBuilder> exports = |
41 <UnlinkedExportPublicBuilder>[]; | 41 <UnlinkedExportPublicBuilder>[]; |
42 final List<String> parts = <String>[]; | 42 final List<String> parts = <String>[]; |
43 | 43 |
44 _PublicNamespaceVisitor(); | 44 _PublicNamespaceVisitor(); |
45 | 45 |
46 void addNameIfPublic( | 46 void addNameIfPublic(String name, ReferenceKind kind, int numTypeParameters) { |
47 String name, PrelinkedReferenceKind kind, int numTypeParameters) { | |
48 if (isPublic(name)) { | 47 if (isPublic(name)) { |
49 names.add(new UnlinkedPublicNameBuilder( | 48 names.add(new UnlinkedPublicNameBuilder( |
50 name: name, kind: kind, numTypeParameters: numTypeParameters)); | 49 name: name, kind: kind, numTypeParameters: numTypeParameters)); |
51 } | 50 } |
52 } | 51 } |
53 | 52 |
54 bool isPublic(String name) => !name.startsWith('_'); | 53 bool isPublic(String name) => !name.startsWith('_'); |
55 | 54 |
56 @override | 55 @override |
57 visitClassDeclaration(ClassDeclaration node) { | 56 visitClassDeclaration(ClassDeclaration node) { |
58 addNameIfPublic(node.name.name, PrelinkedReferenceKind.classOrEnum, | 57 addNameIfPublic(node.name.name, ReferenceKind.classOrEnum, |
59 node.typeParameters?.typeParameters?.length ?? 0); | 58 node.typeParameters?.typeParameters?.length ?? 0); |
60 } | 59 } |
61 | 60 |
62 @override | 61 @override |
63 visitClassTypeAlias(ClassTypeAlias node) { | 62 visitClassTypeAlias(ClassTypeAlias node) { |
64 addNameIfPublic(node.name.name, PrelinkedReferenceKind.classOrEnum, | 63 addNameIfPublic(node.name.name, ReferenceKind.classOrEnum, |
65 node.typeParameters?.typeParameters?.length ?? 0); | 64 node.typeParameters?.typeParameters?.length ?? 0); |
66 } | 65 } |
67 | 66 |
68 @override | 67 @override |
69 visitEnumDeclaration(EnumDeclaration node) { | 68 visitEnumDeclaration(EnumDeclaration node) { |
70 addNameIfPublic(node.name.name, PrelinkedReferenceKind.classOrEnum, 0); | 69 addNameIfPublic(node.name.name, ReferenceKind.classOrEnum, 0); |
71 } | 70 } |
72 | 71 |
73 @override | 72 @override |
74 visitExportDirective(ExportDirective node) { | 73 visitExportDirective(ExportDirective node) { |
75 exports.add(new UnlinkedExportPublicBuilder( | 74 exports.add(new UnlinkedExportPublicBuilder( |
76 uri: node.uri.stringValue, | 75 uri: node.uri.stringValue, |
77 combinators: node.combinators | 76 combinators: node.combinators |
78 .map((Combinator c) => c.accept(new _CombinatorEncoder())) | 77 .map((Combinator c) => c.accept(new _CombinatorEncoder())) |
79 .toList())); | 78 .toList())); |
80 } | 79 } |
81 | 80 |
82 @override | 81 @override |
83 visitFunctionDeclaration(FunctionDeclaration node) { | 82 visitFunctionDeclaration(FunctionDeclaration node) { |
84 String name = node.name.name; | 83 String name = node.name.name; |
85 if (node.isSetter) { | 84 if (node.isSetter) { |
86 name += '='; | 85 name += '='; |
87 } | 86 } |
88 addNameIfPublic( | 87 addNameIfPublic( |
89 name, | 88 name, |
90 node.isGetter || node.isSetter | 89 node.isGetter || node.isSetter |
91 ? PrelinkedReferenceKind.topLevelPropertyAccessor | 90 ? ReferenceKind.topLevelPropertyAccessor |
92 : PrelinkedReferenceKind.topLevelFunction, | 91 : ReferenceKind.topLevelFunction, |
93 node.functionExpression.typeParameters?.typeParameters?.length ?? 0); | 92 node.functionExpression.typeParameters?.typeParameters?.length ?? 0); |
94 } | 93 } |
95 | 94 |
96 @override | 95 @override |
97 visitFunctionTypeAlias(FunctionTypeAlias node) { | 96 visitFunctionTypeAlias(FunctionTypeAlias node) { |
98 addNameIfPublic(node.name.name, PrelinkedReferenceKind.typedef, | 97 addNameIfPublic(node.name.name, ReferenceKind.typedef, |
99 node.typeParameters?.typeParameters?.length ?? 0); | 98 node.typeParameters?.typeParameters?.length ?? 0); |
100 } | 99 } |
101 | 100 |
102 @override | 101 @override |
103 visitPartDirective(PartDirective node) { | 102 visitPartDirective(PartDirective node) { |
104 parts.add(node.uri.stringValue); | 103 parts.add(node.uri.stringValue); |
105 } | 104 } |
106 | 105 |
107 @override | 106 @override |
108 visitVariableDeclaration(VariableDeclaration node) { | 107 visitVariableDeclaration(VariableDeclaration node) { |
109 String name = node.name.name; | 108 String name = node.name.name; |
110 addNameIfPublic(name, PrelinkedReferenceKind.topLevelPropertyAccessor, 0); | 109 addNameIfPublic(name, ReferenceKind.topLevelPropertyAccessor, 0); |
111 if (!node.isFinal && !node.isConst) { | 110 if (!node.isFinal && !node.isConst) { |
112 addNameIfPublic( | 111 addNameIfPublic('$name=', ReferenceKind.topLevelPropertyAccessor, 0); |
113 '$name=', PrelinkedReferenceKind.topLevelPropertyAccessor, 0); | |
114 } | 112 } |
115 } | 113 } |
116 } | 114 } |
OLD | NEW |