Index: pkg/analysis_server/test/services/completion/keyword_contributor_test.dart |
diff --git a/pkg/analysis_server/test/services/completion/keyword_contributor_test.dart b/pkg/analysis_server/test/services/completion/keyword_contributor_test.dart |
deleted file mode 100644 |
index 4a2085f91b3fd1aceeddb2a2cccd30f703114654..0000000000000000000000000000000000000000 |
--- a/pkg/analysis_server/test/services/completion/keyword_contributor_test.dart |
+++ /dev/null |
@@ -1,1424 +0,0 @@ |
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library test.services.completion.dart.keyword; |
- |
-import 'package:analysis_server/plugin/protocol/protocol.dart'; |
-import 'package:analysis_server/src/services/completion/dart_completion_manager.dart'; |
-import 'package:analysis_server/src/services/completion/keyword_contributor.dart'; |
-import 'package:analyzer/src/generated/scanner.dart'; |
-import 'package:test_reflective_loader/test_reflective_loader.dart'; |
-import 'package:unittest/unittest.dart'; |
- |
-import '../../utils.dart'; |
-import 'completion_test_util.dart'; |
- |
-main() { |
- initializeTestEnvironment(); |
- defineReflectiveTests(KeywordContributorTest); |
-} |
- |
-@reflectiveTest |
-class KeywordContributorTest extends AbstractCompletionTest { |
- static const List<Keyword> CLASS_BODY_KEYWORDS = const [ |
- Keyword.CONST, |
- Keyword.DYNAMIC, |
- Keyword.FACTORY, |
- Keyword.FINAL, |
- Keyword.GET, |
- Keyword.OPERATOR, |
- Keyword.SET, |
- Keyword.STATIC, |
- Keyword.VAR, |
- Keyword.VOID |
- ]; |
- |
- static const List<Keyword> DECLARATION_KEYWORDS = const [ |
- Keyword.ABSTRACT, |
- Keyword.CLASS, |
- Keyword.CONST, |
- Keyword.DYNAMIC, |
- Keyword.FINAL, |
- Keyword.TYPEDEF, |
- Keyword.VAR, |
- Keyword.VOID |
- ]; |
- |
- static const List<Keyword> DIRECTIVE_AND_DECLARATION_KEYWORDS = const [ |
- Keyword.ABSTRACT, |
- Keyword.CLASS, |
- Keyword.CONST, |
- Keyword.DYNAMIC, |
- Keyword.EXPORT, |
- Keyword.FINAL, |
- Keyword.IMPORT, |
- Keyword.PART, |
- Keyword.TYPEDEF, |
- Keyword.VAR, |
- Keyword.VOID |
- ]; |
- |
- static const List<Keyword> DIRECTIVE_DECLARATION_AND_LIBRARY_KEYWORDS = |
- const [ |
- Keyword.ABSTRACT, |
- Keyword.CLASS, |
- Keyword.CONST, |
- Keyword.DYNAMIC, |
- Keyword.EXPORT, |
- Keyword.FINAL, |
- Keyword.IMPORT, |
- Keyword.LIBRARY, |
- Keyword.PART, |
- Keyword.TYPEDEF, |
- Keyword.VAR, |
- Keyword.VOID |
- ]; |
- |
- static const List<String> NO_PSEUDO_KEYWORDS = const []; |
- |
- static const List<Keyword> STMT_START_IN_CLASS = const [ |
- Keyword.ASSERT, |
- Keyword.CONST, |
- Keyword.DO, |
- Keyword.FINAL, |
- Keyword.FOR, |
- Keyword.IF, |
- Keyword.NEW, |
- Keyword.RETURN, |
- Keyword.SUPER, |
- Keyword.SWITCH, |
- Keyword.THIS, |
- Keyword.THROW, |
- Keyword.TRY, |
- Keyword.VAR, |
- Keyword.VOID, |
- Keyword.WHILE |
- ]; |
- |
- static const List<Keyword> STMT_START_IN_LOOP_IN_CLASS = const [ |
- Keyword.ASSERT, |
- Keyword.BREAK, |
- Keyword.CONST, |
- Keyword.CONTINUE, |
- Keyword.DO, |
- Keyword.FINAL, |
- Keyword.FOR, |
- Keyword.IF, |
- Keyword.NEW, |
- Keyword.RETURN, |
- Keyword.SUPER, |
- Keyword.SWITCH, |
- Keyword.THIS, |
- Keyword.THROW, |
- Keyword.TRY, |
- Keyword.VAR, |
- Keyword.VOID, |
- Keyword.WHILE |
- ]; |
- |
- static const List<Keyword> STMT_START_IN_SWITCH_IN_CLASS = const [ |
- Keyword.ASSERT, |
- Keyword.BREAK, |
- Keyword.CASE, |
- Keyword.CONST, |
- Keyword.DEFAULT, |
- Keyword.DO, |
- Keyword.FINAL, |
- Keyword.FOR, |
- Keyword.IF, |
- Keyword.NEW, |
- Keyword.RETURN, |
- Keyword.SUPER, |
- Keyword.SWITCH, |
- Keyword.THIS, |
- Keyword.THROW, |
- Keyword.TRY, |
- Keyword.VAR, |
- Keyword.VOID, |
- Keyword.WHILE |
- ]; |
- |
- static const List<Keyword> STMT_START_IN_SWITCH_OUTSIDE_CLASS = const [ |
- Keyword.ASSERT, |
- Keyword.BREAK, |
- Keyword.CASE, |
- Keyword.CONST, |
- Keyword.DEFAULT, |
- Keyword.DO, |
- Keyword.FINAL, |
- Keyword.FOR, |
- Keyword.IF, |
- Keyword.NEW, |
- Keyword.RETURN, |
- Keyword.SWITCH, |
- Keyword.THROW, |
- Keyword.TRY, |
- Keyword.VAR, |
- Keyword.VOID, |
- Keyword.WHILE |
- ]; |
- |
- static const List<Keyword> STMT_START_OUTSIDE_CLASS = const [ |
- Keyword.ASSERT, |
- Keyword.CONST, |
- Keyword.DO, |
- Keyword.FINAL, |
- Keyword.FOR, |
- Keyword.IF, |
- Keyword.NEW, |
- Keyword.RETURN, |
- Keyword.SWITCH, |
- Keyword.THROW, |
- Keyword.TRY, |
- Keyword.VAR, |
- Keyword.VOID, |
- Keyword.WHILE |
- ]; |
- |
- static const List<Keyword> STMT_START_IN_LOOP_OUTSIDE_CLASS = const [ |
- Keyword.ASSERT, |
- Keyword.BREAK, |
- Keyword.CONST, |
- Keyword.CONTINUE, |
- Keyword.DO, |
- Keyword.FINAL, |
- Keyword.FOR, |
- Keyword.IF, |
- Keyword.NEW, |
- Keyword.RETURN, |
- Keyword.SWITCH, |
- Keyword.THROW, |
- Keyword.TRY, |
- Keyword.VAR, |
- Keyword.VOID, |
- Keyword.WHILE |
- ]; |
- |
- static const List<Keyword> EXPRESSION_START_INSTANCE = const [ |
- Keyword.CONST, |
- Keyword.FALSE, |
- Keyword.NEW, |
- Keyword.NULL, |
- Keyword.SUPER, |
- Keyword.THIS, |
- Keyword.TRUE, |
- ]; |
- |
- static const List<Keyword> EXPRESSION_START_NO_INSTANCE = const [ |
- Keyword.CONST, |
- Keyword.FALSE, |
- Keyword.NEW, |
- Keyword.NULL, |
- Keyword.TRUE, |
- ]; |
- |
- void assertSuggestKeywords(Iterable<Keyword> expectedKeywords, |
- {List<String> pseudoKeywords: NO_PSEUDO_KEYWORDS, |
- int relevance: DART_RELEVANCE_KEYWORD}) { |
- Set<String> expectedCompletions = new Set<String>(); |
- Map<String, int> expectedOffsets = <String, int>{}; |
- Set<String> actualCompletions = new Set<String>(); |
- expectedCompletions.addAll(expectedKeywords.map((k) => k.syntax)); |
- expectedCompletions.addAll(pseudoKeywords); |
- for (CompletionSuggestion s in request.suggestions) { |
- if (s.kind == CompletionSuggestionKind.KEYWORD) { |
- Keyword k = Keyword.keywords[s.completion]; |
- if (k == null && !expectedCompletions.contains(s.completion)) { |
- fail('Invalid keyword suggested: ${s.completion}'); |
- } else { |
- if (!actualCompletions.add(s.completion)) { |
- fail('Duplicate keyword suggested: ${s.completion}'); |
- } |
- } |
- } |
- } |
- if (!_equalSets(expectedCompletions, actualCompletions)) { |
- StringBuffer msg = new StringBuffer(); |
- msg.writeln('Expected:'); |
- _appendCompletions(msg, expectedCompletions, actualCompletions); |
- msg.writeln('but found:'); |
- _appendCompletions(msg, actualCompletions, expectedCompletions); |
- fail(msg.toString()); |
- } |
- for (CompletionSuggestion s in request.suggestions) { |
- if (s.kind == CompletionSuggestionKind.KEYWORD) { |
- if (s.completion.startsWith(Keyword.IMPORT.syntax)) { |
- int importRelevance = relevance; |
- if (importRelevance == DART_RELEVANCE_HIGH && |
- s.completion == "import '';") { |
- ++importRelevance; |
- } |
- expect(s.relevance, equals(importRelevance), reason: s.completion); |
- } else { |
- if (s.completion == Keyword.RETHROW.syntax) { |
- expect(s.relevance, equals(relevance - 1), reason: s.completion); |
- } else { |
- expect(s.relevance, equals(relevance), reason: s.completion); |
- } |
- } |
- int expectedOffset = expectedOffsets[s.completion]; |
- if (expectedOffset == null) { |
- expectedOffset = s.completion.length; |
- } |
- expect(s.selectionOffset, equals(expectedOffset)); |
- expect(s.selectionLength, equals(0)); |
- expect(s.isDeprecated, equals(false)); |
- expect(s.isPotential, equals(false)); |
- } |
- } |
- } |
- |
- fail_import_partial() { |
- addTestSource('imp^ import "package:foo/foo.dart"; import "bar.dart";'); |
- expect(computeFast(), isTrue); |
- // TODO(danrubel) should not suggest declaration keywords |
- assertNotSuggested('class'); |
- } |
- |
- fail_import_partial4() { |
- addTestSource('^ imp import "package:foo/foo.dart";'); |
- expect(computeFast(), isTrue); |
- // TODO(danrubel) should not suggest declaration keywords |
- assertNotSuggested('class'); |
- } |
- |
- fail_import_partial5() { |
- addTestSource('library libA; imp^ import "package:foo/foo.dart";'); |
- expect(computeFast(), isTrue); |
- // TODO(danrubel) should not suggest declaration keywords |
- assertNotSuggested('class'); |
- } |
- |
- fail_import_partial6() { |
- addTestSource( |
- 'library bar; import "zoo.dart"; imp^ import "package:foo/foo.dart";'); |
- expect(computeFast(), isTrue); |
- // TODO(danrubel) should not suggest declaration keywords |
- assertNotSuggested('class'); |
- } |
- |
- @override |
- void setUpContributor() { |
- contributor = new KeywordContributor(); |
- } |
- |
- test_after_class() { |
- addTestSource('class A {} ^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(DECLARATION_KEYWORDS, relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_after_class2() { |
- addTestSource('class A {} c^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(DECLARATION_KEYWORDS, relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_after_import() { |
- addTestSource('import "foo"; ^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(DIRECTIVE_AND_DECLARATION_KEYWORDS, |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_after_import2() { |
- addTestSource('import "foo"; c^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(DIRECTIVE_AND_DECLARATION_KEYWORDS, |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_anonymous_function_async() { |
- addTestSource('main() {foo(() ^ {}}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([], |
- pseudoKeywords: ['async'], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_anonymous_function_async2() { |
- addTestSource('main() {foo(() a^ {}}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_OUTSIDE_CLASS, pseudoKeywords: ['async']); |
- } |
- |
- test_anonymous_function_async3() { |
- addTestSource('main() {foo(() async ^ {}}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_argument() { |
- addTestSource('main() {foo(^);}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_argument2() { |
- addTestSource('main() {foo(n^);}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_argument_literal() { |
- addTestSource('main() {foo("^");}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_argument_named() { |
- addTestSource('main() {foo(bar: ^);}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_argument_named2() { |
- addTestSource('main() {foo(bar: n^);}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_argument_named_literal() { |
- addTestSource('main() {foo(bar: "^");}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_assignment_field() { |
- addTestSource('class A {var foo = ^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_assignment_field2() { |
- addTestSource('class A {var foo = n^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_assignment_local() { |
- addTestSource('main() {var foo = ^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_assignment_local2() { |
- addTestSource('main() {var foo = n^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_assignment_local2_async() { |
- addTestSource('main() async {var foo = n^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE, |
- pseudoKeywords: ['await']); |
- } |
- |
- test_assignment_local_async() { |
- addTestSource('main() async {var foo = ^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE, |
- pseudoKeywords: ['await']); |
- } |
- |
- test_before_import() { |
- addTestSource('^ import foo;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords( |
- [Keyword.EXPORT, Keyword.IMPORT, Keyword.LIBRARY, Keyword.PART], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_catch() { |
- addTestSource('main() {try {} catch (e) {^}}}'); |
- expect(computeFast(), isTrue); |
- var keywords = <Keyword>[]; |
- keywords.addAll(STMT_START_OUTSIDE_CLASS); |
- keywords.add(Keyword.RETHROW); |
- assertSuggestKeywords(keywords, relevance: DART_RELEVANCE_KEYWORD); |
- } |
- |
- test_class() { |
- addTestSource('class A e^ { }'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.EXTENDS, Keyword.IMPLEMENTS], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_class_body() { |
- addTestSource('class A {^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(CLASS_BODY_KEYWORDS); |
- } |
- |
- test_class_body_beginning() { |
- addTestSource('class A {^ var foo;}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(CLASS_BODY_KEYWORDS); |
- } |
- |
- test_class_body_between() { |
- addTestSource('class A {var bar; ^ var foo;}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(CLASS_BODY_KEYWORDS); |
- } |
- |
- test_class_body_end() { |
- addTestSource('class A {var foo; ^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(CLASS_BODY_KEYWORDS); |
- } |
- |
- test_class_extends() { |
- addTestSource('class A extends foo ^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.IMPLEMENTS, Keyword.WITH], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_class_extends2() { |
- addTestSource('class A extends foo i^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.IMPLEMENTS, Keyword.WITH], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_class_extends3() { |
- addTestSource('class A extends foo i^ { }'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.IMPLEMENTS, Keyword.WITH], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_class_extends_name() { |
- addTestSource('class A extends ^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_class_implements() { |
- addTestSource('class A ^ implements foo'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.EXTENDS], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_class_implements2() { |
- addTestSource('class A e^ implements foo'); |
- expect(computeFast(), isTrue); |
- // TODO (danrubel) refinement: don't suggest implements |
- assertSuggestKeywords([Keyword.EXTENDS, Keyword.IMPLEMENTS], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_class_implements3() { |
- addTestSource('class A e^ implements foo { }'); |
- expect(computeFast(), isTrue); |
- // TODO (danrubel) refinement: don't suggest implements |
- assertSuggestKeywords([Keyword.EXTENDS, Keyword.IMPLEMENTS], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_class_implements_name() { |
- addTestSource('class A implements ^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_class_name() { |
- addTestSource('class ^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_class_noBody() { |
- addTestSource('class A ^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.EXTENDS, Keyword.IMPLEMENTS], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_class_noBody2() { |
- addTestSource('class A e^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.EXTENDS, Keyword.IMPLEMENTS], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_class_noBody3() { |
- addTestSource('class A e^ String foo;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.EXTENDS, Keyword.IMPLEMENTS], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_class_with() { |
- addTestSource('class A extends foo with bar ^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.IMPLEMENTS], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_class_with2() { |
- addTestSource('class A extends foo with bar i^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.IMPLEMENTS], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_class_with3() { |
- addTestSource('class A extends foo with bar i^ { }'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.IMPLEMENTS], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_class_with_name() { |
- addTestSource('class A extends foo with ^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_constructor_param() { |
- addTestSource('class A { A(^) {});}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.THIS]); |
- } |
- |
- test_constructor_param2() { |
- addTestSource('class A { A(t^) {});}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.THIS]); |
- } |
- |
- test_do_break_continue() { |
- addTestSource('main() {do {^} while (true);}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_LOOP_OUTSIDE_CLASS, |
- relevance: DART_RELEVANCE_KEYWORD); |
- } |
- |
- test_do_break_continue2() { |
- addTestSource('class A {foo() {do {^} while (true);}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_LOOP_IN_CLASS, |
- relevance: DART_RELEVANCE_KEYWORD); |
- } |
- |
- test_empty() { |
- addTestSource('^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(DIRECTIVE_DECLARATION_AND_LIBRARY_KEYWORDS, |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_for_break_continue() { |
- addTestSource('main() {for (int x in myList) {^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_LOOP_OUTSIDE_CLASS, |
- relevance: DART_RELEVANCE_KEYWORD); |
- } |
- |
- test_for_break_continue2() { |
- addTestSource('class A {foo() {for (int x in myList) {^}}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_LOOP_IN_CLASS, |
- relevance: DART_RELEVANCE_KEYWORD); |
- } |
- |
- test_for_expression_in() { |
- addTestSource('main() {for (int x i^)}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.IN], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_for_expression_in2() { |
- addTestSource('main() {for (int x in^)}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.IN], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_for_expression_init() { |
- addTestSource('main() {for (int x = i^)}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_for_expression_init2() { |
- addTestSource('main() {for (int x = in^)}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_function_async() { |
- addTestSource('main()^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(DECLARATION_KEYWORDS, |
- pseudoKeywords: ['async'], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_function_async2() { |
- addTestSource('main()^{}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([], |
- pseudoKeywords: ['async'], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_function_async3() { |
- addTestSource('main()a^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(DECLARATION_KEYWORDS, |
- pseudoKeywords: ['async'], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_function_async4() { |
- addTestSource('main()a^{}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(DECLARATION_KEYWORDS, |
- pseudoKeywords: ['async'], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_function_async5() { |
- addTestSource('main()a^ Foo foo;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(DECLARATION_KEYWORDS, |
- pseudoKeywords: ['async'], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_function_body_inClass_constructorInitializer() { |
- addTestSource(r''' |
-foo(p) {} |
-class A { |
- final f; |
- A() : f = foo(() {^}); |
-} |
-'''); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_OUTSIDE_CLASS); |
- } |
- |
- test_function_body_inClass_constructorInitializer_async() { |
- addTestSource(r''' |
-foo(p) {} |
-class A { |
- final f; |
- A() : f = foo(() async {^}); |
-} |
-'''); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_OUTSIDE_CLASS, pseudoKeywords: ['await']); |
- } |
- |
- test_function_body_inClass_field() { |
- addTestSource(r''' |
-class A { |
- var f = () {^}; |
-} |
-'''); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_OUTSIDE_CLASS); |
- } |
- |
- test_function_body_inClass_methodBody() { |
- addTestSource(r''' |
-class A { |
- m() { |
- f() {^}; |
- } |
-} |
-'''); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_CLASS); |
- } |
- |
- test_function_body_inClass_methodBody_inFunction() { |
- addTestSource(r''' |
-class A { |
- m() { |
- f() { |
- f2() {^}; |
- }; |
- } |
-} |
-'''); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_CLASS); |
- } |
- |
- test_function_body_inClass_methodBody_inFunction_async() { |
- addTestSource(r''' |
-class A { |
- m() { |
- f() { |
- f2() async {^}; |
- }; |
- } |
-} |
-'''); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_CLASS, pseudoKeywords: ['await']); |
- } |
- |
- test_function_body_inUnit() { |
- addTestSource('main() {^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_OUTSIDE_CLASS); |
- } |
- |
- test_function_body_inUnit_afterBlock() { |
- addTestSource('main() {{}^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_OUTSIDE_CLASS); |
- } |
- |
- test_function_body_inUnit_async() { |
- addTestSource('main() async {^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_OUTSIDE_CLASS, pseudoKeywords: ['await']); |
- } |
- |
- test_if_expression_in_class() { |
- addTestSource('class A {foo() {if (^) }}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_INSTANCE); |
- } |
- |
- test_if_expression_in_class2() { |
- addTestSource('class A {foo() {if (n^) }}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_INSTANCE); |
- } |
- |
- test_if_expression_in_function() { |
- addTestSource('foo() {if (^) }'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_if_expression_in_function2() { |
- addTestSource('foo() {if (n^) }'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_if_in_class() { |
- addTestSource('class A {foo() {if (true) ^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_CLASS); |
- } |
- |
- test_if_in_class2() { |
- addTestSource('class A {foo() {if (true) ^;}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_CLASS); |
- } |
- |
- test_if_in_class3() { |
- addTestSource('class A {foo() {if (true) r^;}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_CLASS); |
- } |
- |
- test_if_in_class4() { |
- addTestSource('class A {foo() {if (true) ^ go();}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_CLASS); |
- } |
- |
- test_if_outside_class() { |
- addTestSource('foo() {if (true) ^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_OUTSIDE_CLASS); |
- } |
- |
- test_if_outside_class2() { |
- addTestSource('foo() {if (true) ^;}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_OUTSIDE_CLASS); |
- } |
- |
- test_if_outside_class3() { |
- addTestSource('foo() {if (true) r^;}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_OUTSIDE_CLASS); |
- } |
- |
- test_if_outside_class4() { |
- addTestSource('foo() {if (true) ^ go();}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_OUTSIDE_CLASS); |
- } |
- |
- test_import() { |
- addTestSource('import "foo" deferred as foo ^;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([], |
- pseudoKeywords: ['show', 'hide'], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_as() { |
- addTestSource('import "foo" deferred ^;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.AS], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_as2() { |
- addTestSource('import "foo" deferred a^;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.AS], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_as3() { |
- addTestSource('import "foo" deferred a^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.AS], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_deferred() { |
- addTestSource('import "foo" ^ as foo;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.DEFERRED], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_deferred2() { |
- addTestSource('import "foo" d^ as foo;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.DEFERRED], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_deferred3() { |
- addTestSource('import "foo" d^ show foo;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.AS], |
- pseudoKeywords: ['deferred as'], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_deferred4() { |
- addTestSource('import "foo" d^ hide foo;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.AS], |
- pseudoKeywords: ['deferred as'], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_deferred5() { |
- addTestSource('import "foo" d^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.AS], |
- pseudoKeywords: ['deferred as', 'show', 'hide'], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_deferred6() { |
- addTestSource('import "foo" d^ import'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.AS], |
- pseudoKeywords: ['deferred as', 'show', 'hide'], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_deferred_as() { |
- addTestSource('import "foo" ^;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.AS], |
- pseudoKeywords: ['deferred as', 'show', 'hide'], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_deferred_as2() { |
- addTestSource('import "foo" d^;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.AS], |
- pseudoKeywords: ['deferred as', 'show', 'hide'], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_deferred_as3() { |
- addTestSource('import "foo" ^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.AS], |
- pseudoKeywords: ['deferred as', 'show', 'hide'], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_deferred_as4() { |
- addTestSource('import "foo" d^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.AS], |
- pseudoKeywords: ['deferred as', 'show', 'hide'], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_deferred_as5() { |
- addTestSource('import "foo" sh^ import "bar"; import "baz";'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.AS], |
- pseudoKeywords: ['deferred as', 'show', 'hide'], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_deferred_not() { |
- addTestSource('import "foo" as foo ^;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([], |
- pseudoKeywords: ['show', 'hide'], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_import_deferred_partial() { |
- addTestSource('import "package:foo/foo.dart" def^ as foo;'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.DEFERRED], relevance: DART_RELEVANCE_HIGH); |
- expect(request.replacementOffset, 30); |
- expect(request.replacementLength, 3); |
- } |
- |
- test_import_incomplete() { |
- addTestSource('import "^"'); |
- expect(computeFast(), isTrue); |
- assertNoSuggestions(); |
- } |
- |
- test_import_partial() { |
- addTestSource('imp^ import "package:foo/foo.dart"; import "bar.dart";'); |
- expect(computeFast(), isTrue); |
- // TODO(danrubel) should not suggest declaration keywords |
- assertSuggestKeywords(DIRECTIVE_DECLARATION_AND_LIBRARY_KEYWORDS, |
- relevance: DART_RELEVANCE_HIGH); |
- expect(request.replacementOffset, 0); |
- expect(request.replacementLength, 3); |
- } |
- |
- test_import_partial2() { |
- addTestSource('^imp import "package:foo/foo.dart";'); |
- expect(computeFast(), isTrue); |
- // TODO(danrubel) should not suggest declaration keywords |
- assertSuggestKeywords(DIRECTIVE_DECLARATION_AND_LIBRARY_KEYWORDS, |
- relevance: DART_RELEVANCE_HIGH); |
- expect(request.replacementOffset, 0); |
- expect(request.replacementLength, 3); |
- } |
- |
- test_import_partial3() { |
- addTestSource(' ^imp import "package:foo/foo.dart"; import "bar.dart";'); |
- expect(computeFast(), isTrue); |
- // TODO(danrubel) should not suggest declaration keywords |
- assertSuggestKeywords(DIRECTIVE_DECLARATION_AND_LIBRARY_KEYWORDS, |
- relevance: DART_RELEVANCE_HIGH); |
- expect(request.replacementOffset, 1); |
- expect(request.replacementLength, 3); |
- } |
- |
- test_import_partial4() { |
- addTestSource('^ imp import "package:foo/foo.dart";'); |
- expect(computeFast(), isTrue); |
- // TODO(danrubel) should not suggest declaration keywords |
- assertSuggestKeywords(DIRECTIVE_DECLARATION_AND_LIBRARY_KEYWORDS, |
- relevance: DART_RELEVANCE_HIGH); |
- expect(request.replacementOffset, 0); |
- expect(request.replacementLength, 0); |
- } |
- |
- test_import_partial5() { |
- addTestSource('library libA; imp^ import "package:foo/foo.dart";'); |
- expect(computeFast(), isTrue); |
- // TODO(danrubel) should not suggest declaration keywords |
- assertSuggestKeywords(DIRECTIVE_AND_DECLARATION_KEYWORDS, |
- relevance: DART_RELEVANCE_HIGH); |
- expect(request.replacementOffset, 14); |
- expect(request.replacementLength, 3); |
- } |
- |
- test_import_partial6() { |
- addTestSource( |
- 'library bar; import "zoo.dart"; imp^ import "package:foo/foo.dart";'); |
- expect(computeFast(), isTrue); |
- // TODO(danrubel) should not suggest declaration keywords |
- assertSuggestKeywords(DIRECTIVE_AND_DECLARATION_KEYWORDS, |
- relevance: DART_RELEVANCE_HIGH); |
- expect(request.replacementOffset, 32); |
- expect(request.replacementLength, 3); |
- } |
- |
- test_inComment_block() { |
- addTestSource(''' |
-main() { |
- /* text ^ */ |
- print(42); |
-} |
-'''); |
- expect(computeFast(), isTrue); |
- assertNoSuggestions(); |
- } |
- |
- test_inComment_endOfLine() { |
- addTestSource(''' |
-main() { |
- // text ^ |
-} |
-'''); |
- expect(computeFast(), isTrue); |
- assertNoSuggestions(); |
- } |
- |
- test_is_expression() { |
- addTestSource('main() {if (x is^)}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.IS], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_library() { |
- addTestSource('library foo;^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(DIRECTIVE_AND_DECLARATION_KEYWORDS, |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_library_declaration() { |
- addTestSource('library ^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_library_declaration2() { |
- addTestSource('library a^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_library_declaration3() { |
- addTestSource('library a.^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_library_name() { |
- addTestSource('library ^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_method_async() { |
- addTestSource('class A { foo() ^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(CLASS_BODY_KEYWORDS, pseudoKeywords: ['async']); |
- } |
- |
- test_method_async2() { |
- addTestSource('class A { foo() ^{}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([], |
- pseudoKeywords: ['async'], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_method_async3() { |
- addTestSource('class A { foo() a^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(CLASS_BODY_KEYWORDS, pseudoKeywords: ['async']); |
- } |
- |
- test_method_async4() { |
- addTestSource('class A { foo() a^{}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(CLASS_BODY_KEYWORDS, pseudoKeywords: ['async']); |
- } |
- |
- test_method_async5() { |
- addTestSource('class A { foo() ^ Foo foo;}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(CLASS_BODY_KEYWORDS, pseudoKeywords: ['async']); |
- } |
- |
- test_method_async6() { |
- addTestSource('class A { foo() a^ Foo foo;}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(CLASS_BODY_KEYWORDS, pseudoKeywords: ['async']); |
- } |
- |
- test_method_async7() { |
- addTestSource('class A { foo() ^ => Foo foo;}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([], |
- pseudoKeywords: ['async'], relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_method_async8() { |
- addTestSource('class A { foo() a^ Foo foo;}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(CLASS_BODY_KEYWORDS, pseudoKeywords: ['async']); |
- } |
- |
- test_method_body() { |
- addTestSource('class A { foo() {^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_CLASS); |
- } |
- |
- test_method_body2() { |
- addTestSource('class A { foo() => ^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_INSTANCE); |
- } |
- |
- test_method_body3() { |
- addTestSource('class A { foo() => ^ Foo foo;}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_INSTANCE); |
- } |
- |
- test_method_body4() { |
- addTestSource('class A { foo() => ^;}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_INSTANCE); |
- } |
- |
- test_method_body_async() { |
- addTestSource('class A { foo() async {^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_CLASS, pseudoKeywords: ['await']); |
- } |
- |
- test_method_body_async2() { |
- addTestSource('class A { foo() async => ^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_INSTANCE, pseudoKeywords: ['await']); |
- } |
- |
- test_method_body_async3() { |
- addTestSource('class A { foo() async => ^ Foo foo;}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_INSTANCE, pseudoKeywords: ['await']); |
- } |
- |
- test_method_body_async4() { |
- addTestSource('class A { foo() async => ^;}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_INSTANCE, pseudoKeywords: ['await']); |
- } |
- |
- test_method_body_expression1() { |
- addTestSource('class A { foo() {return b == true ? ^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_INSTANCE); |
- } |
- |
- test_method_body_expression2() { |
- addTestSource('class A { foo() {return b == true ? 1 : ^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_INSTANCE); |
- } |
- |
- test_method_body_return() { |
- addTestSource('class A { foo() {return ^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_INSTANCE); |
- } |
- |
- test_method_param() { |
- addTestSource('class A { foo(^) {});}'); |
- expect(computeFast(), isTrue); |
- assertNoSuggestions(); |
- } |
- |
- test_method_param2() { |
- addTestSource('class A { foo(t^) {});}'); |
- expect(computeFast(), isTrue); |
- assertNoSuggestions(); |
- } |
- |
- test_named_constructor_invocation() { |
- addTestSource('void main() {new Future.^}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_newInstance() { |
- addTestSource('class A { foo() {new ^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_newInstance2() { |
- addTestSource('class A { foo() {new ^ print("foo");}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_newInstance_prefixed() { |
- addTestSource('class A { foo() {new A.^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_newInstance_prefixed2() { |
- addTestSource('class A { foo() {new A.^ print("foo");}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_part_of() { |
- addTestSource('part of foo;^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(DIRECTIVE_AND_DECLARATION_KEYWORDS, |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_partial_class() { |
- addTestSource('cl^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(DIRECTIVE_DECLARATION_AND_LIBRARY_KEYWORDS, |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_partial_class2() { |
- addTestSource('library a; cl^'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(DIRECTIVE_AND_DECLARATION_KEYWORDS, |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_prefixed_field() { |
- addTestSource('class A { int x; foo() {x.^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_prefixed_field2() { |
- addTestSource('class A { int x; foo() {x.^ print("foo");}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_prefixed_library() { |
- addTestSource('import "b" as b; class A { foo() {b.^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_prefixed_local() { |
- addTestSource('class A { foo() {int x; x.^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_prefixed_local2() { |
- addTestSource('class A { foo() {int x; x.^ print("foo");}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_property_access() { |
- addTestSource('class A { get x => 7; foo() {new A().^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([]); |
- } |
- |
- test_switch_expression() { |
- addTestSource('main() {switch(^) {}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_switch_expression2() { |
- addTestSource('main() {switch(n^) {}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_switch_expression3() { |
- addTestSource('main() {switch(n^)}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(EXPRESSION_START_NO_INSTANCE); |
- } |
- |
- test_switch_start() { |
- addTestSource('main() {switch(1) {^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.CASE, Keyword.DEFAULT], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_switch_start2() { |
- addTestSource('main() {switch(1) {^ case 1:}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.CASE, Keyword.DEFAULT], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_switch_start3() { |
- addTestSource('main() {switch(1) {^default:}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.CASE, Keyword.DEFAULT], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_switch_start4() { |
- addTestSource('main() {switch(1) {^ default:}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.CASE, Keyword.DEFAULT], |
- relevance: DART_RELEVANCE_HIGH); |
- } |
- |
- test_switch_start5() { |
- addTestSource('main() {switch(1) {c^ default:}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.CASE, Keyword.DEFAULT], |
- relevance: DART_RELEVANCE_HIGH); |
- expect(request.replacementOffset, 19); |
- expect(request.replacementLength, 1); |
- } |
- |
- test_switch_start6() { |
- addTestSource('main() {switch(1) {c^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.CASE, Keyword.DEFAULT], |
- relevance: DART_RELEVANCE_HIGH); |
- expect(request.replacementOffset, 19); |
- expect(request.replacementLength, 1); |
- } |
- |
- test_switch_start7() { |
- addTestSource('main() {switch(1) { c^ }}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords([Keyword.CASE, Keyword.DEFAULT], |
- relevance: DART_RELEVANCE_HIGH); |
- expect(request.replacementOffset, 20); |
- expect(request.replacementLength, 1); |
- } |
- |
- test_switch_statement() { |
- addTestSource('main() {switch(1) {case 1:^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_SWITCH_OUTSIDE_CLASS); |
- } |
- |
- test_switch_statement2() { |
- addTestSource('class A{foo() {switch(1) {case 1:^}}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_SWITCH_IN_CLASS); |
- } |
- |
- test_while_break_continue() { |
- addTestSource('main() {while (true) {^}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_LOOP_OUTSIDE_CLASS, |
- relevance: DART_RELEVANCE_KEYWORD); |
- } |
- |
- test_while_break_continue2() { |
- addTestSource('class A {foo() {while (true) {^}}}'); |
- expect(computeFast(), isTrue); |
- assertSuggestKeywords(STMT_START_IN_LOOP_IN_CLASS, |
- relevance: DART_RELEVANCE_KEYWORD); |
- } |
- |
- void _appendCompletions( |
- StringBuffer msg, Iterable<String> completions, Iterable<String> other) { |
- List<String> sorted = completions.toList(); |
- sorted.sort((c1, c2) => c1.compareTo(c2)); |
- sorted.forEach( |
- (c) => msg.writeln(' $c, ${other.contains(c) ? '' : '<<<<<<<<<<<'}')); |
- } |
- |
- bool _equalSets(Iterable<String> iter1, Iterable<String> iter2) { |
- if (iter1.length != iter2.length) return false; |
- if (iter1.any((c) => !iter2.contains(c))) return false; |
- if (iter2.any((c) => !iter1.contains(c))) return false; |
- return true; |
- } |
-} |