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

Unified Diff: pkg/analysis_server/lib/src/services/completion/local_computer.dart

Issue 643153003: add imported inherited member suggestions (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: merge Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/lib/src/services/completion/local_computer.dart
diff --git a/pkg/analysis_server/lib/src/services/completion/local_computer.dart b/pkg/analysis_server/lib/src/services/completion/local_computer.dart
index 8269f9dd3ba482a174534c287f0a78e0ed7819ea..fd0a63baef7755ba913701a1668cb02cce81bd86 100644
--- a/pkg/analysis_server/lib/src/services/completion/local_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/local_computer.dart
@@ -10,6 +10,7 @@ import 'package:analysis_server/src/protocol.dart' as protocol show Element,
ElementKind;
import 'package:analysis_server/src/protocol.dart' hide Element, ElementKind;
import 'package:analysis_server/src/services/completion/dart_completion_manager.dart';
+import 'package:analysis_server/src/services/completion/suggestion_builder.dart';
import 'package:analyzer/src/generated/ast.dart';
import 'package:analyzer/src/generated/scanner.dart';
@@ -104,72 +105,12 @@ class _LocalVisitor extends GeneralizingAstVisitor<dynamic> {
@override
visitClassDeclaration(ClassDeclaration node) {
_addClassDeclarationMembers(node);
- _addInheritedTypeMembers(node);
- visitNode(node);
- }
-
- void _addInheritedTypeMembers(ClassDeclaration node) {
- ExtendsClause extendsClause = node.extendsClause;
- if (extendsClause != null) {
- _addLocalTypeMembers(extendsClause.superclass, node);
- }
- ImplementsClause implementsClause = node.implementsClause;
- if (implementsClause != null) {
- NodeList<TypeName> interfaces = implementsClause.interfaces;
- if (interfaces != null) {
- interfaces.forEach((TypeName type) {
- _addLocalTypeMembers(type, node);
- });
- }
- }
- WithClause withClause = node.withClause;
- if (withClause != null) {
- NodeList<TypeName> mixinTypes = withClause.mixinTypes;
- if (mixinTypes != null) {
- mixinTypes.forEach((TypeName type) {
- _addLocalTypeMembers(type, node);
- });
- }
- }
- }
-
- void _addLocalTypeMembers(TypeName type, ClassDeclaration node) {
- if (type == null) {
- return;
- }
- Identifier typeId = type.name;
- if (typeId == null) {
- return;
- }
- String typeName = typeId.name;
- if (typeName == null || typeName.length == 0) {
- return;
- }
- CompilationUnit unit = node.getAncestor((p) => p is CompilationUnit);
- if (unit == null) {
- return;
- }
- unit.declarations.forEach((CompilationUnitMember m) {
- if (m is ClassDeclaration) {
- SimpleIdentifier id = m.name;
- if (id != null) {
- if (id.name == typeName) {
- _addClassDeclarationMembers(m);
- _addInheritedTypeMembers(m);
- }
- }
- }
- });
- }
-
- void _addClassDeclarationMembers(ClassDeclaration node) {
- node.members.forEach((ClassMember classMbr) {
- if (classMbr is FieldDeclaration) {
- _addFieldSuggestions(node, classMbr);
- } else if (classMbr is MethodDeclaration) {
- _addMethodSuggestion(node, classMbr);
- }
+ visitInheritedTypes(node, (ClassDeclaration classNode) {
+ _addClassDeclarationMembers(classNode);
+ }, (String typeName) {
+ // ignored
});
+ visitNode(node);
}
@override
@@ -322,6 +263,16 @@ class _LocalVisitor extends GeneralizingAstVisitor<dynamic> {
}
}
+ void _addClassDeclarationMembers(ClassDeclaration node) {
+ node.members.forEach((ClassMember classMbr) {
+ if (classMbr is FieldDeclaration) {
+ _addFieldSuggestions(node, classMbr);
+ } else if (classMbr is MethodDeclaration) {
+ _addMethodSuggestion(node, classMbr);
+ }
+ });
+ }
+
void _addClassSuggestion(ClassDeclaration declaration) {
CompletionSuggestion suggestion =
_addSuggestion(declaration.name, CompletionSuggestionKind.CLASS, null, null);

Powered by Google App Engine
This is Rietveld 408576698