| 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/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 Loading... |
| 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 } |
| OLD | NEW |