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

Side by Side Diff: pkg/analysis_server/lib/src/services/completion/keyword_contributor.dart

Issue 1410893002: Disable completion in comment text. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 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 unified diff | Download patch
OLDNEW
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 2
3 // for details. All rights reserved. Use of this source code is governed by a 3 // for details. All rights reserved. Use of this source code is governed by a
4 // BSD-style license that can be found in the LICENSE file. 4 // BSD-style license that can be found in the LICENSE file.
5 5
6 library services.completion.contributor.dart.keyword; 6 library services.completion.contributor.dart.keyword;
7 7
8 import 'dart:async'; 8 import 'dart:async';
9 9
10 import 'package:analysis_server/plugin/protocol/protocol.dart'; 10 import 'package:analysis_server/plugin/protocol/protocol.dart';
11 import 'package:analysis_server/src/services/completion/dart_completion_manager. dart'; 11 import 'package:analysis_server/src/services/completion/dart_completion_manager. dart';
12 import 'package:analyzer/src/generated/ast.dart'; 12 import 'package:analyzer/src/generated/ast.dart';
13 import 'package:analyzer/src/generated/scanner.dart'; 13 import 'package:analyzer/src/generated/scanner.dart';
14 14
15 const ASYNC = 'async'; 15 const ASYNC = 'async';
16 const AWAIT = 'await'; 16 const AWAIT = 'await';
17 17
18 /** 18 /**
19 * A contributor for calculating `completion.getSuggestions` request results 19 * A contributor for calculating `completion.getSuggestions` request results
20 * for the local library in which the completion is requested. 20 * for the local library in which the completion is requested.
21 */ 21 */
22 class KeywordContributor extends DartCompletionContributor { 22 class KeywordContributor extends DartCompletionContributor {
23 @override 23 @override
24 bool computeFast(DartCompletionRequest request) { 24 bool computeFast(DartCompletionRequest request) {
25 request.target.containingNode.accept(new _KeywordVisitor(request)); 25 if (!request.target.isCommentText) {
26 request.target.containingNode.accept(new _KeywordVisitor(request));
27 }
26 return true; 28 return true;
27 } 29 }
28 30
29 @override 31 @override
30 Future<bool> computeFull(DartCompletionRequest request) { 32 Future<bool> computeFull(DartCompletionRequest request) {
31 return new Future.value(false); 33 return new Future.value(false);
32 } 34 }
33 } 35 }
34 36
35 /** 37 /**
36 * A vistor for generating keyword suggestions. 38 * A visitor for generating keyword suggestions.
37 */ 39 */
38 class _KeywordVisitor extends GeneralizingAstVisitor { 40 class _KeywordVisitor extends GeneralizingAstVisitor {
39 final DartCompletionRequest request; 41 final DartCompletionRequest request;
40 final Object entity; 42 final Object entity;
41 43
42 _KeywordVisitor(DartCompletionRequest request) 44 _KeywordVisitor(DartCompletionRequest request)
43 : this.request = request, 45 : this.request = request,
44 this.entity = request.target.entity; 46 this.entity = request.target.entity;
45 47
46 @override 48 @override
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 Keyword.TRUE 171 Keyword.TRUE
170 ]); 172 ]);
171 } else { 173 } else {
172 _addSuggestion(Keyword.IN, DART_RELEVANCE_HIGH); 174 _addSuggestion(Keyword.IN, DART_RELEVANCE_HIGH);
173 } 175 }
174 } 176 }
175 } 177 }
176 178
177 @override 179 @override
178 visitFormalParameterList(FormalParameterList node) { 180 visitFormalParameterList(FormalParameterList node) {
179 AstNode constructorDecl = 181 AstNode constructorDeclaration =
180 node.getAncestor((p) => p is ConstructorDeclaration); 182 node.getAncestor((p) => p is ConstructorDeclaration);
181 if (constructorDecl != null) { 183 if (constructorDeclaration != null) {
182 _addSuggestions([Keyword.THIS]); 184 _addSuggestions([Keyword.THIS]);
183 } 185 }
184 } 186 }
185 187
186 @override 188 @override
187 visitForStatement(ForStatement node) { 189 visitForStatement(ForStatement node) {
188 if (entity == node.rightSeparator && entity.toString() != ';') { 190 if (entity == node.rightSeparator && entity.toString() != ';') {
189 // Handle the degenerate case while typing - for (int x i^) 191 // Handle the degenerate case while typing - for (int x i^)
190 _addSuggestion(Keyword.IN, DART_RELEVANCE_HIGH); 192 _addSuggestion(Keyword.IN, DART_RELEVANCE_HIGH);
191 } 193 }
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 512
511 bool _inLoop(AstNode node) => 513 bool _inLoop(AstNode node) =>
512 _inDoLoop(node) || _inForLoop(node) || _inWhileLoop(node); 514 _inDoLoop(node) || _inForLoop(node) || _inWhileLoop(node);
513 515
514 bool _inSwitch(AstNode node) => 516 bool _inSwitch(AstNode node) =>
515 node.getAncestor((p) => p is SwitchStatement) != null; 517 node.getAncestor((p) => p is SwitchStatement) != null;
516 518
517 bool _inWhileLoop(AstNode node) => 519 bool _inWhileLoop(AstNode node) =>
518 node.getAncestor((p) => p is WhileStatement) != null; 520 node.getAncestor((p) => p is WhileStatement) != null;
519 } 521 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698