| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'package:analysis_server/src/protocol_server.dart'; | 5 import 'package:analysis_server/src/protocol_server.dart'; |
| 6 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.
dart'; | 6 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.
dart'; |
| 7 import 'package:analysis_server/src/services/completion/dart/inherited_reference
_contributor.dart'; | 7 import 'package:analysis_server/src/services/completion/dart/inherited_reference
_contributor.dart'; |
| 8 import 'package:test/test.dart'; | 8 import 'package:test/test.dart'; |
| 9 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 9 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 10 | 10 |
| 11 import 'completion_contributor_util.dart'; | 11 import 'completion_contributor_util.dart'; |
| 12 | 12 |
| 13 main() { | 13 main() { |
| 14 defineReflectiveSuite(() { | 14 defineReflectiveSuite(() { |
| 15 defineReflectiveTests(InheritedContributorTest); | 15 defineReflectiveTests(InheritedReferenceContributorTest); |
| 16 }); | 16 }); |
| 17 } | 17 } |
| 18 | 18 |
| 19 @reflectiveTest | 19 @reflectiveTest |
| 20 class InheritedContributorTest extends DartCompletionContributorTest { | 20 class InheritedReferenceContributorTest extends DartCompletionContributorTest { |
| 21 @override | 21 @override |
| 22 bool get isNullExpectedReturnTypeConsideredDynamic => false; | 22 bool get isNullExpectedReturnTypeConsideredDynamic => false; |
| 23 | 23 |
| 24 @override | 24 @override |
| 25 DartCompletionContributor createContributor() { | 25 DartCompletionContributor createContributor() { |
| 26 return new InheritedReferenceContributor(); | 26 return new InheritedReferenceContributor(); |
| 27 } | 27 } |
| 28 | 28 |
| 29 /// Sanity check. Permutations tested in local_ref_contributor. | 29 /// Sanity check. Permutations tested in local_ref_contributor. |
| 30 test_ArgDefaults_inherited_method_with_required_named() async { | 30 test_ArgDefaults_inherited_method_with_required_named() async { |
| 31 addMetaPackageSource(); | 31 addMetaPackageSource(); |
| 32 resolveSource( | 32 resolveSource( |
| 33 '/testB.dart', | 33 '/testB.dart', |
| 34 ''' | 34 ''' |
| 35 import 'package:meta/meta.dart'; | 35 import 'package:meta/meta.dart'; |
| 36 | 36 |
| 37 lib libB; | 37 lib libB; |
| 38 class A { | 38 class A { |
| 39 bool foo(int bar, {bool boo, @required int baz}) => false; | 39 bool foo(int bar, {bool boo, @required int baz}) => false; |
| 40 }'''); | 40 }'''); |
| 41 addTestSource(''' | 41 addTestSource(''' |
| 42 import "/testB.dart"; | 42 import "testB.dart"; |
| 43 class B extends A { | 43 class B extends A { |
| 44 b() => f^ | 44 b() => f^ |
| 45 } | 45 } |
| 46 '''); | 46 '''); |
| 47 await computeSuggestions(); | 47 await computeSuggestions(); |
| 48 | 48 |
| 49 assertSuggestMethod('foo', 'A', 'bool', | 49 assertSuggestMethod('foo', 'A', 'bool', |
| 50 defaultArgListString: 'bar, baz: null'); | 50 defaultArgListString: 'bar, baz: null'); |
| 51 } | 51 } |
| 52 | 52 |
| 53 test_AwaitExpression_inherited() async { | 53 test_AwaitExpression_inherited() async { |
| 54 // SimpleIdentifier AwaitExpression ExpressionStatement | 54 // SimpleIdentifier AwaitExpression ExpressionStatement |
| 55 resolveSource( | 55 resolveSource( |
| 56 '/testB.dart', | 56 '/testB.dart', |
| 57 ''' | 57 ''' |
| 58 lib libB; | 58 lib libB; |
| 59 class A { | 59 class A { |
| 60 Future y() async {return 0;} | 60 Future y() async {return 0;} |
| 61 }'''); | 61 }'''); |
| 62 addTestSource(''' | 62 addTestSource(''' |
| 63 import "/testB.dart"; | 63 import "testB.dart"; |
| 64 class B extends A { | 64 class B extends A { |
| 65 Future a() async {return 0;} | 65 Future a() async {return 0;} |
| 66 foo() async {await ^} | 66 foo() async {await ^} |
| 67 } | 67 } |
| 68 '''); | 68 '''); |
| 69 | 69 |
| 70 await computeSuggestions(); | 70 await computeSuggestions(); |
| 71 expect(replacementOffset, completionOffset); | 71 expect(replacementOffset, completionOffset); |
| 72 expect(replacementLength, 0); | 72 expect(replacementLength, 0); |
| 73 assertNotSuggested('a'); | 73 assertNotSuggested('a'); |
| 74 assertNotSuggested('foo'); | 74 assertNotSuggested('foo'); |
| 75 assertNotSuggested('B'); | 75 assertNotSuggested('B'); |
| 76 assertNotSuggested('A'); | 76 assertNotSuggested('A'); |
| 77 assertNotSuggested('Object'); | 77 assertNotSuggested('Object'); |
| 78 assertSuggestMethod('y', 'A', 'dynamic'); | 78 assertSuggestMethod('y', 'A', 'dynamic'); |
| 79 } | 79 } |
| 80 | 80 |
| 81 test_Block_inherited_imported() async { | 81 test_Block_inherited_imported() async { |
| 82 // Block BlockFunctionBody MethodDeclaration ClassDeclaration | 82 // Block BlockFunctionBody MethodDeclaration ClassDeclaration |
| 83 resolveSource( | 83 resolveSource( |
| 84 '/testB.dart', | 84 '/testB.dart', |
| 85 ''' | 85 ''' |
| 86 lib B; | 86 lib B; |
| 87 class F { var f1; f2() { } get f3 => 0; set f4(fx) { } var _pf; } | 87 class F { var f1; f2() { } get f3 => 0; set f4(fx) { } var _pf; } |
| 88 class E extends F { var e1; e2() { } } | 88 class E extends F { var e1; e2() { } } |
| 89 class I { int i1; i2() { } } | 89 class I { int i1; i2() { } } |
| 90 class M { var m1; int m2() { } }'''); | 90 class M { var m1; int m2() { } }'''); |
| 91 addTestSource(''' | 91 addTestSource(''' |
| 92 import "/testB.dart"; | 92 import "testB.dart"; |
| 93 class A extends E implements I with M {a() {^}}'''); | 93 class A extends E implements I with M {a() {^}}'''); |
| 94 await computeSuggestions(); | 94 await computeSuggestions(); |
| 95 expect(replacementOffset, completionOffset); | 95 expect(replacementOffset, completionOffset); |
| 96 expect(replacementLength, 0); | 96 expect(replacementLength, 0); |
| 97 assertSuggestField('e1', null); | 97 assertSuggestField('e1', null); |
| 98 assertSuggestField('f1', null); | 98 assertSuggestField('f1', null); |
| 99 assertSuggestField('i1', 'int'); | 99 assertSuggestField('i1', 'int'); |
| 100 assertSuggestField('m1', null); | 100 assertSuggestField('m1', null); |
| 101 assertSuggestGetter('f3', null); | 101 assertSuggestGetter('f3', null); |
| 102 assertSuggestSetter('f4'); | 102 assertSuggestSetter('f4'); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 '/testB.dart', | 136 '/testB.dart', |
| 137 ''' | 137 ''' |
| 138 lib libB; | 138 lib libB; |
| 139 class A2 { | 139 class A2 { |
| 140 int x; | 140 int x; |
| 141 int y() {return 0;} | 141 int y() {return 0;} |
| 142 int x2; | 142 int x2; |
| 143 int y2() {return 0;} | 143 int y2() {return 0;} |
| 144 }'''); | 144 }'''); |
| 145 addTestSource(''' | 145 addTestSource(''' |
| 146 import "/testB.dart"; | 146 import "testB.dart"; |
| 147 class A1 { | 147 class A1 { |
| 148 int x; | 148 int x; |
| 149 int y() {return 0;} | 149 int y() {return 0;} |
| 150 int x1; | 150 int x1; |
| 151 int y1() {return 0;} | 151 int y1() {return 0;} |
| 152 } | 152 } |
| 153 class B extends A1 with A2 { | 153 class B extends A1 with A2 { |
| 154 int a; | 154 int a; |
| 155 int b() {return 0;} | 155 int b() {return 0;} |
| 156 foo() {^} | 156 foo() {^} |
| (...skipping 30 matching lines...) Expand all Loading... |
| 187 | 187 |
| 188 test_method_parameters_mixed_required_and_named() async { | 188 test_method_parameters_mixed_required_and_named() async { |
| 189 resolveSource( | 189 resolveSource( |
| 190 '/libA.dart', | 190 '/libA.dart', |
| 191 ''' | 191 ''' |
| 192 class A { | 192 class A { |
| 193 void m(x, {int y}) {} | 193 void m(x, {int y}) {} |
| 194 } | 194 } |
| 195 '''); | 195 '''); |
| 196 addTestSource(''' | 196 addTestSource(''' |
| 197 import '/libA.dart'; | 197 import 'libA.dart'; |
| 198 class B extends A { | 198 class B extends A { |
| 199 main() {^} | 199 main() {^} |
| 200 } | 200 } |
| 201 '''); | 201 '''); |
| 202 await computeSuggestions(); | 202 await computeSuggestions(); |
| 203 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); | 203 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); |
| 204 expect(suggestion.parameterNames, hasLength(2)); | 204 expect(suggestion.parameterNames, hasLength(2)); |
| 205 expect(suggestion.parameterNames[0], 'x'); | 205 expect(suggestion.parameterNames[0], 'x'); |
| 206 expect(suggestion.parameterTypes[0], 'dynamic'); | 206 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 207 expect(suggestion.parameterNames[1], 'y'); | 207 expect(suggestion.parameterNames[1], 'y'); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 232 | 232 |
| 233 test_method_parameters_mixed_required_and_positional() async { | 233 test_method_parameters_mixed_required_and_positional() async { |
| 234 resolveSource( | 234 resolveSource( |
| 235 '/libA.dart', | 235 '/libA.dart', |
| 236 ''' | 236 ''' |
| 237 class A { | 237 class A { |
| 238 void m(x, [int y]) {} | 238 void m(x, [int y]) {} |
| 239 } | 239 } |
| 240 '''); | 240 '''); |
| 241 addTestSource(''' | 241 addTestSource(''' |
| 242 import '/libA.dart'; | 242 import 'libA.dart'; |
| 243 class B extends A { | 243 class B extends A { |
| 244 main() {^} | 244 main() {^} |
| 245 } | 245 } |
| 246 '''); | 246 '''); |
| 247 await computeSuggestions(); | 247 await computeSuggestions(); |
| 248 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); | 248 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); |
| 249 expect(suggestion.parameterNames, hasLength(2)); | 249 expect(suggestion.parameterNames, hasLength(2)); |
| 250 expect(suggestion.parameterNames[0], 'x'); | 250 expect(suggestion.parameterNames[0], 'x'); |
| 251 expect(suggestion.parameterTypes[0], 'dynamic'); | 251 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 252 expect(suggestion.parameterNames[1], 'y'); | 252 expect(suggestion.parameterNames[1], 'y'); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 277 | 277 |
| 278 test_method_parameters_named() async { | 278 test_method_parameters_named() async { |
| 279 resolveSource( | 279 resolveSource( |
| 280 '/libA.dart', | 280 '/libA.dart', |
| 281 ''' | 281 ''' |
| 282 class A { | 282 class A { |
| 283 void m({x, int y}) {} | 283 void m({x, int y}) {} |
| 284 } | 284 } |
| 285 '''); | 285 '''); |
| 286 addTestSource(''' | 286 addTestSource(''' |
| 287 import '/libA.dart'; | 287 import 'libA.dart'; |
| 288 class B extends A { | 288 class B extends A { |
| 289 main() {^} | 289 main() {^} |
| 290 } | 290 } |
| 291 '''); | 291 '''); |
| 292 await computeSuggestions(); | 292 await computeSuggestions(); |
| 293 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); | 293 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); |
| 294 expect(suggestion.parameterNames, hasLength(2)); | 294 expect(suggestion.parameterNames, hasLength(2)); |
| 295 expect(suggestion.parameterNames[0], 'x'); | 295 expect(suggestion.parameterNames[0], 'x'); |
| 296 expect(suggestion.parameterTypes[0], 'dynamic'); | 296 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 297 expect(suggestion.parameterNames[1], 'y'); | 297 expect(suggestion.parameterNames[1], 'y'); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 322 | 322 |
| 323 test_method_parameters_none() async { | 323 test_method_parameters_none() async { |
| 324 resolveSource( | 324 resolveSource( |
| 325 '/libA.dart', | 325 '/libA.dart', |
| 326 ''' | 326 ''' |
| 327 class A { | 327 class A { |
| 328 void m() {} | 328 void m() {} |
| 329 } | 329 } |
| 330 '''); | 330 '''); |
| 331 addTestSource(''' | 331 addTestSource(''' |
| 332 import '/libA.dart'; | 332 import 'libA.dart'; |
| 333 class B extends A { | 333 class B extends A { |
| 334 main() {^} | 334 main() {^} |
| 335 } | 335 } |
| 336 '''); | 336 '''); |
| 337 await computeSuggestions(); | 337 await computeSuggestions(); |
| 338 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); | 338 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); |
| 339 expect(suggestion.parameterNames, isEmpty); | 339 expect(suggestion.parameterNames, isEmpty); |
| 340 expect(suggestion.parameterTypes, isEmpty); | 340 expect(suggestion.parameterTypes, isEmpty); |
| 341 expect(suggestion.requiredParameterCount, 0); | 341 expect(suggestion.requiredParameterCount, 0); |
| 342 expect(suggestion.hasNamedParameters, false); | 342 expect(suggestion.hasNamedParameters, false); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 361 | 361 |
| 362 test_method_parameters_positional() async { | 362 test_method_parameters_positional() async { |
| 363 resolveSource( | 363 resolveSource( |
| 364 '/libA.dart', | 364 '/libA.dart', |
| 365 ''' | 365 ''' |
| 366 class A { | 366 class A { |
| 367 void m([x, int y]) {} | 367 void m([x, int y]) {} |
| 368 } | 368 } |
| 369 '''); | 369 '''); |
| 370 addTestSource(''' | 370 addTestSource(''' |
| 371 import '/libA.dart'; | 371 import 'libA.dart'; |
| 372 class B extends A { | 372 class B extends A { |
| 373 main() {^} | 373 main() {^} |
| 374 } | 374 } |
| 375 '''); | 375 '''); |
| 376 await computeSuggestions(); | 376 await computeSuggestions(); |
| 377 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); | 377 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); |
| 378 expect(suggestion.parameterNames, hasLength(2)); | 378 expect(suggestion.parameterNames, hasLength(2)); |
| 379 expect(suggestion.parameterNames[0], 'x'); | 379 expect(suggestion.parameterNames[0], 'x'); |
| 380 expect(suggestion.parameterTypes[0], 'dynamic'); | 380 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 381 expect(suggestion.parameterNames[1], 'y'); | 381 expect(suggestion.parameterNames[1], 'y'); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 406 | 406 |
| 407 test_method_parameters_required() async { | 407 test_method_parameters_required() async { |
| 408 resolveSource( | 408 resolveSource( |
| 409 '/libA.dart', | 409 '/libA.dart', |
| 410 ''' | 410 ''' |
| 411 class A { | 411 class A { |
| 412 void m(x, int y) {} | 412 void m(x, int y) {} |
| 413 } | 413 } |
| 414 '''); | 414 '''); |
| 415 addTestSource(''' | 415 addTestSource(''' |
| 416 import '/libA.dart'; | 416 import 'libA.dart'; |
| 417 class B extends A { | 417 class B extends A { |
| 418 main() {^} | 418 main() {^} |
| 419 } | 419 } |
| 420 '''); | 420 '''); |
| 421 await computeSuggestions(); | 421 await computeSuggestions(); |
| 422 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); | 422 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); |
| 423 expect(suggestion.parameterNames, hasLength(2)); | 423 expect(suggestion.parameterNames, hasLength(2)); |
| 424 expect(suggestion.parameterNames[0], 'x'); | 424 expect(suggestion.parameterNames[0], 'x'); |
| 425 expect(suggestion.parameterTypes[0], 'dynamic'); | 425 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 426 expect(suggestion.parameterNames[1], 'y'); | 426 expect(suggestion.parameterNames[1], 'y'); |
| 427 expect(suggestion.parameterTypes[1], 'int'); | 427 expect(suggestion.parameterTypes[1], 'int'); |
| 428 expect(suggestion.requiredParameterCount, 2); | 428 expect(suggestion.requiredParameterCount, 2); |
| 429 expect(suggestion.hasNamedParameters, false); | 429 expect(suggestion.hasNamedParameters, false); |
| 430 } | 430 } |
| 431 | 431 |
| 432 test_mixin_ordering() async { | 432 test_mixin_ordering() async { |
| 433 resolveSource( | 433 resolveSource( |
| 434 '/libA.dart', | 434 '/libA.dart', |
| 435 ''' | 435 ''' |
| 436 class B {} | 436 class B {} |
| 437 class M1 { | 437 class M1 { |
| 438 void m() {} | 438 void m() {} |
| 439 } | 439 } |
| 440 class M2 { | 440 class M2 { |
| 441 void m() {} | 441 void m() {} |
| 442 } | 442 } |
| 443 '''); | 443 '''); |
| 444 addTestSource(''' | 444 addTestSource(''' |
| 445 import '/libA.dart'; | 445 import 'libA.dart'; |
| 446 class C extends B with M1, M2 { | 446 class C extends B with M1, M2 { |
| 447 void f() { | 447 void f() { |
| 448 ^ | 448 ^ |
| 449 } | 449 } |
| 450 } | 450 } |
| 451 '''); | 451 '''); |
| 452 await computeSuggestions(); | 452 await computeSuggestions(); |
| 453 assertSuggestMethod('m', 'M1', 'void'); | 453 assertSuggestMethod('m', 'M1', 'void'); |
| 454 } | 454 } |
| 455 | 455 |
| 456 test_no_parameters_field() async { | 456 test_no_parameters_field() async { |
| 457 resolveSource( | 457 resolveSource( |
| 458 '/libA.dart', | 458 '/libA.dart', |
| 459 ''' | 459 ''' |
| 460 class A { | 460 class A { |
| 461 int x; | 461 int x; |
| 462 } | 462 } |
| 463 '''); | 463 '''); |
| 464 addTestSource(''' | 464 addTestSource(''' |
| 465 import '/libA.dart'; | 465 import 'libA.dart'; |
| 466 class B extends A { | 466 class B extends A { |
| 467 main() {^} | 467 main() {^} |
| 468 } | 468 } |
| 469 '''); | 469 '''); |
| 470 await computeSuggestions(); | 470 await computeSuggestions(); |
| 471 CompletionSuggestion suggestion = assertSuggestField('x', 'int'); | 471 CompletionSuggestion suggestion = assertSuggestField('x', 'int'); |
| 472 assertHasNoParameterInfo(suggestion); | 472 assertHasNoParameterInfo(suggestion); |
| 473 } | 473 } |
| 474 | 474 |
| 475 test_no_parameters_getter() async { | 475 test_no_parameters_getter() async { |
| 476 resolveSource( | 476 resolveSource( |
| 477 '/libA.dart', | 477 '/libA.dart', |
| 478 ''' | 478 ''' |
| 479 class A { | 479 class A { |
| 480 int get x => null; | 480 int get x => null; |
| 481 } | 481 } |
| 482 '''); | 482 '''); |
| 483 addTestSource(''' | 483 addTestSource(''' |
| 484 import '/libA.dart'; | 484 import 'libA.dart'; |
| 485 class B extends A { | 485 class B extends A { |
| 486 main() {^} | 486 main() {^} |
| 487 } | 487 } |
| 488 '''); | 488 '''); |
| 489 await computeSuggestions(); | 489 await computeSuggestions(); |
| 490 CompletionSuggestion suggestion = assertSuggestGetter('x', 'int'); | 490 CompletionSuggestion suggestion = assertSuggestGetter('x', 'int'); |
| 491 assertHasNoParameterInfo(suggestion); | 491 assertHasNoParameterInfo(suggestion); |
| 492 } | 492 } |
| 493 | 493 |
| 494 test_no_parameters_setter() async { | 494 test_no_parameters_setter() async { |
| 495 resolveSource( | 495 resolveSource( |
| 496 '/libA.dart', | 496 '/libA.dart', |
| 497 ''' | 497 ''' |
| 498 class A { | 498 class A { |
| 499 set x(int value) {}; | 499 set x(int value) {}; |
| 500 } | 500 } |
| 501 '''); | 501 '''); |
| 502 addTestSource(''' | 502 addTestSource(''' |
| 503 import '/libA.dart'; | 503 import 'libA.dart'; |
| 504 class B extends A { | 504 class B extends A { |
| 505 main() {^} | 505 main() {^} |
| 506 } | 506 } |
| 507 '''); | 507 '''); |
| 508 await computeSuggestions(); | 508 await computeSuggestions(); |
| 509 CompletionSuggestion suggestion = assertSuggestSetter('x'); | 509 CompletionSuggestion suggestion = assertSuggestSetter('x'); |
| 510 assertHasNoParameterInfo(suggestion); | 510 assertHasNoParameterInfo(suggestion); |
| 511 } | 511 } |
| 512 | 512 |
| 513 test_ouside_class() async { | 513 test_outside_class() async { |
| 514 resolveSource( | 514 resolveSource( |
| 515 '/testB.dart', | 515 '/testB.dart', |
| 516 ''' | 516 ''' |
| 517 lib libB; | 517 lib libB; |
| 518 class A2 { | 518 class A2 { |
| 519 int x; | 519 int x; |
| 520 int y() {return 0;} | 520 int y() {return 0;} |
| 521 int x2; | 521 int x2; |
| 522 int y2() {return 0;} | 522 int y2() {return 0;} |
| 523 }'''); | 523 }'''); |
| 524 addTestSource(''' | 524 addTestSource(''' |
| 525 import "/testB.dart"; | 525 import "testB.dart"; |
| 526 class A1 { | 526 class A1 { |
| 527 int x; | 527 int x; |
| 528 int y() {return 0;} | 528 int y() {return 0;} |
| 529 int x1; | 529 int x1; |
| 530 int y1() {return 0;} | 530 int y1() {return 0;} |
| 531 } | 531 } |
| 532 class B extends A1 with A2 { | 532 class B extends A1 with A2 { |
| 533 int a; | 533 int a; |
| 534 int b() {return 0;} | 534 int b() {return 0;} |
| 535 } | 535 } |
| (...skipping 22 matching lines...) Expand all Loading... |
| 558 '/testB.dart', | 558 '/testB.dart', |
| 559 ''' | 559 ''' |
| 560 lib libB; | 560 lib libB; |
| 561 class A2 { | 561 class A2 { |
| 562 int x; | 562 int x; |
| 563 int y() {return 0;} | 563 int y() {return 0;} |
| 564 int x2; | 564 int x2; |
| 565 int y2() {return 0;} | 565 int y2() {return 0;} |
| 566 }'''); | 566 }'''); |
| 567 addTestSource(''' | 567 addTestSource(''' |
| 568 import "/testB.dart"; | 568 import "testB.dart"; |
| 569 class A1 { | 569 class A1 { |
| 570 int x; | 570 int x; |
| 571 int y() {return 0;} | 571 int y() {return 0;} |
| 572 int x1; | 572 int x1; |
| 573 int y1() {return 0;} | 573 int y1() {return 0;} |
| 574 } | 574 } |
| 575 class B extends A1 with A2 { | 575 class B extends A1 with A2 { |
| 576 int a; | 576 int a; |
| 577 int b() {return 0;} | 577 int b() {return 0;} |
| 578 static foo = ^ | 578 static foo = ^ |
| (...skipping 22 matching lines...) Expand all Loading... |
| 601 '/testB.dart', | 601 '/testB.dart', |
| 602 ''' | 602 ''' |
| 603 lib libB; | 603 lib libB; |
| 604 class A2 { | 604 class A2 { |
| 605 int x; | 605 int x; |
| 606 int y() {return 0;} | 606 int y() {return 0;} |
| 607 int x2; | 607 int x2; |
| 608 int y2() {return 0;} | 608 int y2() {return 0;} |
| 609 }'''); | 609 }'''); |
| 610 addTestSource(''' | 610 addTestSource(''' |
| 611 import "/testB.dart"; | 611 import "testB.dart"; |
| 612 class A1 { | 612 class A1 { |
| 613 int x; | 613 int x; |
| 614 int y() {return 0;} | 614 int y() {return 0;} |
| 615 int x1; | 615 int x1; |
| 616 int y1() {return 0;} | 616 int y1() {return 0;} |
| 617 } | 617 } |
| 618 class B extends A1 with A2 { | 618 class B extends A1 with A2 { |
| 619 int a; | 619 int a; |
| 620 int b() {return 0;} | 620 int b() {return 0;} |
| 621 static foo() {^} | 621 static foo() {^} |
| (...skipping 10 matching lines...) Expand all Loading... |
| 632 assertNotSuggested('foo'); | 632 assertNotSuggested('foo'); |
| 633 assertNotSuggested('A'); | 633 assertNotSuggested('A'); |
| 634 assertNotSuggested('x'); | 634 assertNotSuggested('x'); |
| 635 assertNotSuggested('y'); | 635 assertNotSuggested('y'); |
| 636 assertNotSuggested('x1'); | 636 assertNotSuggested('x1'); |
| 637 assertNotSuggested('y1'); | 637 assertNotSuggested('y1'); |
| 638 assertNotSuggested('x2'); | 638 assertNotSuggested('x2'); |
| 639 assertNotSuggested('y2'); | 639 assertNotSuggested('y2'); |
| 640 } | 640 } |
| 641 } | 641 } |
| OLD | NEW |