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

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

Issue 1418123004: fix import uri completion exception - fixes #24709 (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
« no previous file with comments | « no previous file | pkg/analysis_server/test/services/completion/uri_contributor_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // 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.importuri; 5 library services.completion.contributor.dart.importuri;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:core' hide Resource; 8 import 'dart:core' hide Resource;
9 9
10 import 'package:analysis_server/src/services/completion/dart_completion_manager. dart'; 10 import 'package:analysis_server/src/services/completion/dart_completion_manager. dart';
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 // and there is no semicolon 67 // and there is no semicolon
68 visitSimpleStringLiteral(uri); 68 visitSimpleStringLiteral(uri);
69 } 69 }
70 } 70 }
71 } 71 }
72 72
73 @override 73 @override
74 visitSimpleStringLiteral(SimpleStringLiteral node) { 74 visitSimpleStringLiteral(SimpleStringLiteral node) {
75 AstNode parent = node.parent; 75 AstNode parent = node.parent;
76 if (parent is NamespaceDirective && parent.uri == node) { 76 if (parent is NamespaceDirective && parent.uri == node) {
77 String partial = node.literal.lexeme.substring( 77 String partialUri = _extractPartialUri(node);
78 node.contentsOffset - node.offset, request.offset - node.offset); 78 if (partialUri != null) {
79 request.replacementOffset = node.contentsOffset; 79 _addDartSuggestions();
80 request.replacementLength = node.contentsEnd - node.contentsOffset; 80 _addPackageSuggestions(partialUri);
81 _addDartSuggestions(); 81 _addFileSuggestions(partialUri);
82 _addPackageSuggestions(partial); 82 }
83 _addFileSuggestions(partial);
84 } else if (parent is PartDirective && parent.uri == node) { 83 } else if (parent is PartDirective && parent.uri == node) {
85 String partial = node.literal.lexeme.substring( 84 String partialUri = _extractPartialUri(node);
86 node.contentsOffset - node.offset, request.offset - node.offset); 85 if (partialUri != null) {
87 request.replacementOffset = node.contentsOffset; 86 _addFileSuggestions(partialUri);
88 request.replacementLength = node.contentsEnd - node.contentsOffset; 87 }
89 _addFileSuggestions(partial);
90 } 88 }
91 } 89 }
92 90
93 void _addDartSuggestions() { 91 void _addDartSuggestions() {
94 _addSuggestion('dart:'); 92 _addSuggestion('dart:');
95 SourceFactory factory = request.context.sourceFactory; 93 SourceFactory factory = request.context.sourceFactory;
96 for (SdkLibrary lib in factory.dartSdk.sdkLibraries) { 94 for (SdkLibrary lib in factory.dartSdk.sdkLibraries) {
97 if (!lib.isInternal && !lib.isImplementation) { 95 if (!lib.isInternal && !lib.isImplementation) {
98 if (!lib.shortName.startsWith('dart:_')) { 96 if (!lib.shortName.startsWith('dart:_')) {
99 _addSuggestion(lib.shortName, 97 _addSuggestion(lib.shortName,
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 {int relevance: DART_RELEVANCE_DEFAULT}) { 181 {int relevance: DART_RELEVANCE_DEFAULT}) {
184 request.addSuggestion(new CompletionSuggestion( 182 request.addSuggestion(new CompletionSuggestion(
185 CompletionSuggestionKind.IMPORT, 183 CompletionSuggestionKind.IMPORT,
186 relevance, 184 relevance,
187 completion, 185 completion,
188 completion.length, 186 completion.length,
189 0, 187 0,
190 false, 188 false,
191 false)); 189 false));
192 } 190 }
191
192 String _extractPartialUri(SimpleStringLiteral node) {
193 if (request.offset < node.contentsOffset) {
194 return null;
195 }
196 String partial = node.literal.lexeme.substring(
197 node.contentsOffset - node.offset, request.offset - node.offset);
198 request.replacementOffset = node.contentsOffset;
199 request.replacementLength = node.contentsEnd - node.contentsOffset;
200 return partial;
201 }
193 } 202 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analysis_server/test/services/completion/uri_contributor_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698