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

Unified Diff: pkg/analysis_server/test/services/completion/completion_test_util.dart

Issue 795633004: filter imported element suggestions to reduce number of results sent to client (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: merge and fix test Created 6 years 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/test/services/completion/completion_test_util.dart
diff --git a/pkg/analysis_server/test/services/completion/completion_test_util.dart b/pkg/analysis_server/test/services/completion/completion_test_util.dart
index 362b8e825d2b268213f6c9f4011dc58730198548..10d6020e6290ce88b1bb491fba0060ed42aff17a 100644
--- a/pkg/analysis_server/test/services/completion/completion_test_util.dart
+++ b/pkg/analysis_server/test/services/completion/completion_test_util.dart
@@ -459,6 +459,16 @@ abstract class AbstractCompletionTest extends AbstractContextTest {
request.unit = unit;
request.node =
new NodeLocator.con1(completionOffset).searchWithin(unit);
+ if (request.node is SimpleIdentifier) {
+ request.replacementOffset = request.node.offset;
+ request.replacementLength = request.node.length;
+ } else {
+ request.replacementOffset = request.offset;
+ request.replacementLength = 0;
+ }
+ if (request.replacementOffset == null) {
+ fail('expected non null');
+ }
resolved = true;
if (!fullAnalysis) {
break;
@@ -880,6 +890,20 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
});
}
+ test_AsExpression() {
+ // SimpleIdentifier TypeName AsExpression
+ addTestSource('''
+ class A {var b; X _c; foo() {var a; (a as ^).foo();}''');
+ computeFast();
+ return computeFull((bool result) {
+ assertNotSuggested('b');
+ assertNotSuggested('_c');
+ assertSuggestImportedClass('Object');
+ assertSuggestLocalClass('A');
+ assertNotSuggested('==');
+ });
+ }
+
test_AssignmentExpression_name() {
// SimpleIdentifier VariableDeclaration VariableDeclarationList
// VariableDeclarationStatement Block
@@ -1001,25 +1025,26 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
assertNotSuggested('_B');
assertSuggestImportedClass('C');
// hidden element suggested as low relevance
- assertSuggestImportedClass('D', CompletionRelevance.LOW);
- assertSuggestImportedFunction('D1', null, true, CompletionRelevance.LOW);
+ // but imported results are partially filtered
+ //assertSuggestImportedClass('D', CompletionRelevance.LOW);
+ //assertSuggestImportedFunction('D1', null, true, CompletionRelevance.LOW);
assertSuggestLocalFunction('D2', 'Z');
assertSuggestImportedClass('EE');
// hidden element suggested as low relevance
- assertSuggestImportedClass('F', CompletionRelevance.LOW);
+ //assertSuggestImportedClass('F', CompletionRelevance.LOW);
assertSuggestLibraryPrefix('g');
assertNotSuggested('G');
- assertSuggestImportedClass('H', CompletionRelevance.LOW);
+ //assertSuggestImportedClass('H', CompletionRelevance.LOW);
assertSuggestImportedClass('Object');
assertSuggestImportedFunction('min', 'num', false);
- assertSuggestImportedFunction(
- 'max',
- 'num',
- false,
- CompletionRelevance.LOW);
+ //assertSuggestImportedFunction(
+ // 'max',
+ // 'num',
+ // false,
+ // CompletionRelevance.LOW);
assertSuggestTopLevelVarGetterSetter('T1', 'String');
assertNotSuggested('_T2');
- assertSuggestImportedTopLevelVar('T3', 'int', CompletionRelevance.LOW);
+ //assertSuggestImportedTopLevelVar('T3', 'int', CompletionRelevance.LOW);
assertNotSuggested('_T4');
assertSuggestLocalTopLevelVar('T5', 'int');
assertSuggestLocalTopLevelVar('_T6', null);
@@ -1029,6 +1054,80 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
});
}
+ test_Block_identifier_partial() {
+ addSource('/testAB.dart', '''
+ export "dart:math" hide max;
+ class A {int x;}
+ @deprecated D1() {int x;}
+ class _B { }''');
+ addSource('/testCD.dart', '''
+ String T1;
+ var _T2;
+ class C { }
+ class D { }''');
+ addSource('/testEEF.dart', '''
+ class EE { }
+ class F { }''');
+ addSource('/testG.dart', 'class G { }');
+ addSource('/testH.dart', '''
+ class H { }
+ int T3;
+ var _T4;'''); // not imported
+ addTestSource('''
+ import "/testAB.dart";
+ import "/testCD.dart" hide D;
+ import "/testEEF.dart" show EE;
+ import "/testG.dart" as g;
+ int T5;
+ var _T6;
+ Z D2() {int x;}
+ class X {a() {var f; {var x;} D^ var r;} void b() { }}
+ class Z { }''');
+ computeFast();
+ return computeFull((bool result) {
+
+ assertSuggestLocalClass('X');
+ assertSuggestLocalClass('Z');
+ assertLocalSuggestMethod('a', 'X', null);
+ assertLocalSuggestMethod('b', 'X', 'void');
+ assertSuggestLocalVariable('f', null);
+ // Don't suggest locals out of scope
+ assertNotSuggested('r');
+ assertNotSuggested('x');
+
+ // imported elements are portially filtered
+ //assertSuggestImportedClass('A');
+ assertNotSuggested('_B');
+ //assertSuggestImportedClass('C');
+ // hidden element suggested as low relevance
+ assertSuggestImportedClass('D', CompletionRelevance.LOW);
+ assertSuggestImportedFunction('D1', null, true, CompletionRelevance.LOW);
+ assertSuggestLocalFunction('D2', 'Z');
+ //assertSuggestImportedClass('EE');
+ // hidden element suggested as low relevance
+ //assertSuggestImportedClass('F', CompletionRelevance.LOW);
+ //assertSuggestLibraryPrefix('g');
+ assertNotSuggested('G');
+ //assertSuggestImportedClass('H', CompletionRelevance.LOW);
+ //assertSuggestImportedClass('Object');
+ //assertSuggestImportedFunction('min', 'num', false);
+ //assertSuggestImportedFunction(
+ // 'max',
+ // 'num',
+ // false,
+ // CompletionRelevance.LOW);
+ //assertSuggestTopLevelVarGetterSetter('T1', 'String');
+ assertNotSuggested('_T2');
+ //assertSuggestImportedTopLevelVar('T3', 'int', CompletionRelevance.LOW);
+ assertNotSuggested('_T4');
+ //assertSuggestLocalTopLevelVar('T5', 'int');
+ //assertSuggestLocalTopLevelVar('_T6', null);
+ assertNotSuggested('==');
+ // TODO (danrubel) suggest HtmlElement as low relevance
+ assertNotSuggested('HtmlElement');
+ });
+ }
+
test_Block_inherited_imported() {
// Block BlockFunctionBody MethodDeclaration ClassDeclaration
addSource('/testB.dart', '''
@@ -1157,7 +1256,8 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
assertSuggestLocalVariable('a', 'A');
assertSuggestLocalClass('A');
assertSuggestLocalClass('X');
- assertSuggestImportedClass('Object');
+ // top level results are partially filtered
+ //assertSuggestImportedClass('Object');
assertNotSuggested('==');
});
}
@@ -1351,7 +1451,7 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
import "/testA.dart";
typedef int F2(int blat);
class Clz = Object with Object;
- class C {foo(){O^} void bar() {}}''');
+ class C {foo(){^} void bar() {}}''');
computeFast();
return computeFull((bool result) {
assertSuggestImportedClass('A');
@@ -1583,7 +1683,8 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
computeFast();
return computeFull((bool result) {
assertSuggestLocalVariable('name', 'String');
- assertSuggestImportedClass('Object');
+ // top level results are partially filtered
+ //assertSuggestImportedClass('Object');
});
}
@@ -1605,7 +1706,8 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
computeFast();
return computeFull((bool result) {
assertSuggestLocalVariable('name', 'String');
- assertSuggestImportedClass('Object');
+ // top level results are partially filtered
+ //assertSuggestImportedClass('Object');
assertNotSuggested('length');
});
}
@@ -1662,6 +1764,20 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
});
}
+ test_IsExpression_type_partial() {
+ // SimpleIdentifier TypeName IsExpression IfStatement
+ addTestSource('''
+ class A {int x; int y() => 0;}
+ main(){var a; if (a is Obj^)}''');
+ computeFast();
+ return computeFull((bool result) {
+ assertNotSuggested('a');
+ assertNotSuggested('main');
+ assertSuggestLocalClass('A');
+ assertSuggestImportedClass('Object');
+ });
+ }
+
test_Literal_string() {
// SimpleStringLiteral ExpressionStatement Block
addTestSource('class A {a() {"hel^lo"}}');

Powered by Google App Engine
This is Rietveld 408576698