| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 services.completion.contributor.dart.inherited_ref; | |
| 6 | |
| 7 import 'dart:async'; | 5 import 'dart:async'; |
| 8 | 6 |
| 9 import 'package:analysis_server/src/ide_options.dart'; | 7 import 'package:analysis_server/src/ide_options.dart'; |
| 10 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.
dart'; | 8 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.
dart'; |
| 11 import 'package:analysis_server/src/provisional/completion/dart/completion_targe
t.dart'; | 9 import 'package:analysis_server/src/provisional/completion/dart/completion_targe
t.dart'; |
| 12 import 'package:analysis_server/src/services/completion/dart/optype.dart'; | 10 import 'package:analysis_server/src/services/completion/dart/optype.dart'; |
| 13 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.
dart'; | 11 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.
dart'; |
| 14 import 'package:analyzer/dart/ast/ast.dart'; | 12 import 'package:analyzer/dart/ast/ast.dart'; |
| 15 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; | 13 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; |
| 16 import 'package:analyzer/dart/element/element.dart'; | 14 import 'package:analyzer/dart/element/element.dart'; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 | 63 |
| 66 ClassDeclaration classDecl = _enclosingClass(request.target); | 64 ClassDeclaration classDecl = _enclosingClass(request.target); |
| 67 if (classDecl == null || classDecl.element == null) { | 65 if (classDecl == null || classDecl.element == null) { |
| 68 return EMPTY_LIST; | 66 return EMPTY_LIST; |
| 69 } | 67 } |
| 70 containingLibrary = request.libraryElement; | 68 containingLibrary = request.libraryElement; |
| 71 return _computeSuggestionsForClass2( | 69 return _computeSuggestionsForClass2( |
| 72 resolutionMap.elementDeclaredByClassDeclaration(classDecl), request); | 70 resolutionMap.elementDeclaredByClassDeclaration(classDecl), request); |
| 73 } | 71 } |
| 74 | 72 |
| 75 List<CompletionSuggestion> _computeSuggestionsForClass2( | |
| 76 ClassElement classElement, DartCompletionRequest request, | |
| 77 {bool skipChildClass: true}) { | |
| 78 bool isFunctionalArgument = request.target.isFunctionalArgument(); | |
| 79 kind = isFunctionalArgument | |
| 80 ? CompletionSuggestionKind.IDENTIFIER | |
| 81 : CompletionSuggestionKind.INVOCATION; | |
| 82 OpType optype = request.opType; | |
| 83 | |
| 84 if (!skipChildClass) { | |
| 85 _addSuggestionsForType(classElement.type, optype, request.ideOptions, | |
| 86 isFunctionalArgument: isFunctionalArgument); | |
| 87 } | |
| 88 | |
| 89 for (InterfaceType type in classElement.allSupertypes) { | |
| 90 _addSuggestionsForType(type, optype, request.ideOptions, | |
| 91 isFunctionalArgument: isFunctionalArgument); | |
| 92 } | |
| 93 return suggestions; | |
| 94 } | |
| 95 | |
| 96 List<CompletionSuggestion> computeSuggestionsForClass( | 73 List<CompletionSuggestion> computeSuggestionsForClass( |
| 97 ClassElement classElement, DartCompletionRequest request, | 74 ClassElement classElement, DartCompletionRequest request, |
| 98 {bool skipChildClass: true}) { | 75 {bool skipChildClass: true}) { |
| 99 if (!request.includeIdentifiers) { | 76 if (!request.includeIdentifiers) { |
| 100 return EMPTY_LIST; | 77 return EMPTY_LIST; |
| 101 } | 78 } |
| 102 containingLibrary = request.libraryElement; | 79 containingLibrary = request.libraryElement; |
| 103 | 80 |
| 104 return _computeSuggestionsForClass2(classElement, request, | 81 return _computeSuggestionsForClass2(classElement, request, |
| 105 skipChildClass: skipChildClass); | 82 skipChildClass: skipChildClass); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 128 if (optype.includeReturnValueSuggestions) { | 105 if (optype.includeReturnValueSuggestions) { |
| 129 addSuggestion(elem, ideOptions); | 106 addSuggestion(elem, ideOptions); |
| 130 } | 107 } |
| 131 } else { | 108 } else { |
| 132 if (optype.includeVoidReturnSuggestions) { | 109 if (optype.includeVoidReturnSuggestions) { |
| 133 addSuggestion(elem, ideOptions); | 110 addSuggestion(elem, ideOptions); |
| 134 } | 111 } |
| 135 } | 112 } |
| 136 } | 113 } |
| 137 } | 114 } |
| 115 |
| 116 List<CompletionSuggestion> _computeSuggestionsForClass2( |
| 117 ClassElement classElement, DartCompletionRequest request, |
| 118 {bool skipChildClass: true}) { |
| 119 bool isFunctionalArgument = request.target.isFunctionalArgument(); |
| 120 kind = isFunctionalArgument |
| 121 ? CompletionSuggestionKind.IDENTIFIER |
| 122 : CompletionSuggestionKind.INVOCATION; |
| 123 OpType optype = request.opType; |
| 124 |
| 125 if (!skipChildClass) { |
| 126 _addSuggestionsForType(classElement.type, optype, request.ideOptions, |
| 127 isFunctionalArgument: isFunctionalArgument); |
| 128 } |
| 129 |
| 130 for (InterfaceType type in classElement.allSupertypes) { |
| 131 _addSuggestionsForType(type, optype, request.ideOptions, |
| 132 isFunctionalArgument: isFunctionalArgument); |
| 133 } |
| 134 return suggestions; |
| 135 } |
| 138 } | 136 } |
| OLD | NEW |