| Index: pkg/analysis_server/test/completion_test.dart
|
| diff --git a/pkg/analysis_server/test/completion_test.dart b/pkg/analysis_server/test/completion_test.dart
|
| index aa47d3ea508df0dcd03b6e091c7f6a4e4ff59719..b6314cab720b64f037a4b44c16a07c8cf87d001a 100644
|
| --- a/pkg/analysis_server/test/completion_test.dart
|
| +++ b/pkg/analysis_server/test/completion_test.dart
|
| @@ -71,25 +71,23 @@ class Date { static Date JUN, JUL;}class X { m() { return Da!1te.JU!2L; }}''',
|
|
|
| buildTests('testCommentSnippets007', '''
|
| class C {mth(Map x, !1) {}mtf(!2, Map x) {}m() {for (in!3t i=0; i<5; i++); A!4 x;}}class int{}class Arrays{}''',
|
| - <String>["1+bool", "2+bool", "3+int", "4+Arrays"],
|
| - failingTests: '3');
|
| + <String>["1+bool", "2+bool", "3+int", "4+Arrays"], failingTests: '3');
|
|
|
| buildTests('testCommentSnippets008', '''
|
| class Date{}final num M = Dat!1''', <String>["1+Date"]);
|
|
|
| // space, char, eol are important
|
| buildTests('testCommentSnippets009', '''
|
| -class Maps{}class x extends!5 !2M!3 !4implements!6 !1\n{}''',
|
| - <String>[
|
| - "1+Map",
|
| - "2+Maps",
|
| - "3+Maps",
|
| - "4-Maps",
|
| - "4+implements",
|
| - "5-Maps",
|
| - "6-Map",
|
| - "6+implements"],
|
| - failingTests: '46');
|
| +class Maps{}class x extends!5 !2M!3 !4implements!6 !1\n{}''', <String>[
|
| + "1+Map",
|
| + "2+Maps",
|
| + "3+Maps",
|
| + "4-Maps",
|
| + "4+implements",
|
| + "5-Maps",
|
| + "6-Map",
|
| + "6+implements"
|
| + ], failingTests: '46');
|
|
|
| // space, char, eol are important
|
| buildTests('testCommentSnippets010', '''
|
| @@ -120,9 +118,14 @@ class F {m() { m(); !1}}''', <String>["1+m"]);
|
| class F {var x = !1false;}''', <String>["1+true"], failingTests: '1');
|
|
|
| buildTests('testCommentSnippets018', '''
|
| -class Map{}class Arrays{}class C{ m(!1){} n(!2 x, q)''',
|
| - <String>["1+Map", "1-void", "1-null", "2+Arrays", "2-void", "2-null"],
|
| - failingTests: '1');
|
| +class Map{}class Arrays{}class C{ m(!1){} n(!2 x, q)''', <String>[
|
| + "1+Map",
|
| + "1-void",
|
| + "1-null",
|
| + "2+Arrays",
|
| + "2-void",
|
| + "2-null"
|
| + ], failingTests: '1');
|
|
|
| buildTests('testCommentSnippets019', '''
|
| class A{m(){Object x;x.!1/**/clear()''', <String>["1+toString"]);
|
| @@ -133,8 +136,7 @@ classMap{}class tst {var newt;void newf(){}test() {var newz;new!1/**/;}}''',
|
|
|
| buildTests('testCommentSnippets021', '''
|
| class Map{}class tst {var newt;void newf(){}test() {var newz;new !1/**/;}}''',
|
| - <String>["1+Map", "1-newt"],
|
| - failingTests: '1');
|
| + <String>["1+Map", "1-newt"], failingTests: '1');
|
|
|
| buildTests('testCommentSnippets022', '''
|
| class Map{}class F{m(){new !1;}}''', <String>["1+Map"], failingTests: '1');
|
| @@ -155,21 +157,18 @@ class q {m(Map q){var x;m(!1)}n(){var x;n(!2)}}''', <String>["1+x", "2+x"]);
|
|
|
| buildTests('testCommentSnippets025', '''
|
| class q {num m() {var q; num x=!1 q!3 + !2/**/;}}''',
|
| - <String>["1+q", "2+q", "3+q"],
|
| - failingTests: '123');
|
| + <String>["1+q", "2+q", "3+q"], failingTests: '123');
|
|
|
| buildTests('testCommentSnippets026', '''
|
| class List{}class a implements !1{}''', <String>["1+List"], failingTests: '1');
|
|
|
| buildTests('testCommentSnippets027', '''
|
| class String{}class List{}class test <X extends !1String!2> {}''',
|
| - <String>["1+List", "2+String", "2-List"],
|
| - failingTests: '12');
|
| + <String>["1+List", "2+String", "2-List"], failingTests: '12');
|
|
|
| buildTests('testCommentSnippets028', '''
|
| class String{}class List{}class DateTime{}typedef T Y<T extends !1>(List input);''',
|
| - <String>["1+DateTime", "1+String"],
|
| - failingTests: '1');
|
| + <String>["1+DateTime", "1+String"], failingTests: '1');
|
|
|
| buildTests('testCommentSnippets029', '''
|
| interface A<X> default B<X extends !1List!2> {}''',
|
| @@ -182,13 +181,11 @@ class Bar<T extends Foo> {const Bar(!1T!2 k);T!3 m(T!4 a, T!5 b){}final T!6 f =
|
|
|
| buildTests('testCommentSnippets031', '''
|
| class Bar<T extends Foo> {m(x){if (x is !1) return;if (x is!!!2)}}''',
|
| - <String>["1+Bar", "1+T", "2+T", "2+Bar"],
|
| - failingTests: '12');
|
| + <String>["1+Bar", "1+T", "2+T", "2+Bar"], failingTests: '12');
|
|
|
| buildTests('testCommentSnippets032', '''
|
| class Fit{}class Bar<T extends Fooa> {const !2F!1ara();}''',
|
| - <String>["1+Fit", "1+Fara", "1-Bar", "2+Fit"],
|
| - failingTests: '1');
|
| + <String>["1+Fit", "1+Fara", "1-Bar", "2+Fit"], failingTests: '1');
|
|
|
| // Type propagation
|
| buildTests('testCommentSnippets033', '''
|
| @@ -236,8 +233,7 @@ class L{var k;void.!1}''', <String>["1-k"]);
|
|
|
| buildTests('testCommentSnippets044', '''
|
| class List{}class XXX {XXX.fisk();}main() {main(); new !1}}''',
|
| - <String>["1+List", "1+XXX.fisk"],
|
| - failingTests: '1');
|
| + <String>["1+List", "1+XXX.fisk"], failingTests: '1');
|
|
|
| buildTests('testCommentSnippets047', '''
|
| f(){int x;int y=!1;}''', <String>["1+x"]);
|
| @@ -249,15 +245,15 @@ import 'dart:convert' as json;f() {var x=new js!1}''', <String>["1+json"]);
|
| import 'dart:convert' as json;
|
| import 'dart:convert' as jxx;
|
| class JsonDecoderX{}
|
| -f1() {var x=new !2j!1s!3}''',
|
| - <String>[
|
| - "1+json",
|
| - "1+jxx",
|
| - "2+json",
|
| - "2+jxx",
|
| - "2-JsonDecoder",
|
| - "3+json",
|
| - "3-jxx"]);
|
| +f1() {var x=new !2j!1s!3}''', <String>[
|
| + "1+json",
|
| + "1+jxx",
|
| + "2+json",
|
| + "2+jxx",
|
| + "2-JsonDecoder",
|
| + "3+json",
|
| + "3-jxx"
|
| + ]);
|
|
|
| buildTests('testCommentSnippets050', '''
|
| class xdr {
|
| @@ -270,19 +266,18 @@ class xa{}
|
| k() {
|
| new x!1dr().f();
|
| const x!2dr.!3a(1, 2, 3);
|
| -}''',
|
| - <String>[
|
| - "1+xdr",
|
| - "1+xa",
|
| - "1+xdr.a",
|
| - "1+xdr.b",
|
| - "2-xa",
|
| - "2-xdr",
|
| - "2+xdr.a",
|
| - "2-xdr.b",
|
| - "3-b",
|
| - "3+a"],
|
| - failingTests: '123');
|
| +}''', <String>[
|
| + "1+xdr",
|
| + "1+xa",
|
| + "1+xdr.a",
|
| + "1+xdr.b",
|
| + "2-xa",
|
| + "2-xdr",
|
| + "2+xdr.a",
|
| + "2-xdr.b",
|
| + "3-b",
|
| + "3+a"
|
| + ], failingTests: '123');
|
|
|
| // Type propagation.
|
| buildTests('testCommentSnippets051', '''
|
| @@ -412,19 +407,19 @@ class Line {
|
| Spline h() {
|
| return null;
|
| }
|
| -}''',
|
| - <String>[
|
| - "1+a",
|
| - "2+b",
|
| - "1-g",
|
| - "2-h",
|
| - "3+b",
|
| - "4+c",
|
| - "5+a",
|
| - "6+c",
|
| - "7+g",
|
| - "8+j",
|
| - "9+h"]);
|
| +}''', <String>[
|
| + "1+a",
|
| + "2+b",
|
| + "1-g",
|
| + "2-h",
|
| + "3+b",
|
| + "4+c",
|
| + "5+a",
|
| + "6+c",
|
| + "7+g",
|
| + "8+j",
|
| + "9+h"
|
| + ]);
|
|
|
| buildTests('testCommentSnippets065', '''
|
| class Spline {
|
| @@ -604,13 +599,11 @@ p(x)=>0;var E;f(q)=>!1p(!2E);''', <String>["1+p", "2+E"]);
|
|
|
| buildTests('testCommentSnippets076', '''
|
| class Map<K,V>{}class List<E>{}class int{}main() {var m=new Map<Lis!1t<Map<int,in!2t>>,List<!3int>>();}''',
|
| - <String>["1+List", "2+int", "3+int"],
|
| - failingTests: '123');
|
| + <String>["1+List", "2+int", "3+int"], failingTests: '123');
|
|
|
| buildTests('testCommentSnippets076a', '''
|
| class Map<K,V>{}class List<E>{}class int{}main() {var m=new Map<Lis!1t<Map<int,in!2t>>,List<!3>>();}''',
|
| - <String>["1+List", "2+int", "3+int"],
|
| - failingTests: '123');
|
| + <String>["1+List", "2+int", "3+int"], failingTests: '123');
|
|
|
| buildTests('testCommentSnippets077', '''
|
| class FileMode {
|
| @@ -626,14 +619,13 @@ class File {
|
| factory File(String path) => null;
|
| factory File.fromPath(Path path) => null;
|
| }
|
| -f() => new Fil!1''',
|
| - <String>[
|
| - "1+File",
|
| - "1+File.fromPath",
|
| - "1+FileMode",
|
| - "1+FileMode._internal1",
|
| - "1+FileMode._internal"],
|
| - failingTests: '1');
|
| +f() => new Fil!1''', <String>[
|
| + "1+File",
|
| + "1+File.fromPath",
|
| + "1+FileMode",
|
| + "1+FileMode._internal1",
|
| + "1+FileMode._internal"
|
| + ], failingTests: '1');
|
|
|
| buildTests('testCommentSnippets078', '''
|
| class Map{static from()=>null;clear(){}}void main() { Map.!1 }''',
|
| @@ -667,24 +659,26 @@ main() { .!1 }''', <String>["1-toString"], failingTests: '1');
|
| main() { null.!1 }''', <String>["1+toString"], failingTests: '1');
|
|
|
| buildTests('testCommentSnippets084', '''
|
| -class List{}class Map{}typedef X = !1Lis!2t with !3Ma!4p;''',
|
| - <String>["1+Map", "2+List", "2-Map", "3+List", "4+Map", "4-List"],
|
| - failingTests: '1234');
|
| +class List{}class Map{}typedef X = !1Lis!2t with !3Ma!4p;''', <String>[
|
| + "1+Map",
|
| + "2+List",
|
| + "2-Map",
|
| + "3+List",
|
| + "4+Map",
|
| + "4-List"
|
| + ], failingTests: '1234');
|
|
|
| buildTests('testCommentSnippets085', '''
|
| class List{}class Map{}class Z extends List with !1Ma!2p {}''',
|
| - <String>["1+List", "1+Map", "2+Map", "2-List"],
|
| - failingTests: '12');
|
| + <String>["1+List", "1+Map", "2+Map", "2-List"], failingTests: '12');
|
|
|
| buildTests('testCommentSnippets086', '''
|
| -class Q{f(){xy() {!2};x!1y();}}''',
|
| - <String>["1+xy", "2+f", "2-xy"],
|
| +class Q{f(){xy() {!2};x!1y();}}''', <String>["1+xy", "2+f", "2-xy"],
|
| failingTests: '2');
|
|
|
| buildTests('testCommentSnippets087', '''
|
| class Map{}class Q extends Object with !1Map {}''',
|
| - <String>["1+Map", "1-HashMap"],
|
| - failingTests: '1');
|
| + <String>["1+Map", "1-HashMap"], failingTests: '1');
|
|
|
| buildTests('testCommentSnippets088', '''
|
| class A {
|
| @@ -718,43 +712,41 @@ class Q {
|
| fqi() {
|
| !5
|
| }
|
| -}''',
|
| - <String>[
|
| - "1+fqe",
|
| - "1+fqi",
|
| - "1+Q",
|
| - "1-xya",
|
| - "1-xyb",
|
| - "1-xza",
|
| - "2+fqe",
|
| - "2+fqi",
|
| - "2+Q",
|
| - "2-xya",
|
| - "2-xyb",
|
| - "2-xza",
|
| - "3+fqe",
|
| - "3+fqi",
|
| - "3+Q",
|
| - "3-xya",
|
| - "3+xyb",
|
| - "3-xza",
|
| - "4+fqe",
|
| - "4+fqi",
|
| - "4+Q",
|
| - "4+xya",
|
| - "4-xyb",
|
| - "4+xza",
|
| - "5+fqe",
|
| - "5+fqi",
|
| - "5+Q",
|
| - "5-xya",
|
| - "5-xyb",
|
| - "5-xza"],
|
| - failingTests: '123');
|
| +}''', <String>[
|
| + "1+fqe",
|
| + "1+fqi",
|
| + "1+Q",
|
| + "1-xya",
|
| + "1-xyb",
|
| + "1-xza",
|
| + "2+fqe",
|
| + "2+fqi",
|
| + "2+Q",
|
| + "2-xya",
|
| + "2-xyb",
|
| + "2-xza",
|
| + "3+fqe",
|
| + "3+fqi",
|
| + "3+Q",
|
| + "3-xya",
|
| + "3+xyb",
|
| + "3-xza",
|
| + "4+fqe",
|
| + "4+fqi",
|
| + "4+Q",
|
| + "4+xya",
|
| + "4-xyb",
|
| + "4+xza",
|
| + "5+fqe",
|
| + "5+fqi",
|
| + "5+Q",
|
| + "5-xya",
|
| + "5-xyb",
|
| + "5-xza"
|
| + ], failingTests: '123');
|
|
|
| buildTests('testCommentSnippets090', '''
|
| -class X { f() { var a = 'x'; a.!1 }}''',
|
| - <String>["1+length"]);
|
| +class X { f() { var a = 'x'; a.!1 }}''', <String>["1+length"]);
|
| }
|
|
|
| void buildCompletionTests() {
|
| @@ -768,8 +760,7 @@ class AAA {",
|
| ",
|
| @AAA(!1)
|
| main() {
|
| -}''',
|
| - <String>["1+AAA" /*":" + ProposalKind.ARGUMENT_LIST*/, "1+aaa", "1+bbb"],
|
| +}''', <String>["1+AAA" /*":" + ProposalKind.ARGUMENT_LIST*/, "1+aaa", "1+bbb"],
|
| failingTests: '1');
|
|
|
| buildTests('testCompletion_annotation_topLevelVar', '''
|
| @@ -788,11 +779,10 @@ class AAA {
|
| }
|
| @AAA!1
|
| main() {
|
| -}''',
|
| - <String>[
|
| - "1+AAA" /*":" + ProposalKind.CONSTRUCTOR*/,
|
| - "1+AAA.nnn" /*":" + ProposalKind.CONSTRUCTOR*/],
|
| - failingTests: '1');
|
| +}''', <String>[
|
| + "1+AAA" /*":" + ProposalKind.CONSTRUCTOR*/,
|
| + "1+AAA.nnn" /*":" + ProposalKind.CONSTRUCTOR*/
|
| + ], failingTests: '1');
|
|
|
| buildTests('testCompletion_annotation_type_inClass_withoutMember', '''
|
| class AAA {
|
| @@ -854,8 +844,7 @@ main(A a) {
|
|
|
| buildTests('testCompletion_combinator_afterComma', '''
|
| "import 'dart:math' show cos, !1;''',
|
| - <String>["1+PI", "1+sin", "1+Random", "1-String"],
|
| - failingTests: '1');
|
| + <String>["1+PI", "1+sin", "1+Random", "1-String"], failingTests: '1');
|
|
|
| buildTests('testCompletion_combinator_ended', '''
|
| import 'dart:math' show !1;"''',
|
| @@ -878,8 +867,7 @@ import 'dart:math' show s!1"''',
|
| <String>["1+sin", "1+sqrt", "1-cos", "1-String"]);
|
|
|
| buildTests('testCompletion_constructor_field', '''
|
| -class X { X(this.field); int f!1ield;}''',
|
| - <String>["1+field"],
|
| +class X { X(this.field); int f!1ield;}''', <String>["1+field"],
|
| failingTests: '1');
|
|
|
| buildTests('testCompletion_constructorArguments_showOnlyCurrent', '''
|
| @@ -915,8 +903,7 @@ class A {
|
| */
|
| A.named(aaa, bbb) {}
|
| methodA() {}
|
| -}''',
|
| - <String>["1+aaa", "1-bbb", "2+int", "2-double", "3+methodA"],
|
| +}''', <String>["1+aaa", "1-bbb", "2+int", "2-double", "3+methodA"],
|
| failingTests: '1');
|
|
|
| buildTests('testCompletion_dartDoc_reference_forFunction', '''
|
| @@ -926,16 +913,15 @@ class A {
|
| * [function!3]
|
| */
|
| functionA(aaa, bbb) {}
|
| -functionB() {}''',
|
| - <String>[
|
| - "1+aaa",
|
| - "1-bbb",
|
| - "2+int",
|
| - "2-double",
|
| - "3+functionA",
|
| - "3+functionB",
|
| - "3-int"],
|
| - failingTests: '1');
|
| +functionB() {}''', <String>[
|
| + "1+aaa",
|
| + "1-bbb",
|
| + "2+int",
|
| + "2-double",
|
| + "3+functionA",
|
| + "3+functionB",
|
| + "3-int"
|
| + ], failingTests: '1');
|
|
|
| buildTests('testCompletion_dartDoc_reference_forFunctionTypeAlias', '''
|
| /**
|
| @@ -944,16 +930,15 @@ functionB() {}''',
|
| * [Function!3]
|
| */
|
| typedef FunctionA(aaa, bbb) {}
|
| -typedef FunctionB() {}''',
|
| - <String>[
|
| - "1+aaa",
|
| - "1-bbb",
|
| - "2+int",
|
| - "2-double",
|
| - "3+FunctionA",
|
| - "3+FunctionB",
|
| - "3-int"],
|
| - failingTests: '1');
|
| +typedef FunctionB() {}''', <String>[
|
| + "1+aaa",
|
| + "1-bbb",
|
| + "2+int",
|
| + "2-double",
|
| + "3+FunctionA",
|
| + "3+FunctionB",
|
| + "3-int"
|
| + ], failingTests: '1');
|
|
|
| buildTests('testCompletion_dartDoc_reference_forMethod', '''
|
| class A {
|
| @@ -964,15 +949,15 @@ class A {
|
| */
|
| methodA(aaa, bbb) {}
|
| methodB() {}
|
| -}''',
|
| - <String>[
|
| - "1+aaa",
|
| - "1-bbb",
|
| - "2+int",
|
| - "2-double",
|
| - "3+methodA",
|
| - "3+methodB",
|
| - "3-int"]);
|
| +}''', <String>[
|
| + "1+aaa",
|
| + "1-bbb",
|
| + "2+int",
|
| + "2-double",
|
| + "3+methodA",
|
| + "3+methodB",
|
| + "3-int"
|
| + ]);
|
|
|
| buildTests('testCompletion_dartDoc_reference_incomplete', '''
|
| /**
|
| @@ -988,8 +973,14 @@ class B {}
|
| /**
|
| * [!3] some text
|
| */
|
| -class C {}''',
|
| - <String>["1+double", "1-int", "2+int", "2+String", "3+int", "3+String"]);
|
| +class C {}''', <String>[
|
| + "1+double",
|
| + "1-int",
|
| + "2+int",
|
| + "2+String",
|
| + "3+int",
|
| + "3+String"
|
| + ]);
|
|
|
| buildTests('testCompletion_double_inFractionPart', '''
|
| main() {
|
| @@ -1009,27 +1000,26 @@ main(p) {
|
| str!1;
|
| STR!2;
|
| Str!3;
|
| -}''',
|
| - <String>[
|
| - "1+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/,
|
| - "1+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/,
|
| - "2+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/,
|
| - "2+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/,
|
| - "3+String" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/,
|
| - "3+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/,
|
| - "3+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/]);
|
| +}''', <String>[
|
| + "1+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/,
|
| + "1+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/,
|
| + "2+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/,
|
| + "2+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/,
|
| + "3+String" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/,
|
| + "3+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/,
|
| + "3+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/
|
| + ]);
|
|
|
| buildTests('testCompletion_export_dart', '''
|
| import 'dart:math
|
| import 'dart:_chrome
|
| import 'dart:_collection.dev
|
| -export 'dart:!1''',
|
| - <String>[
|
| - "1+dart:core",
|
| - "1+dart:math",
|
| - "1-dart:_chrome",
|
| - "1-dart:_collection.dev"],
|
| - failingTests: '1');
|
| +export 'dart:!1''', <String>[
|
| + "1+dart:core",
|
| + "1+dart:math",
|
| + "1-dart:_chrome",
|
| + "1-dart:_collection.dev"
|
| + ], failingTests: '1');
|
|
|
| buildTests('testCompletion_export_noStringLiteral_noSemicolon', '''
|
| import !1
|
| @@ -1038,8 +1028,7 @@ class A {}''', <String>["1+'dart:!';", "1+'package:!';"], failingTests: '1');
|
|
|
| buildTests('testCompletion_forStmt_vars', '''
|
| class int{}class Foo { mth() { for (in!1t i = 0; i!2 < 5; i!3++); }}''',
|
| - <String>["1+int", "2+i", "3+i"],
|
| - failingTests: '1');
|
| + <String>["1+int", "2+i", "3+i"], failingTests: '1');
|
|
|
| buildTests('testCompletion_function', '''
|
| class Foo { int boo = 7; mth() { PNGS.sort((String a, Str!1) => a.compareTo(b)); }}''',
|
| @@ -1117,13 +1106,12 @@ import '!1';''', <String>["1+dart:!", "1+package:!"], failingTests: '1');
|
| import 'dart:math
|
| import 'dart:_chrome
|
| import 'dart:_collection.dev
|
| -import 'dart:!1''',
|
| - <String>[
|
| - "1+dart:core",
|
| - "1+dart:math",
|
| - "1-dart:_chrome",
|
| - "1-dart:_collection.dev"],
|
| - failingTests: '1');
|
| +import 'dart:!1''', <String>[
|
| + "1+dart:core",
|
| + "1+dart:math",
|
| + "1-dart:_chrome",
|
| + "1-dart:_collection.dev"
|
| + ], failingTests: '1');
|
|
|
| buildTests('testCompletion_import_hasStringLiteral_noSemicolon', '''
|
| import '!1'
|
| @@ -1160,8 +1148,7 @@ main(String str) {
|
| 1 < str.!1.length;
|
| 1 + str.!2.length;
|
| 1 + 2 * str.!3.length;
|
| -}''',
|
| - <String>["1+codeUnits", "2+codeUnits", "3+codeUnits"],
|
| +}''', <String>["1+codeUnits", "2+codeUnits", "3+codeUnits"],
|
| failingTests: '123');
|
|
|
| // no checks, but no exceptions
|
| @@ -1174,9 +1161,8 @@ main() {
|
| }''', <String>["1+int", "2+int"]);
|
|
|
| buildTests('testCompletion_import_lib', '''
|
| -import '!1''', <String>["1+my_lib.dart"], extraFiles: <String, String>{
|
| - "/my_lib.dart": ""
|
| - }, failingTests: '1');
|
| +import '!1''', <String>["1+my_lib.dart"],
|
| + extraFiles: <String, String>{"/my_lib.dart": ""}, failingTests: '1');
|
|
|
| buildTests('testCompletion_is', '''
|
| class MyClass {}
|
| @@ -1186,9 +1172,14 @@ main(p) {
|
| var v1 = p is MyCla!2;
|
| var v2 = p is !3;
|
| var v2 = p is!4;
|
| -}''',
|
| - <String>["1+MyClass", "2+MyClass", "3+MyClass", "3-v1", "4+is", "4-isVariable"],
|
| - failingTests: '4');
|
| +}''', <String>[
|
| + "1+MyClass",
|
| + "2+MyClass",
|
| + "3+MyClass",
|
| + "3-v1",
|
| + "4+is",
|
| + "4-isVariable"
|
| + ], failingTests: '4');
|
|
|
| buildTests('testCompletion_is_asIdentifierStart', '''
|
| main(p) {
|
| @@ -1246,11 +1237,10 @@ class Functions {
|
| bar(p) {}
|
| main(p) {
|
| foo( Functions.!1; );
|
| -}''',
|
| - <String>[
|
| - "1+myFuncInt" /*":" + ProposalKind.METHOD_NAME*/,
|
| - "1-myFuncDouble" /*":" + ProposalKind.METHOD_NAME*/],
|
| - failingTests: '1');
|
| +}''', <String>[
|
| + "1+myFuncInt" /*":" + ProposalKind.METHOD_NAME*/,
|
| + "1-myFuncDouble" /*":" + ProposalKind.METHOD_NAME*/
|
| + ], failingTests: '1');
|
|
|
| buildTests('testCompletion_methodRef_asArg_notFunctionType', '''
|
| foo( f(int p) ) {}
|
| @@ -1260,11 +1250,10 @@ class Functions {
|
| bar(p) {}
|
| main(p) {
|
| foo( (int p) => Functions.!1; );
|
| -}''',
|
| - <String>[
|
| - "1+myFunc" /*":" + ProposalKind.METHOD*/,
|
| - "1-myFunc" /*":" + ProposalKind.METHOD_NAME*/],
|
| - failingTests: '1');
|
| +}''', <String>[
|
| + "1+myFunc" /*":" + ProposalKind.METHOD*/,
|
| + "1-myFunc" /*":" + ProposalKind.METHOD_NAME*/
|
| + ], failingTests: '1');
|
|
|
| buildTests('testCompletion_methodRef_asArg_ofFunctionType', '''
|
| foo( f(int p) ) {}
|
| @@ -1273,29 +1262,26 @@ class Functions {
|
| }
|
| main(p) {
|
| foo(Functions.!1);
|
| -}''',
|
| - <String>[
|
| - "1+myFunc" /*":" + ProposalKind.METHOD*/,
|
| - "1+myFunc" /*":" + ProposalKind.METHOD_NAME*/]);
|
| +}''', <String>[
|
| + "1+myFunc" /*":" + ProposalKind.METHOD*/,
|
| + "1+myFunc" /*":" + ProposalKind.METHOD_NAME*/
|
| + ]);
|
|
|
| buildTests('testCompletion_namedArgument_alreadyUsed', '''
|
| func({foo}) {} main() { func(foo: 0, fo!1); }''', <String>["1-foo"]);
|
|
|
| buildTests('testCompletion_namedArgument_constructor', '''
|
| class A {A({foo, bar}) {}} main() { new A(fo!1); }''',
|
| - <String>["1+foo", "1-bar"],
|
| - failingTests: '1');
|
| + <String>["1+foo", "1-bar"], failingTests: '1');
|
|
|
| buildTests('testCompletion_namedArgument_empty', '''
|
| -func({foo, bar}) {} main() { func(!1); }''',
|
| - <String>[
|
| - "1+foo" /*":" + ProposalKind.NAMED_ARGUMENT*/,
|
| - "1-foo" /*":" + ProposalKind.OPTIONAL_ARGUMENT*/],
|
| - failingTests: '1');
|
| +func({foo, bar}) {} main() { func(!1); }''', <String>[
|
| + "1+foo" /*":" + ProposalKind.NAMED_ARGUMENT*/,
|
| + "1-foo" /*":" + ProposalKind.OPTIONAL_ARGUMENT*/
|
| + ], failingTests: '1');
|
|
|
| buildTests('testCompletion_namedArgument_function', '''
|
| -func({foo, bar}) {} main() { func(fo!1); }''',
|
| - <String>["1+foo", "1-bar"],
|
| +func({foo, bar}) {} main() { func(fo!1); }''', <String>["1+foo", "1-bar"],
|
| failingTests: '1');
|
|
|
| buildTests('testCompletion_namedArgument_notNamed', '''
|
| @@ -1306,18 +1292,15 @@ main() { func(fo!1); }''', <String>["1-foo"]);
|
|
|
| buildTests('testCompletion_newMemberType1', '''
|
| class Collection{}class List extends Collection{}class Foo { !1 }''',
|
| - <String>["1+Collection", "1+List"],
|
| - failingTests: '1');
|
| + <String>["1+Collection", "1+List"], failingTests: '1');
|
|
|
| buildTests('testCompletion_newMemberType2', '''
|
| class Collection{}class List extends Collection{}class Foo {!1}''',
|
| - <String>["1+Collection", "1+List"],
|
| - failingTests: '1');
|
| + <String>["1+Collection", "1+List"], failingTests: '1');
|
|
|
| buildTests('testCompletion_newMemberType3', '''
|
| class Collection{}class List extends Collection{}class Foo {L!1}''',
|
| - <String>["1-Collection", "1+List"],
|
| - failingTests: '1');
|
| + <String>["1-Collection", "1+List"], failingTests: '1');
|
|
|
| buildTests('testCompletion_newMemberType4', '''
|
| class Collection{}class List extends Collection{}class Foo {C!1}''',
|
| @@ -1330,26 +1313,26 @@ class A {
|
| main() {
|
| new A(!1);
|
| new A(0, !2);
|
| -}''',
|
| - <String>[
|
| - "1+foo" /*":" + ProposalKind.OPTIONAL_ARGUMENT*/,
|
| - "1-bar",
|
| - "2-foo",
|
| - "2+bar" /*":"
|
| - + ProposalKind.OPTIONAL_ARGUMENT*/], failingTests: '12');
|
| +}''', <String>[
|
| + "1+foo" /*":" + ProposalKind.OPTIONAL_ARGUMENT*/,
|
| + "1-bar",
|
| + "2-foo",
|
| + "2+bar" /*":"
|
| + + ProposalKind.OPTIONAL_ARGUMENT*/
|
| + ], failingTests: '12');
|
|
|
| buildTests('testCompletion_positionalArgument_function', '''
|
| func([foo, bar]) {}
|
| main() {
|
| func(!1);
|
| func(0, !2);
|
| -}''',
|
| - <String>[
|
| - "1+foo" /*":" + ProposalKind.OPTIONAL_ARGUMENT*/,
|
| - "1-bar",
|
| - "2-foo",
|
| - "2+bar" /*":"
|
| - + ProposalKind.OPTIONAL_ARGUMENT*/], failingTests: '12');
|
| +}''', <String>[
|
| + "1+foo" /*":" + ProposalKind.OPTIONAL_ARGUMENT*/,
|
| + "1-bar",
|
| + "2-foo",
|
| + "2+bar" /*":"
|
| + + ProposalKind.OPTIONAL_ARGUMENT*/
|
| + ], failingTests: '12');
|
|
|
| buildTests('testCompletion_preferStaticType', '''
|
| class A {
|
| @@ -1361,12 +1344,11 @@ class B extends A {
|
| main() {
|
| A v = new B();
|
| v.!1
|
| -}''',
|
| - <String>[
|
| - "1+foo",
|
| - "1-bar,potential=false,declaringType=B",
|
| - "1+bar,potential=true,declaringType=B"],
|
| - failingTests: '1');
|
| +}''', <String>[
|
| + "1+foo",
|
| + "1-bar,potential=false,declaringType=B",
|
| + "1+bar,potential=true,declaringType=B"
|
| + ], failingTests: '1');
|
|
|
| buildTests('testCompletion_privateElement_sameLibrary_constructor', '''
|
| class A {
|
| @@ -1406,8 +1388,7 @@ class B extends A {
|
| }
|
| main() {
|
| B.!1;
|
| -}''',
|
| - <String>["1+FIELD_B", "1-FIELD_A", "1+methodB", "1-methodA"],
|
| +}''', <String>["1+FIELD_B", "1-FIELD_A", "1+methodB", "1-methodA"],
|
| failingTests: '1');
|
|
|
| buildTests('testCompletion_propertyAccess_whenInstanceTarget', '''
|
| @@ -1424,8 +1405,7 @@ class C extends A {
|
| main(B b, C c) {
|
| b.a.!1;
|
| c.!2;
|
| -}''',
|
| - <String>["1-FIELD", "1+fieldA", "2+fieldC", "2+fieldA"]);
|
| +}''', <String>["1-FIELD", "1+fieldA", "2+fieldC", "2+fieldA"]);
|
|
|
| buildTests('testCompletion_return_withIdentifierPrefix', '''
|
| f() { var vvv = 42; return v!1 }''', <String>["1+vvv"]);
|
| @@ -1521,8 +1501,7 @@ class B extends A {
|
|
|
| buildTests('testCompletion_topLevelField_init2', '''
|
| class DateTime{static var JUN;}final num M = Dat!1eTime.JUN;''',
|
| - <String>["1+DateTime", "1-void"],
|
| - failingTests: '1');
|
| + <String>["1+DateTime", "1-void"], failingTests: '1');
|
|
|
| buildTests('testCompletion_while', '''
|
| class Foo { int boo = 7; mth() { while (b!1) {} }}''', <String>["1+boo"]);
|
| @@ -1547,10 +1526,8 @@ libFunction() {};''';
|
| import 'lib.dart' as p;
|
| main() {
|
| p.!1
|
| -}''',
|
| - <String>["1+cos", "1-sin", "1+libFunction"],
|
| - extraFiles: sources,
|
| - failingTests: '1');
|
| +}''', <String>["1+cos", "1-sin", "1+libFunction"],
|
| + extraFiles: sources, failingTests: '1');
|
|
|
| buildTests('test_importPrefix_hideCombinator', '''
|
| import 'dart:math' as math hide PI;
|
| @@ -1602,10 +1579,8 @@ class A {
|
| import 'lib.dart';
|
| main(A a) {
|
| a.!1
|
| - }''',
|
| - <String>["1-_f", "1+f"],
|
| - extraFiles: sources,
|
| - failingTests: '1');
|
| + }''', <String>["1-_f", "1+f"],
|
| + extraFiles: sources, failingTests: '1');
|
|
|
| sources.clear();
|
| sources["/firth.dart"] = '''
|
| @@ -1616,25 +1591,21 @@ class SerializationException {
|
| buildTests('testLibrary001', '''
|
| import 'firth.dart';
|
| main() {
|
| -throw new Seria!1lizationException();}''',
|
| - <String>["1+SerializationException"],
|
| - extraFiles: sources,
|
| - failingTests: '1');
|
| +throw new Seria!1lizationException();}''', <String>["1+SerializationException"],
|
| + extraFiles: sources, failingTests: '1');
|
|
|
| // Type propagation.
|
| // TODO Include corelib analysis (this works in the editor)
|
| - buildTests(
|
| - 'testLibrary002',
|
| + buildTests('testLibrary002',
|
| '''t2() {var q=[0],z=q.!1length;q.!2clear();}''',
|
| - <String>["1+length", "1+isEmpty", "2+clear"],
|
| - failingTests: '1');
|
| + <String>["1+length", "1+isEmpty", "2+clear"], failingTests: '1');
|
|
|
| // TODO Include corelib analysis
|
| - buildTests(
|
| - 'testLibrary003',
|
| - '''class X{var q; f() {q.!1a!2}}''',
|
| - <String>["1+end", "2+abs", "2-end"],
|
| - failingTests: '12');
|
| + buildTests('testLibrary003', '''class X{var q; f() {q.!1a!2}}''', <String>[
|
| + "1+end",
|
| + "2+abs",
|
| + "2-end"
|
| + ], failingTests: '12');
|
|
|
| // TODO Include corelib analysis
|
| // Resolving dart:html takes between 2.5s and 30s; json, about 0.12s
|
| @@ -1644,22 +1615,21 @@ throw new Seria!1lizationException();}''',
|
| class JsonDecoderX{}
|
| f1() {var x=new json.!1}
|
| f2() {var x=new json.JsonDe!2}
|
| - f3() {var x=new json.JsonDecoder!3}''',
|
| - <String>[
|
| - "1+JsonDecoder",
|
| - "1-JsonDecoderX",
|
| - "2+JsonDecoder",
|
| - "2-JsonDecoderX",
|
| - "3+JsonDecoder",
|
| - "3-JsonDecoderX"]);
|
| + f3() {var x=new json.JsonDecoder!3}''', <String>[
|
| + "1+JsonDecoder",
|
| + "1-JsonDecoderX",
|
| + "2+JsonDecoder",
|
| + "2-JsonDecoderX",
|
| + "3+JsonDecoder",
|
| + "3-JsonDecoderX"
|
| + ]);
|
|
|
| // TODO Enable after type propagation is implemented. Not yet.
|
| // TODO Include corelib analysis
|
| - buildTests(
|
| - 'testLibrary005',
|
| - '''var PHI;main(){PHI=5.3;PHI.abs().!1 Object x;}''',
|
| - <String>["1+abs"],
|
| - failingTests: '1');
|
| + buildTests('testLibrary005',
|
| + '''var PHI;main(){PHI=5.3;PHI.abs().!1 Object x;}''', <String>[
|
| + "1+abs"
|
| + ], failingTests: '1');
|
|
|
| // Exercise import and export handling.
|
| // Libraries are defined in partial order of increasing dependency.
|
| @@ -1691,10 +1661,8 @@ main() {!1
|
| e1a();
|
| e1b();
|
| e2a();
|
| -}''',
|
| - <String>["1+i1", "1+i2", "1+e1a", "1+e2a", "1+e1b"],
|
| - extraFiles: sources,
|
| - failingTests: '1');
|
| +}''', <String>["1+i1", "1+i2", "1+e1a", "1+e2a", "1+e1b"],
|
| + extraFiles: sources, failingTests: '1');
|
|
|
| // Exercise import and export handling.
|
| // Libraries are defined in partial order of increasing dependency.
|
| @@ -1707,10 +1675,8 @@ import 'l1.dart';
|
| main() {
|
| var x = l!1
|
| var y = _!2
|
| -}''',
|
| - <String>["1+l1t", "1-_l1t", "2-_l1t"],
|
| - extraFiles: sources,
|
| - failingTests: '1');
|
| +}''', <String>["1+l1t", "1-_l1t", "2-_l1t"],
|
| + extraFiles: sources, failingTests: '1');
|
|
|
| // Check private library exclusion
|
| sources.clear();
|
| @@ -1735,10 +1701,8 @@ class Test {
|
| NonPrivate x = new NonPrivate();
|
| x.!1 //publicMethod but not privateMethod should appear
|
| }
|
| -}''',
|
| - <String>["1-privateMethod", "1+publicMethod"],
|
| - extraFiles: sources,
|
| - failingTests: '1');
|
| +}''', <String>["1-privateMethod", "1+publicMethod"],
|
| + extraFiles: sources, failingTests: '1');
|
|
|
| // Exercise library prefixes.
|
| sources.clear();
|
| @@ -1760,37 +1724,35 @@ void c() {
|
| }
|
| void d() {
|
| new Q.!4
|
| -}''',
|
| - <String>[
|
| - "1+X",
|
| - "1+m",
|
| - "1+Y",
|
| - "2+X",
|
| - "2+m",
|
| - "2+Y",
|
| - "3+X",
|
| - "3+m",
|
| - "3+Y",
|
| - "4+Y",
|
| - "4-m",
|
| - "4-X"],
|
| - extraFiles: sources,
|
| - failingTests: '1234');
|
| +}''', <String>[
|
| + "1+X",
|
| + "1+m",
|
| + "1+Y",
|
| + "2+X",
|
| + "2+m",
|
| + "2+Y",
|
| + "3+X",
|
| + "3+m",
|
| + "3+Y",
|
| + "4+Y",
|
| + "4-m",
|
| + "4-X"
|
| + ], extraFiles: sources, failingTests: '1234');
|
| }
|
|
|
| void buildNumberedTests() {
|
| buildTests('test001', '''
|
| void r1(var v) {
|
| v.!1toString!2().!3hash!4Code
|
| -}''',
|
| - <String>[
|
| - "1+toString",
|
| - "1-==",
|
| - "2+toString",
|
| - "3+hashCode",
|
| - "3+toString",
|
| - "4+hashCode",
|
| - "4-toString"]);
|
| +}''', <String>[
|
| + "1+toString",
|
| + "1-==",
|
| + "2+toString",
|
| + "3+hashCode",
|
| + "3+toString",
|
| + "4+hashCode",
|
| + "4-toString"
|
| + ]);
|
|
|
| buildTests('test002', '''
|
| void r2(var vim) {
|
| @@ -1818,29 +1780,28 @@ void rr(var vim) {
|
| var !1vq = v!2.toString();
|
| var vf;
|
| v!3.toString();
|
| -}''',
|
| - <String>[
|
| - "1-A",
|
| - "1-vim",
|
| - "1+vq",
|
| - "1-vf",
|
| - "1-this",
|
| - "1-void",
|
| - "1-null",
|
| - "1-false",
|
| - "2-A",
|
| - "2+vim",
|
| - "2-vf",
|
| - "2-vq",
|
| - "2-this",
|
| - "2-void",
|
| - "2-null",
|
| - "2-false",
|
| - "3+vf",
|
| - "3+vq",
|
| - "3+vim",
|
| - "3-A"],
|
| - failingTests: '1');
|
| +}''', <String>[
|
| + "1-A",
|
| + "1-vim",
|
| + "1+vq",
|
| + "1-vf",
|
| + "1-this",
|
| + "1-void",
|
| + "1-null",
|
| + "1-false",
|
| + "2-A",
|
| + "2+vim",
|
| + "2-vf",
|
| + "2-vq",
|
| + "2-this",
|
| + "2-void",
|
| + "2-null",
|
| + "2-false",
|
| + "3+vf",
|
| + "3+vq",
|
| + "3+vim",
|
| + "3-A"
|
| + ], failingTests: '1');
|
|
|
| buildTests('test006', '''
|
| void r2(var vim, {va: 2, b: 3}) {
|
| @@ -1859,80 +1820,74 @@ class Bclass !2extends!3 !4Aclass {}
|
| !5typedef Ctype = !6Bclass with !7Aclass;
|
| class Dclass extends !8Ctype {}
|
| !9abstract class Eclass implements Dclass,!C Ctype, Bclass {}
|
| -class Fclass extends Bclass !Awith !B Eclass {}''',
|
| - <String>[
|
| - "1+class",
|
| - "1-implements",
|
| - "1-extends",
|
| - "1-with",
|
| - "2+extends",
|
| - "3+extends",
|
| - "4+Aclass",
|
| - "4-Bclass",
|
| - "5+typedef",
|
| - "6+Bclass",
|
| - "6-Ctype",
|
| - "7+Aclass",
|
| - "7-Bclass",
|
| - "8+Ctype",
|
| - "9+abstract",
|
| - "A+with",
|
| - "B+Eclass",
|
| - "B-Dclass",
|
| - "B-Ctype",
|
| - "C+Bclass",
|
| - "C-Eclass"],
|
| - failingTests: '12345679ABC');
|
| +class Fclass extends Bclass !Awith !B Eclass {}''', <String>[
|
| + "1+class",
|
| + "1-implements",
|
| + "1-extends",
|
| + "1-with",
|
| + "2+extends",
|
| + "3+extends",
|
| + "4+Aclass",
|
| + "4-Bclass",
|
| + "5+typedef",
|
| + "6+Bclass",
|
| + "6-Ctype",
|
| + "7+Aclass",
|
| + "7-Bclass",
|
| + "8+Ctype",
|
| + "9+abstract",
|
| + "A+with",
|
| + "B+Eclass",
|
| + "B-Dclass",
|
| + "B-Ctype",
|
| + "C+Bclass",
|
| + "C-Eclass"
|
| + ], failingTests: '12345679ABC');
|
|
|
| // keywords
|
| buildTests('test009', '''
|
| typedef !1dy!2namic TestFn1();
|
| typedef !3vo!4id TestFn2();
|
| -typ!7edef !5n!6''',
|
| - <String>[
|
| - "1+void",
|
| - "1+TestFn2",
|
| - "2+dynamic",
|
| - "2-void",
|
| - "3+dynamic",
|
| - "4+void",
|
| - "4-dynamic",
|
| - "5+TestFn2",
|
| - "6+num",
|
| - "7+typedef"],
|
| - failingTests: '12347');
|
| +typ!7edef !5n!6''', <String>[
|
| + "1+void",
|
| + "1+TestFn2",
|
| + "2+dynamic",
|
| + "2-void",
|
| + "3+dynamic",
|
| + "4+void",
|
| + "4-dynamic",
|
| + "5+TestFn2",
|
| + "6+num",
|
| + "7+typedef"
|
| + ], failingTests: '12347');
|
|
|
| buildTests('test010', '''
|
| class test !8<!1t !2 !3extends String,!4 List,!5 !6>!7 {}
|
| -class tezetst !9<!BString,!C !DList>!A {}''',
|
| - <String>[
|
| - "1-String",
|
| - "1-List",
|
| - "1-test",
|
| - "2-String",
|
| - "2-test",
|
| - "3+extends",
|
| - "4-tezetst",
|
| - "4-test",
|
| - "5-String",
|
| - "6-List",
|
| - "7-List",
|
| - "8-List",
|
| - "9-String",
|
| - "A-String",
|
| - "B-String",
|
| - "C-List",
|
| - "C-tezetst",
|
| - "D-List",
|
| - "D-test"],
|
| - failingTests: '23');
|
| +class tezetst !9<!BString,!C !DList>!A {}''', <String>[
|
| + "1-String",
|
| + "1-List",
|
| + "1-test",
|
| + "2-String",
|
| + "2-test",
|
| + "3+extends",
|
| + "4-tezetst",
|
| + "4-test",
|
| + "5-String",
|
| + "6-List",
|
| + "7-List",
|
| + "8-List",
|
| + "9-String",
|
| + "A-String",
|
| + "B-String",
|
| + "C-List",
|
| + "C-tezetst",
|
| + "D-List",
|
| + "D-test"
|
| + ], failingTests: '23');
|
|
|
| // name generation with conflicts
|
| - buildTests(
|
| - 'test011',
|
| - '''r2(var object, Object object1, Object !1);''',
|
| - <String>["1+object2"],
|
| - failingTests: '1');
|
| + buildTests('test011', '''r2(var object, Object object1, Object !1);''',
|
| + <String>["1+object2"], failingTests: '1');
|
|
|
| // reserved words
|
| buildTests('test012', '''
|
| @@ -1940,17 +1895,16 @@ class X {
|
| f() {
|
| g(!1var!2 z) {!3true.!4toString();};
|
| }
|
| -}''',
|
| - <String>[
|
| - "1+var",
|
| - "1+dynamic",
|
| - "1-f",
|
| - "2+var",
|
| - "2-dynamic",
|
| - "3+false",
|
| - "3+true",
|
| - "4+toString"],
|
| - failingTests: '123');
|
| +}''', <String>[
|
| + "1+var",
|
| + "1+dynamic",
|
| + "1-f",
|
| + "2+var",
|
| + "2-dynamic",
|
| + "3+false",
|
| + "3+true",
|
| + "4+toString"
|
| + ], failingTests: '123');
|
|
|
| // conditions & operators
|
| buildTests('test013', '''
|
| @@ -1968,20 +1922,19 @@ class Q {
|
| } on !5Object catch(a){}
|
| if (!7x !6) {} else {};
|
| }
|
| -}''',
|
| - <String>[
|
| - "1+x",
|
| - "2+x",
|
| - "3+zs",
|
| - "4+k",
|
| - "5+Q",
|
| - "5-a",
|
| - "6+==",
|
| - "7+x",
|
| - "8+==",
|
| - "9+==",
|
| - "0+k"],
|
| - failingTests: '5689');
|
| +}''', <String>[
|
| + "1+x",
|
| + "2+x",
|
| + "3+zs",
|
| + "4+k",
|
| + "5+Q",
|
| + "5-a",
|
| + "6+==",
|
| + "7+x",
|
| + "8+==",
|
| + "9+==",
|
| + "0+k"
|
| + ], failingTests: '5689');
|
|
|
| // keywords
|
| buildTests('test014', '''
|
| @@ -2002,66 +1955,57 @@ class Q {
|
| !Jif (x) {} !Kelse {};
|
| !Lreturn;
|
| }
|
| -}''',
|
| - <String>[
|
| - "1+while",
|
| - "2+do",
|
| - "3+while",
|
| - "4+for",
|
| - "5+in",
|
| - "6+for",
|
| - "7+switch",
|
| - "8+case",
|
| - "9+default",
|
| - "A+try",
|
| - "B+on",
|
| - "C+catch",
|
| - "D+var",
|
| - "E+void",
|
| - "F+assert",
|
| - "G+continue",
|
| - "H+break",
|
| - "J+if",
|
| - "K+else",
|
| - "L+return"],
|
| - failingTests: '123456789ABCDEFGHJKL');
|
| +}''', <String>[
|
| + "1+while",
|
| + "2+do",
|
| + "3+while",
|
| + "4+for",
|
| + "5+in",
|
| + "6+for",
|
| + "7+switch",
|
| + "8+case",
|
| + "9+default",
|
| + "A+try",
|
| + "B+on",
|
| + "C+catch",
|
| + "D+var",
|
| + "E+void",
|
| + "F+assert",
|
| + "G+continue",
|
| + "H+break",
|
| + "J+if",
|
| + "K+else",
|
| + "L+return"
|
| + ], failingTests: '123456789ABCDEFGHJKL');
|
|
|
| // operators in function
|
| - buildTests(
|
| - 'test015',
|
| - '''f(a,b,c) => a + b * c !1;''',
|
| - <String>["1+=="],
|
| + buildTests('test015', '''f(a,b,c) => a + b * c !1;''', <String>["1+=="],
|
| failingTests: '1');
|
|
|
| // operators in return
|
| - buildTests(
|
| - 'test016',
|
| - '''class X {dynamic f(a,b,c) {return a + b * c !1;}}''',
|
| - <String>["1+=="],
|
| - failingTests: '1');
|
| + buildTests('test016',
|
| + '''class X {dynamic f(a,b,c) {return a + b * c !1;}}''', <String>[
|
| + "1+=="
|
| + ], failingTests: '1');
|
|
|
| // keywords
|
| buildTests('test017', '''
|
| !1library foo;
|
| !2import 'x' !5as r;
|
| !3export '!8uri' !6hide Q !7show X;
|
| -!4part 'x';''',
|
| - <String>[
|
| - "1+library",
|
| - "2+import",
|
| - "3+export",
|
| - "4+part",
|
| - "5+as",
|
| - "6+hide",
|
| - "7+show",
|
| - "8-null"],
|
| - failingTests: '1234567');
|
| +!4part 'x';''', <String>[
|
| + "1+library",
|
| + "2+import",
|
| + "3+export",
|
| + "4+part",
|
| + "5+as",
|
| + "6+hide",
|
| + "7+show",
|
| + "8-null"
|
| + ], failingTests: '1234567');
|
|
|
| // keywords
|
| - buildTests(
|
| - 'test018',
|
| - '''!1part !2of foo;''',
|
| - <String>["1+part", "2+of"],
|
| + buildTests('test018', '''!1part !2of foo;''', <String>["1+part", "2+of"],
|
| failingTests: '12');
|
|
|
| buildTests('test019', '''
|
| @@ -2071,22 +2015,13 @@ main() {
|
| var foo = true!1
|
| }''', <String>["1+true", "1+truefalse", "1-falsetrue"], failingTests: '1');
|
|
|
| - buildTests(
|
| - 'test020',
|
| - '''var x = null.!1''',
|
| - <String>["1+toString"],
|
| + buildTests('test020', '''var x = null.!1''', <String>["1+toString"],
|
| failingTests: '1');
|
|
|
| - buildTests(
|
| - 'test021',
|
| - '''var x = .!1''',
|
| - <String>["1-toString"],
|
| + buildTests('test021', '''var x = .!1''', <String>["1-toString"],
|
| failingTests: '1');
|
|
|
| - buildTests(
|
| - 'test022',
|
| - '''var x = .!1;''',
|
| - <String>["1-toString"],
|
| + buildTests('test022', '''var x = .!1;''', <String>["1-toString"],
|
| failingTests: '1');
|
|
|
| buildTests('test023', '''
|
| @@ -2141,30 +2076,28 @@ class T {
|
| var g = R.!Em;
|
| var h = R.!Fg();
|
| }
|
| -}''',
|
| - <String>[
|
| - "1+m",
|
| - "2+_m",
|
| - "3+g",
|
| - "4+m",
|
| - "5+_m",
|
| - "6+g",
|
| - "7-g",
|
| - "8-m",
|
| - "9-_m",
|
| - "A+_m",
|
| - "B+m",
|
| - "C+g",
|
| - "D+_m",
|
| - "E+m",
|
| - "F+g"]);
|
| +}''', <String>[
|
| + "1+m",
|
| + "2+_m",
|
| + "3+g",
|
| + "4+m",
|
| + "5+_m",
|
| + "6+g",
|
| + "7-g",
|
| + "8-m",
|
| + "9-_m",
|
| + "A+_m",
|
| + "B+m",
|
| + "C+g",
|
| + "D+_m",
|
| + "E+m",
|
| + "F+g"
|
| + ]);
|
|
|
| buildTests('test026', '''var aBcD; var x=ab!1''', <String>["1+aBcD"]);
|
|
|
| buildTests(
|
| - 'test027',
|
| - '''m(){try{}catch(eeee,ssss){s!1}''',
|
| - <String>["1+ssss"]);
|
| + 'test027', '''m(){try{}catch(eeee,ssss){s!1}''', <String>["1+ssss"]);
|
|
|
| buildTests('test028', '''m(){var isX=3;if(is!1)''', <String>["1+isX"]);
|
|
|
| @@ -2172,8 +2105,7 @@ class T {
|
|
|
| buildTests('test030', '''n(){[1].forEach((x){!1});}''', <String>["1+x"]);
|
|
|
| - buildTests(
|
| - 'test031',
|
| + buildTests('test031',
|
| '''class Caster {} m() {try {} on Cas!1ter catch (CastBlock) {!2}}''',
|
| <String>["1+Caster", "1-CastBlock", "2+Caster", "2+CastBlock"],
|
| failingTests: '1');
|
| @@ -2192,22 +2124,20 @@ m() {
|
| case ONE!1: return;
|
| default: return;
|
| }
|
| -}''',
|
| - <String>[
|
| - "1+ONE",
|
| - "1-UKSI",
|
| - "2+EIN",
|
| - "2-ICHI",
|
| - "3+ICHI",
|
| - "3+UKSI",
|
| - "3+EIN",
|
| - "3+ONE"]);
|
| -
|
| - buildTests(
|
| - 'test033',
|
| +}''', <String>[
|
| + "1+ONE",
|
| + "1-UKSI",
|
| + "2+EIN",
|
| + "2-ICHI",
|
| + "3+ICHI",
|
| + "3+UKSI",
|
| + "3+EIN",
|
| + "3+ONE"
|
| + ]);
|
| +
|
| + buildTests('test033',
|
| '''class A{}class B extends A{b(){}}class C implements A {c(){}}class X{x(){A f;f.!1}}''',
|
| - <String>["1+b", "1-c"],
|
| - failingTests: '1');
|
| + <String>["1+b", "1-c"], failingTests: '1');
|
|
|
| // TODO(scheglov) decide what to do with Type for untyped field (not
|
| // supported by the new store)
|
| @@ -2238,9 +2168,7 @@ class A {
|
| }''', <String>["1+top", "2+top"], failingTests: '12');
|
|
|
| // test analysis of untyped fields and top-level vars
|
| - buildTests(
|
| - 'test035',
|
| - '''class Y {final x='hi';mth() {x.!1length;}}''',
|
| + buildTests('test035', '''class Y {final x='hi';mth() {x.!1length;}}''',
|
| <String>["1+length"]);
|
|
|
| // TODO(scheglov) decide what to do with Type for untyped field (not
|
| @@ -2284,43 +2212,32 @@ class A<Z extends X> {
|
| }''', <String>["1+y", "1-x", "2+x", "2-y"], failingTests: '2');
|
|
|
| // test analysis of untyped fields and top-level vars
|
| - buildTests(
|
| - 'test039',
|
| - '''class X{}var x = null as !1X;''',
|
| - <String>["1+X", "1-void"]);
|
| + buildTests('test039', '''class X{}var x = null as !1X;''', <String>[
|
| + "1+X",
|
| + "1-void"
|
| + ]);
|
|
|
| // test arg lists with named params
|
| - buildTests(
|
| - 'test040',
|
| - '''m(){f(a, b, {x1, x2, y}) {};f(1, 2, !1)!2;}''',
|
| - <String>["1+x1", "2-x2"],
|
| - failingTests: '1');
|
| + buildTests('test040', '''m(){f(a, b, {x1, x2, y}) {};f(1, 2, !1)!2;}''',
|
| + <String>["1+x1", "2-x2"], failingTests: '1');
|
|
|
| // test arg lists with named params
|
| - buildTests(
|
| - 'test041',
|
| - '''m(){f(a, b, {x1, x2, y}) {};f(1, 2, !1''',
|
| - <String>["1+x1", "1+x2", "1+y"],
|
| - failingTests: '1');
|
| + buildTests('test041', '''m(){f(a, b, {x1, x2, y}) {};f(1, 2, !1''',
|
| + <String>["1+x1", "1+x2", "1+y"], failingTests: '1');
|
|
|
| // test arg lists with named params
|
| - buildTests(
|
| - 'test042',
|
| - '''m(){f(a, b, {x1, x2, y}) {};f(1, 2, !1;!2''',
|
| - <String>["1+x1", "1+x2", "2-y"],
|
| - failingTests: '1');
|
| + buildTests('test042', '''m(){f(a, b, {x1, x2, y}) {};f(1, 2, !1;!2''',
|
| + <String>["1+x1", "1+x2", "2-y"], failingTests: '1');
|
| }
|
|
|
| void buildOtherTests() {
|
| - buildTests(
|
| - 'test_classMembers_inGetter',
|
| - '''class A { var fff; get z {ff!1}}''',
|
| - <String>["1+fff"]);
|
| + buildTests('test_classMembers_inGetter',
|
| + '''class A { var fff; get z {ff!1}}''', <String>["1+fff"]);
|
|
|
| - buildTests(
|
| - 'testSingle',
|
| - '''class A {int x; !2mth() {int y = this.x;}}class B{}''',
|
| - <String>["2+B"]);
|
| + buildTests('testSingle',
|
| + '''class A {int x; !2mth() {int y = this.x;}}class B{}''', <String>[
|
| + "2+B"
|
| + ]);
|
| }
|
|
|
| /**
|
| @@ -2352,9 +2269,8 @@ class A<Z extends X> {
|
| });
|
| if (completionTests.isEmpty) {
|
| test(baseName, () {
|
| - fail(
|
| - "Expected exclamation point ('!') within the source denoting the"
|
| - "position at which code completion should occur");
|
| + fail("Expected exclamation point ('!') within the source denoting the"
|
| + "position at which code completion should occur");
|
| });
|
| }
|
| Set<String> allSpecIds =
|
|
|