| 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 'dart:async'; | 5 import 'dart:async'; |
| 6 import 'package:async_helper/async_helper.dart'; | 6 import 'package:async_helper/async_helper.dart'; |
| 7 import 'compiler_helper.dart'; | 7 import 'compiler_helper.dart'; |
| 8 import 'package:compiler/src/resolution/class_members.dart' show MembersCreator; | 8 import 'package:compiler/src/resolution/class_members.dart' show MembersCreator; |
| 9 | 9 |
| 10 main() { | 10 main() { |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 } | 71 } |
| 72 """), | 72 """), |
| 73 check(""" | 73 check(""" |
| 74 class A { | 74 class A { |
| 75 method(a, b, c, d) => null; // testRequiredParameters:3 | 75 method(a, b, c, d) => null; // testRequiredParameters:3 |
| 76 } | 76 } |
| 77 class Class extends A { | 77 class Class extends A { |
| 78 method(b, a, d, c) => null; // testRequiredParameters:4 | 78 method(b, a, d, c) => null; // testRequiredParameters:4 |
| 79 } | 79 } |
| 80 """), | 80 """), |
| 81 check( | 81 check(""" |
| 82 """ | |
| 83 class A { | 82 class A { |
| 84 method() => null; // testRequiredParameters:5 | 83 method() => null; // testRequiredParameters:5 |
| 85 } | 84 } |
| 86 class Class extends A { | 85 class Class extends A { |
| 87 method(a) => null; // testRequiredParameters:6 | 86 method(a) => null; // testRequiredParameters:6 |
| 88 } | 87 } |
| 89 """, | 88 """, |
| 90 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 89 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 91 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 90 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 92 check( | 91 check(""" |
| 93 """ | |
| 94 class A { | 92 class A { |
| 95 method() => null; // testRequiredParameters:7 | 93 method() => null; // testRequiredParameters:7 |
| 96 } | 94 } |
| 97 class Class implements A { | 95 class Class implements A { |
| 98 method(a) => null; // testRequiredParameters:8 | 96 method(a) => null; // testRequiredParameters:8 |
| 99 } | 97 } |
| 100 """, | 98 """, |
| 101 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 99 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 102 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 100 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 103 check( | 101 check(""" |
| 104 """ | |
| 105 class A { | 102 class A { |
| 106 method(a, b, c) => null; // testRequiredParameters:9 | 103 method(a, b, c) => null; // testRequiredParameters:9 |
| 107 } | 104 } |
| 108 class Class extends A { | 105 class Class extends A { |
| 109 method(a, b, c, d) => null; // testRequiredParameters:10 | 106 method(a, b, c, d) => null; // testRequiredParameters:10 |
| 110 } | 107 } |
| 111 """, | 108 """, |
| 112 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 109 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 113 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 110 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 114 ]); | 111 ]); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 141 } | 138 } |
| 142 """), | 139 """), |
| 143 check(""" | 140 check(""" |
| 144 class A { | 141 class A { |
| 145 method([a]) => null; // testPositionalParameters:7 | 142 method([a]) => null; // testPositionalParameters:7 |
| 146 } | 143 } |
| 147 class Class extends A { | 144 class Class extends A { |
| 148 method([a]) => null; // testPositionalParameters:8 | 145 method([a]) => null; // testPositionalParameters:8 |
| 149 } | 146 } |
| 150 """), | 147 """), |
| 151 check( | 148 check(""" |
| 152 """ | |
| 153 class A { | 149 class A { |
| 154 method(a) => null; // testPositionalParameters:9 | 150 method(a) => null; // testPositionalParameters:9 |
| 155 } | 151 } |
| 156 class Class extends A { | 152 class Class extends A { |
| 157 method() => null; // testPositionalParameters:10 | 153 method() => null; // testPositionalParameters:10 |
| 158 } | 154 } |
| 159 """, | 155 """, |
| 160 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 156 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 161 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 157 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 162 check( | 158 check(""" |
| 163 """ | |
| 164 class A { | 159 class A { |
| 165 method(a, [b]) => null; // testPositionalParameters:11 | 160 method(a, [b]) => null; // testPositionalParameters:11 |
| 166 } | 161 } |
| 167 class Class extends A { | 162 class Class extends A { |
| 168 method(a) => null; // testPositionalParameters:12 | 163 method(a) => null; // testPositionalParameters:12 |
| 169 } | 164 } |
| 170 """, | 165 """, |
| 171 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 166 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 172 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 167 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 173 check( | 168 check(""" |
| 174 """ | |
| 175 class A { | 169 class A { |
| 176 method(a, [b]) => null; // testPositionalParameters:13 | 170 method(a, [b]) => null; // testPositionalParameters:13 |
| 177 } | 171 } |
| 178 class Class extends A { | 172 class Class extends A { |
| 179 method([a]) => null; // testPositionalParameters:14 | 173 method([a]) => null; // testPositionalParameters:14 |
| 180 } | 174 } |
| 181 """, | 175 """, |
| 182 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 176 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 183 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 177 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 184 check( | 178 check(""" |
| 185 """ | |
| 186 class A { | 179 class A { |
| 187 method(a, b, [c, d, e]) => null; // testPositionalParameters:15 | 180 method(a, b, [c, d, e]) => null; // testPositionalParameters:15 |
| 188 } | 181 } |
| 189 class Class extends A { | 182 class Class extends A { |
| 190 method([a, b, c, d]) => null; // testPositionalParameters:16 | 183 method([a, b, c, d]) => null; // testPositionalParameters:16 |
| 191 } | 184 } |
| 192 """, | 185 """, |
| 193 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 186 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 194 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 187 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 195 ]); | 188 ]); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 222 } | 215 } |
| 223 """), | 216 """), |
| 224 check(""" | 217 check(""" |
| 225 class A { | 218 class A { |
| 226 method(d, {a, b, c}) => null; // testNamedParameters:7 | 219 method(d, {a, b, c}) => null; // testNamedParameters:7 |
| 227 } | 220 } |
| 228 class Class extends A { | 221 class Class extends A { |
| 229 method(e, {b, c, a, d}) => null; // testNamedParameters:8 | 222 method(e, {b, c, a, d}) => null; // testNamedParameters:8 |
| 230 } | 223 } |
| 231 """), | 224 """), |
| 232 check( | 225 check(""" |
| 233 """ | |
| 234 class A { | 226 class A { |
| 235 method({a}) => null; // testNamedParameters:9 | 227 method({a}) => null; // testNamedParameters:9 |
| 236 } | 228 } |
| 237 class Class extends A { | 229 class Class extends A { |
| 238 method() => null; // testNamedParameters:10 | 230 method() => null; // testNamedParameters:10 |
| 239 } | 231 } |
| 240 """, | 232 """, |
| 241 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 233 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 242 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 234 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 243 check( | 235 check(""" |
| 244 """ | |
| 245 class A { | 236 class A { |
| 246 method({a, b}) => null; // testNamedParameters:11 | 237 method({a, b}) => null; // testNamedParameters:11 |
| 247 } | 238 } |
| 248 class Class extends A { | 239 class Class extends A { |
| 249 method({b}) => null; // testNamedParameters:12 | 240 method({b}) => null; // testNamedParameters:12 |
| 250 } | 241 } |
| 251 """, | 242 """, |
| 252 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 243 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 253 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 244 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 254 check( | 245 check(""" |
| 255 """ | |
| 256 class A { | 246 class A { |
| 257 method({a, b, c, d}) => null; // testNamedParameters:13 | 247 method({a, b, c, d}) => null; // testNamedParameters:13 |
| 258 } | 248 } |
| 259 class Class extends A { | 249 class Class extends A { |
| 260 method({a, e, d, c}) => null; // testNamedParameters:14 | 250 method({a, e, d, c}) => null; // testNamedParameters:14 |
| 261 } | 251 } |
| 262 """, | 252 """, |
| 263 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 253 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 264 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 254 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 265 ]); | 255 ]); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 | 295 |
| 306 check(""" | 296 check(""" |
| 307 class A { | 297 class A { |
| 308 void method() {} // testNotSubtype:9 | 298 void method() {} // testNotSubtype:9 |
| 309 } | 299 } |
| 310 class Class extends A { | 300 class Class extends A { |
| 311 int method() => null; // testNotSubtype:10 | 301 int method() => null; // testNotSubtype:10 |
| 312 } | 302 } |
| 313 """), | 303 """), |
| 314 | 304 |
| 315 check( | 305 check(""" |
| 316 """ | |
| 317 class A { | 306 class A { |
| 318 int method() => null; // testNotSubtype:11 | 307 int method() => null; // testNotSubtype:11 |
| 319 } | 308 } |
| 320 class Class extends A { | 309 class Class extends A { |
| 321 void method() {} // testNotSubtype:12 | 310 void method() {} // testNotSubtype:12 |
| 322 } | 311 } |
| 323 """, | 312 """, |
| 324 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 313 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 325 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 314 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 326 | 315 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 341 method(int a) => null; // testNotSubtype:16 | 330 method(int a) => null; // testNotSubtype:16 |
| 342 } | 331 } |
| 343 class B extends A { | 332 class B extends A { |
| 344 method(a) => null; // testNotSubtype:17 | 333 method(a) => null; // testNotSubtype:17 |
| 345 } | 334 } |
| 346 class Class extends B { | 335 class Class extends B { |
| 347 method(String a) => null; // testNotSubtype:18 | 336 method(String a) => null; // testNotSubtype:18 |
| 348 } | 337 } |
| 349 """), | 338 """), |
| 350 | 339 |
| 351 check( | 340 check(""" |
| 352 """ | |
| 353 class A { | 341 class A { |
| 354 method(int a) => null; // testNotSubtype:19 | 342 method(int a) => null; // testNotSubtype:19 |
| 355 } | 343 } |
| 356 class Class extends A { | 344 class Class extends A { |
| 357 method(String a) => null; // testNotSubtype:20 | 345 method(String a) => null; // testNotSubtype:20 |
| 358 } | 346 } |
| 359 """, | 347 """, |
| 360 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 348 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 361 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 349 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 362 | 350 |
| 363 // TODO(johnniwinther): These are unclear. Issue 16443 has been filed. | 351 // TODO(johnniwinther): These are unclear. Issue 16443 has been filed. |
| 364 check( | 352 check(""" |
| 365 """ | |
| 366 class A { | 353 class A { |
| 367 method(int a) => null; // testNotSubtype:23 | 354 method(int a) => null; // testNotSubtype:23 |
| 368 } | 355 } |
| 369 class B { | 356 class B { |
| 370 method(num a) => null; // testNotSubtype:24 | 357 method(num a) => null; // testNotSubtype:24 |
| 371 } | 358 } |
| 372 abstract class C implements A, B { | 359 abstract class C implements A, B { |
| 373 } | 360 } |
| 374 class Class implements C { | 361 class Class implements C { |
| 375 method(double a) => null; // testNotSubtype:25 | 362 method(double a) => null; // testNotSubtype:25 |
| 376 } | 363 } |
| 377 """, | 364 """, |
| 378 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 365 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 379 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 366 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 380 | 367 |
| 381 check( | 368 check(""" |
| 382 """ | |
| 383 class A { | 369 class A { |
| 384 method(num a) => null; // testNotSubtype:29 | 370 method(num a) => null; // testNotSubtype:29 |
| 385 } | 371 } |
| 386 class B { | 372 class B { |
| 387 method(int a) => null; // testNotSubtype:30 | 373 method(int a) => null; // testNotSubtype:30 |
| 388 } | 374 } |
| 389 abstract class C implements A, B { | 375 abstract class C implements A, B { |
| 390 } | 376 } |
| 391 class Class implements C { | 377 class Class implements C { |
| 392 method(double a) => null; // testNotSubtype:31 | 378 method(double a) => null; // testNotSubtype:31 |
| 393 } | 379 } |
| 394 """, | 380 """, |
| 395 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 381 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 396 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 382 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 397 | 383 |
| 398 check( | 384 check(""" |
| 399 """ | |
| 400 class A { | 385 class A { |
| 401 method(int a) => null; // testNotSubtype:26 | 386 method(int a) => null; // testNotSubtype:26 |
| 402 } | 387 } |
| 403 class B { | 388 class B { |
| 404 method(num a) => null; // testNotSubtype:27 | 389 method(num a) => null; // testNotSubtype:27 |
| 405 } | 390 } |
| 406 abstract class C implements A, B { | 391 abstract class C implements A, B { |
| 407 } | 392 } |
| 408 class Class implements C { | 393 class Class implements C { |
| 409 method(String a) => null; // testNotSubtype:28 | 394 method(String a) => null; // testNotSubtype:28 |
| 410 } | 395 } |
| 411 """, | 396 """, warnings: [ |
| 412 warnings: [ | 397 MessageKind.INVALID_OVERRIDE_METHOD, |
| 413 MessageKind.INVALID_OVERRIDE_METHOD, | 398 MessageKind.INVALID_OVERRIDE_METHOD |
| 414 MessageKind.INVALID_OVERRIDE_METHOD | 399 ], infos: [ |
| 415 ], | 400 MessageKind.INVALID_OVERRIDDEN_METHOD, |
| 416 infos: [ | 401 MessageKind.INVALID_OVERRIDDEN_METHOD |
| 417 MessageKind.INVALID_OVERRIDDEN_METHOD, | 402 ]), |
| 418 MessageKind.INVALID_OVERRIDDEN_METHOD | |
| 419 ]), | |
| 420 ]); | 403 ]); |
| 421 } | 404 } |
| 422 | 405 |
| 423 Future testGetterNotSubtype() { | 406 Future testGetterNotSubtype() { |
| 424 return Future.wait([ | 407 return Future.wait([ |
| 425 check(""" | 408 check(""" |
| 426 class A { | 409 class A { |
| 427 get getter => null; // testGetterNotSubtype:1 | 410 get getter => null; // testGetterNotSubtype:1 |
| 428 } | 411 } |
| 429 class Class extends A { | 412 class Class extends A { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 451 | 434 |
| 452 check(""" | 435 check(""" |
| 453 class A { | 436 class A { |
| 454 int get getter => null; // testGetterNotSubtype:7 | 437 int get getter => null; // testGetterNotSubtype:7 |
| 455 } | 438 } |
| 456 class Class extends A { | 439 class Class extends A { |
| 457 num get getter => null; // testGetterNotSubtype:8 | 440 num get getter => null; // testGetterNotSubtype:8 |
| 458 } | 441 } |
| 459 """), | 442 """), |
| 460 | 443 |
| 461 check( | 444 check(""" |
| 462 """ | |
| 463 class A { | 445 class A { |
| 464 int get getter => null; // testGetterNotSubtype:9 | 446 int get getter => null; // testGetterNotSubtype:9 |
| 465 } | 447 } |
| 466 class Class extends A { | 448 class Class extends A { |
| 467 double get getter => null; // testGetterNotSubtype:10 | 449 double get getter => null; // testGetterNotSubtype:10 |
| 468 } | 450 } |
| 469 """, | 451 """, |
| 470 warnings: MessageKind.INVALID_OVERRIDE_GETTER, | 452 warnings: MessageKind.INVALID_OVERRIDE_GETTER, |
| 471 infos: MessageKind.INVALID_OVERRIDDEN_GETTER), | 453 infos: MessageKind.INVALID_OVERRIDDEN_GETTER), |
| 472 | 454 |
| 473 check(""" | 455 check(""" |
| 474 class A { | 456 class A { |
| 475 int get getter => null; // testGetterNotSubtype:11 | 457 int get getter => null; // testGetterNotSubtype:11 |
| 476 } | 458 } |
| 477 class B extends A { | 459 class B extends A { |
| 478 num get getter => null; // testGetterNotSubtype:12 | 460 num get getter => null; // testGetterNotSubtype:12 |
| 479 } | 461 } |
| 480 class Class extends B { | 462 class Class extends B { |
| 481 double get getter => null; // testGetterNotSubtype:13 | 463 double get getter => null; // testGetterNotSubtype:13 |
| 482 } | 464 } |
| 483 """), | 465 """), |
| 484 | 466 |
| 485 check( | 467 check(""" |
| 486 """ | |
| 487 class A { | 468 class A { |
| 488 int get getter => null; // testGetterNotSubtype:14 | 469 int get getter => null; // testGetterNotSubtype:14 |
| 489 } | 470 } |
| 490 class B { | 471 class B { |
| 491 num get getter => null; // testGetterNotSubtype:15 | 472 num get getter => null; // testGetterNotSubtype:15 |
| 492 } | 473 } |
| 493 class Class extends A implements B { | 474 class Class extends A implements B { |
| 494 double get getter => null; // testGetterNotSubtype:16 | 475 double get getter => null; // testGetterNotSubtype:16 |
| 495 } | 476 } |
| 496 """, | 477 """, |
| 497 warnings: MessageKind.INVALID_OVERRIDE_GETTER, | 478 warnings: MessageKind.INVALID_OVERRIDE_GETTER, |
| 498 infos: MessageKind.INVALID_OVERRIDDEN_GETTER), | 479 infos: MessageKind.INVALID_OVERRIDDEN_GETTER), |
| 499 | 480 |
| 500 check( | 481 check(""" |
| 501 """ | |
| 502 class A { | 482 class A { |
| 503 int get getter => null; // testGetterNotSubtype:17 | 483 int get getter => null; // testGetterNotSubtype:17 |
| 504 } | 484 } |
| 505 class B { | 485 class B { |
| 506 String get getter => null; // testGetterNotSubtype:18 | 486 String get getter => null; // testGetterNotSubtype:18 |
| 507 } | 487 } |
| 508 class Class extends A implements B { | 488 class Class extends A implements B { |
| 509 double get getter => null; // testGetterNotSubtype:19 | 489 double get getter => null; // testGetterNotSubtype:19 |
| 510 } | 490 } |
| 511 """, | 491 """, warnings: [ |
| 512 warnings: [ | 492 MessageKind.INVALID_OVERRIDE_GETTER, |
| 513 MessageKind.INVALID_OVERRIDE_GETTER, | 493 MessageKind.INVALID_OVERRIDE_GETTER |
| 514 MessageKind.INVALID_OVERRIDE_GETTER | 494 ], infos: [ |
| 515 ], | 495 MessageKind.INVALID_OVERRIDDEN_GETTER, |
| 516 infos: [ | 496 MessageKind.INVALID_OVERRIDDEN_GETTER |
| 517 MessageKind.INVALID_OVERRIDDEN_GETTER, | 497 ]), |
| 518 MessageKind.INVALID_OVERRIDDEN_GETTER | |
| 519 ]), | |
| 520 | 498 |
| 521 check( | 499 check(""" |
| 522 """ | |
| 523 class A { | 500 class A { |
| 524 int get getter => null; // testGetterNotSubtype:20 | 501 int get getter => null; // testGetterNotSubtype:20 |
| 525 } | 502 } |
| 526 class B { | 503 class B { |
| 527 String get getter => null; // testGetterNotSubtype:21 | 504 String get getter => null; // testGetterNotSubtype:21 |
| 528 } | 505 } |
| 529 class Class implements A, B { | 506 class Class implements A, B { |
| 530 double get getter => null; // testGetterNotSubtype:22 | 507 double get getter => null; // testGetterNotSubtype:22 |
| 531 } | 508 } |
| 532 """, | 509 """, warnings: [ |
| 533 warnings: [ | 510 MessageKind.INVALID_OVERRIDE_GETTER, |
| 534 MessageKind.INVALID_OVERRIDE_GETTER, | 511 MessageKind.INVALID_OVERRIDE_GETTER |
| 535 MessageKind.INVALID_OVERRIDE_GETTER | 512 ], infos: [ |
| 536 ], | 513 MessageKind.INVALID_OVERRIDDEN_GETTER, |
| 537 infos: [ | 514 MessageKind.INVALID_OVERRIDDEN_GETTER |
| 538 MessageKind.INVALID_OVERRIDDEN_GETTER, | 515 ]), |
| 539 MessageKind.INVALID_OVERRIDDEN_GETTER | |
| 540 ]), | |
| 541 | 516 |
| 542 // TODO(johnniwinther): These are unclear. Issue 16443 has been filed. | 517 // TODO(johnniwinther): These are unclear. Issue 16443 has been filed. |
| 543 check( | 518 check(""" |
| 544 """ | |
| 545 class A { | 519 class A { |
| 546 int get getter => null; // testGetterNotSubtype:23 | 520 int get getter => null; // testGetterNotSubtype:23 |
| 547 } | 521 } |
| 548 class B { | 522 class B { |
| 549 num get getter => null; // testGetterNotSubtype:24 | 523 num get getter => null; // testGetterNotSubtype:24 |
| 550 } | 524 } |
| 551 abstract class C implements A, B { | 525 abstract class C implements A, B { |
| 552 } | 526 } |
| 553 class Class implements C { | 527 class Class implements C { |
| 554 double get getter => null; // testGetterNotSubtype:25 | 528 double get getter => null; // testGetterNotSubtype:25 |
| 555 } | 529 } |
| 556 """, | 530 """, |
| 557 warnings: MessageKind.INVALID_OVERRIDE_GETTER, | 531 warnings: MessageKind.INVALID_OVERRIDE_GETTER, |
| 558 infos: MessageKind.INVALID_OVERRIDDEN_GETTER), | 532 infos: MessageKind.INVALID_OVERRIDDEN_GETTER), |
| 559 | 533 |
| 560 check( | 534 check(""" |
| 561 """ | |
| 562 class A { | 535 class A { |
| 563 int get getter => null; // testGetterNotSubtype:26 | 536 int get getter => null; // testGetterNotSubtype:26 |
| 564 } | 537 } |
| 565 class B { | 538 class B { |
| 566 num get getter => null; // testGetterNotSubtype:27 | 539 num get getter => null; // testGetterNotSubtype:27 |
| 567 } | 540 } |
| 568 abstract class C implements A, B { | 541 abstract class C implements A, B { |
| 569 } | 542 } |
| 570 class Class implements C { | 543 class Class implements C { |
| 571 String get getter => null; // testGetterNotSubtype:28 | 544 String get getter => null; // testGetterNotSubtype:28 |
| 572 } | 545 } |
| 573 """, | 546 """, warnings: [ |
| 574 warnings: [ | 547 MessageKind.INVALID_OVERRIDE_GETTER, |
| 575 MessageKind.INVALID_OVERRIDE_GETTER, | 548 MessageKind.INVALID_OVERRIDE_GETTER |
| 576 MessageKind.INVALID_OVERRIDE_GETTER | 549 ], infos: [ |
| 577 ], | 550 MessageKind.INVALID_OVERRIDDEN_GETTER, |
| 578 infos: [ | 551 MessageKind.INVALID_OVERRIDDEN_GETTER |
| 579 MessageKind.INVALID_OVERRIDDEN_GETTER, | 552 ]), |
| 580 MessageKind.INVALID_OVERRIDDEN_GETTER | |
| 581 ]), | |
| 582 ]); | 553 ]); |
| 583 } | 554 } |
| 584 | 555 |
| 585 Future testGenericNotSubtype() { | 556 Future testGenericNotSubtype() { |
| 586 return Future.wait([ | 557 return Future.wait([ |
| 587 check(""" | 558 check(""" |
| 588 class A<T> { | 559 class A<T> { |
| 589 method(T t) => null; // testGenericNotSubtype:1 | 560 method(T t) => null; // testGenericNotSubtype:1 |
| 590 } | 561 } |
| 591 class Class<S> extends A<S> { | 562 class Class<S> extends A<S> { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 607 method(T t) => null; // testGenericNotSubtype:5 | 578 method(T t) => null; // testGenericNotSubtype:5 |
| 608 } | 579 } |
| 609 class B<S> { | 580 class B<S> { |
| 610 method(S s) => null; // testGenericNotSubtype:6 | 581 method(S s) => null; // testGenericNotSubtype:6 |
| 611 } | 582 } |
| 612 class Class extends A<double> implements B<int> { | 583 class Class extends A<double> implements B<int> { |
| 613 method(num i) => null; // testGenericNotSubtype:7 | 584 method(num i) => null; // testGenericNotSubtype:7 |
| 614 } | 585 } |
| 615 """), | 586 """), |
| 616 | 587 |
| 617 check( | 588 check(""" |
| 618 """ | |
| 619 class A<T> { | 589 class A<T> { |
| 620 method(T t) => null; // testGenericNotSubtype:8 | 590 method(T t) => null; // testGenericNotSubtype:8 |
| 621 } | 591 } |
| 622 class Class<S> extends A<S> { | 592 class Class<S> extends A<S> { |
| 623 method(int i) => null; // testGenericNotSubtype:9 | 593 method(int i) => null; // testGenericNotSubtype:9 |
| 624 } | 594 } |
| 625 """, | 595 """, |
| 626 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 596 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 627 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 597 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 628 | 598 |
| 629 check(""" | 599 check(""" |
| 630 class A<T> { | 600 class A<T> { |
| 631 method(T t) => null; // testGenericNotSubtype:10 | 601 method(T t) => null; // testGenericNotSubtype:10 |
| 632 } | 602 } |
| 633 class B<S> extends A<S> { | 603 class B<S> extends A<S> { |
| 634 | 604 |
| 635 } | 605 } |
| 636 class Class<U> extends B<U> { | 606 class Class<U> extends B<U> { |
| 637 method(U u) => null; // testGenericNotSubtype:11 | 607 method(U u) => null; // testGenericNotSubtype:11 |
| 638 } | 608 } |
| 639 """), | 609 """), |
| 640 | 610 |
| 641 check( | 611 check(""" |
| 642 """ | |
| 643 class A<T> { | 612 class A<T> { |
| 644 method(T t) => null; // testGenericNotSubtype:12 | 613 method(T t) => null; // testGenericNotSubtype:12 |
| 645 } | 614 } |
| 646 class B<S> { | 615 class B<S> { |
| 647 method(S s) => null; // testGenericNotSubtype:13 | 616 method(S s) => null; // testGenericNotSubtype:13 |
| 648 } | 617 } |
| 649 class Class<U> extends A<U> implements B<num> { | 618 class Class<U> extends A<U> implements B<num> { |
| 650 method(int i) => null; // testGenericNotSubtype:14 | 619 method(int i) => null; // testGenericNotSubtype:14 |
| 651 } | 620 } |
| 652 """, | 621 """, |
| 653 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 622 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 654 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 623 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 655 | 624 |
| 656 check( | 625 check(""" |
| 657 """ | |
| 658 class A<T> { | 626 class A<T> { |
| 659 method(T t) => null; // testGenericNotSubtype:15 | 627 method(T t) => null; // testGenericNotSubtype:15 |
| 660 } | 628 } |
| 661 class B<S> { | 629 class B<S> { |
| 662 method(S s) => null; // testGenericNotSubtype:16 | 630 method(S s) => null; // testGenericNotSubtype:16 |
| 663 } | 631 } |
| 664 class Class extends A<int> implements B<String> { | 632 class Class extends A<int> implements B<String> { |
| 665 method(double d) => null; // testGenericNotSubtype:17 | 633 method(double d) => null; // testGenericNotSubtype:17 |
| 666 } | 634 } |
| 667 """, | 635 """, warnings: [ |
| 668 warnings: [ | 636 MessageKind.INVALID_OVERRIDE_METHOD, |
| 669 MessageKind.INVALID_OVERRIDE_METHOD, | 637 MessageKind.INVALID_OVERRIDE_METHOD |
| 670 MessageKind.INVALID_OVERRIDE_METHOD | 638 ], infos: [ |
| 671 ], | 639 MessageKind.INVALID_OVERRIDDEN_METHOD, |
| 672 infos: [ | 640 MessageKind.INVALID_OVERRIDDEN_METHOD |
| 673 MessageKind.INVALID_OVERRIDDEN_METHOD, | 641 ]), |
| 674 MessageKind.INVALID_OVERRIDDEN_METHOD | |
| 675 ]), | |
| 676 | 642 |
| 677 check( | 643 check(""" |
| 678 """ | |
| 679 class A<T> { | 644 class A<T> { |
| 680 method(T t) => null; // testGenericNotSubtype:18 | 645 method(T t) => null; // testGenericNotSubtype:18 |
| 681 } | 646 } |
| 682 class B<S> { | 647 class B<S> { |
| 683 method(S s) => null; // testGenericNotSubtype:19 | 648 method(S s) => null; // testGenericNotSubtype:19 |
| 684 } | 649 } |
| 685 class Class implements A<int>, B<String> { | 650 class Class implements A<int>, B<String> { |
| 686 method(double d) => null; // testGenericNotSubtype:20 | 651 method(double d) => null; // testGenericNotSubtype:20 |
| 687 } | 652 } |
| 688 """, | 653 """, warnings: [ |
| 689 warnings: [ | 654 MessageKind.INVALID_OVERRIDE_METHOD, |
| 690 MessageKind.INVALID_OVERRIDE_METHOD, | 655 MessageKind.INVALID_OVERRIDE_METHOD |
| 691 MessageKind.INVALID_OVERRIDE_METHOD | 656 ], infos: [ |
| 692 ], | 657 MessageKind.INVALID_OVERRIDDEN_METHOD, |
| 693 infos: [ | 658 MessageKind.INVALID_OVERRIDDEN_METHOD |
| 694 MessageKind.INVALID_OVERRIDDEN_METHOD, | 659 ]), |
| 695 MessageKind.INVALID_OVERRIDDEN_METHOD | |
| 696 ]), | |
| 697 | 660 |
| 698 // TODO(johnniwinther): These are unclear. Issue 16443 has been filed. | 661 // TODO(johnniwinther): These are unclear. Issue 16443 has been filed. |
| 699 check( | 662 check(""" |
| 700 """ | |
| 701 class A<T> { | 663 class A<T> { |
| 702 method(T t) => null; // testGenericNotSubtype:21 | 664 method(T t) => null; // testGenericNotSubtype:21 |
| 703 } | 665 } |
| 704 class B<S> { | 666 class B<S> { |
| 705 method(S s) => null; // testGenericNotSubtype:22 | 667 method(S s) => null; // testGenericNotSubtype:22 |
| 706 } | 668 } |
| 707 abstract class C implements A<int>, B<num> { | 669 abstract class C implements A<int>, B<num> { |
| 708 } | 670 } |
| 709 class Class implements C { | 671 class Class implements C { |
| 710 method(double d) => null; // testGenericNotSubtype:23 | 672 method(double d) => null; // testGenericNotSubtype:23 |
| 711 } | 673 } |
| 712 """, | 674 """, |
| 713 warnings: MessageKind.INVALID_OVERRIDE_METHOD, | 675 warnings: MessageKind.INVALID_OVERRIDE_METHOD, |
| 714 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), | 676 infos: MessageKind.INVALID_OVERRIDDEN_METHOD), |
| 715 | 677 |
| 716 check( | 678 check(""" |
| 717 """ | |
| 718 class A<T> { | 679 class A<T> { |
| 719 method(T t) => null; // testGenericNotSubtype:24 | 680 method(T t) => null; // testGenericNotSubtype:24 |
| 720 } | 681 } |
| 721 class B<S> { | 682 class B<S> { |
| 722 method(S s) => null; // testGenericNotSubtype:25 | 683 method(S s) => null; // testGenericNotSubtype:25 |
| 723 } | 684 } |
| 724 abstract class C implements A<int>, B<num> { | 685 abstract class C implements A<int>, B<num> { |
| 725 } | 686 } |
| 726 class Class implements C { | 687 class Class implements C { |
| 727 method(String s) => null; // testGenericNotSubtype:26 | 688 method(String s) => null; // testGenericNotSubtype:26 |
| 728 } | 689 } |
| 729 """, | 690 """, warnings: [ |
| 730 warnings: [ | 691 MessageKind.INVALID_OVERRIDE_METHOD, |
| 731 MessageKind.INVALID_OVERRIDE_METHOD, | 692 MessageKind.INVALID_OVERRIDE_METHOD |
| 732 MessageKind.INVALID_OVERRIDE_METHOD | 693 ], infos: [ |
| 733 ], | 694 MessageKind.INVALID_OVERRIDDEN_METHOD, |
| 734 infos: [ | 695 MessageKind.INVALID_OVERRIDDEN_METHOD |
| 735 MessageKind.INVALID_OVERRIDDEN_METHOD, | 696 ]), |
| 736 MessageKind.INVALID_OVERRIDDEN_METHOD | |
| 737 ]), | |
| 738 ]); | 697 ]); |
| 739 } | 698 } |
| 740 | 699 |
| 741 Future testSetterNotSubtype() { | 700 Future testSetterNotSubtype() { |
| 742 return Future.wait([ | 701 return Future.wait([ |
| 743 check(""" | 702 check(""" |
| 744 class A { | 703 class A { |
| 745 set setter(_) => null; // testSetterNotSubtype:1 | 704 set setter(_) => null; // testSetterNotSubtype:1 |
| 746 } | 705 } |
| 747 class Class extends A { | 706 class Class extends A { |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 796 | 755 |
| 797 check(""" | 756 check(""" |
| 798 class A { | 757 class A { |
| 799 set setter(int _) => null; // testSetterNotSubtype:13 | 758 set setter(int _) => null; // testSetterNotSubtype:13 |
| 800 } | 759 } |
| 801 class Class extends A { | 760 class Class extends A { |
| 802 set setter(num _) => null; // testSetterNotSubtype:14 | 761 set setter(num _) => null; // testSetterNotSubtype:14 |
| 803 } | 762 } |
| 804 """), | 763 """), |
| 805 | 764 |
| 806 check( | 765 check(""" |
| 807 """ | |
| 808 class A { | 766 class A { |
| 809 set setter(int _) => null; // testSetterNotSubtype:15 | 767 set setter(int _) => null; // testSetterNotSubtype:15 |
| 810 } | 768 } |
| 811 class Class extends A { | 769 class Class extends A { |
| 812 set setter(double _) => null; // testSetterNotSubtype:16 | 770 set setter(double _) => null; // testSetterNotSubtype:16 |
| 813 } | 771 } |
| 814 """, | 772 """, |
| 815 warnings: MessageKind.INVALID_OVERRIDE_SETTER, | 773 warnings: MessageKind.INVALID_OVERRIDE_SETTER, |
| 816 infos: MessageKind.INVALID_OVERRIDDEN_SETTER), | 774 infos: MessageKind.INVALID_OVERRIDDEN_SETTER), |
| 817 | 775 |
| 818 check(""" | 776 check(""" |
| 819 class A { | 777 class A { |
| 820 set setter(int _) => null; // testSetterNotSubtype:17 | 778 set setter(int _) => null; // testSetterNotSubtype:17 |
| 821 } | 779 } |
| 822 class B extends A { | 780 class B extends A { |
| 823 set setter(num _) => null; // testSetterNotSubtype:18 | 781 set setter(num _) => null; // testSetterNotSubtype:18 |
| 824 } | 782 } |
| 825 class Class extends B { | 783 class Class extends B { |
| 826 set setter(double _) => null; // testSetterNotSubtype:19 | 784 set setter(double _) => null; // testSetterNotSubtype:19 |
| 827 } | 785 } |
| 828 """), | 786 """), |
| 829 | 787 |
| 830 check( | 788 check(""" |
| 831 """ | |
| 832 class A { | 789 class A { |
| 833 set setter(int _) => null; // testSetterNotSubtype:20 | 790 set setter(int _) => null; // testSetterNotSubtype:20 |
| 834 } | 791 } |
| 835 class B { | 792 class B { |
| 836 set setter(num _) => null; // testSetterNotSubtype:21 | 793 set setter(num _) => null; // testSetterNotSubtype:21 |
| 837 } | 794 } |
| 838 class Class extends A implements B { | 795 class Class extends A implements B { |
| 839 set setter(double _) => null; // testSetterNotSubtype:22 | 796 set setter(double _) => null; // testSetterNotSubtype:22 |
| 840 } | 797 } |
| 841 """, | 798 """, |
| 842 warnings: MessageKind.INVALID_OVERRIDE_SETTER, | 799 warnings: MessageKind.INVALID_OVERRIDE_SETTER, |
| 843 infos: MessageKind.INVALID_OVERRIDDEN_SETTER), | 800 infos: MessageKind.INVALID_OVERRIDDEN_SETTER), |
| 844 | 801 |
| 845 check( | 802 check(""" |
| 846 """ | |
| 847 class A { | 803 class A { |
| 848 set setter(int _) => null; // testSetterNotSubtype:23 | 804 set setter(int _) => null; // testSetterNotSubtype:23 |
| 849 } | 805 } |
| 850 class B { | 806 class B { |
| 851 set setter(String _) => null; // testSetterNotSubtype:24 | 807 set setter(String _) => null; // testSetterNotSubtype:24 |
| 852 } | 808 } |
| 853 class Class extends A implements B { | 809 class Class extends A implements B { |
| 854 set setter(double _) => null; // testSetterNotSubtype:25 | 810 set setter(double _) => null; // testSetterNotSubtype:25 |
| 855 } | 811 } |
| 856 """, | 812 """, warnings: [ |
| 857 warnings: [ | 813 MessageKind.INVALID_OVERRIDE_SETTER, |
| 858 MessageKind.INVALID_OVERRIDE_SETTER, | 814 MessageKind.INVALID_OVERRIDE_SETTER |
| 859 MessageKind.INVALID_OVERRIDE_SETTER | 815 ], infos: [ |
| 860 ], | 816 MessageKind.INVALID_OVERRIDDEN_SETTER, |
| 861 infos: [ | 817 MessageKind.INVALID_OVERRIDDEN_SETTER |
| 862 MessageKind.INVALID_OVERRIDDEN_SETTER, | 818 ]), |
| 863 MessageKind.INVALID_OVERRIDDEN_SETTER | |
| 864 ]), | |
| 865 | 819 |
| 866 check( | 820 check(""" |
| 867 """ | |
| 868 class A { | 821 class A { |
| 869 set setter(int _) => null; // testSetterNotSubtype:26 | 822 set setter(int _) => null; // testSetterNotSubtype:26 |
| 870 } | 823 } |
| 871 class B { | 824 class B { |
| 872 set setter(String _) => null; // testSetterNotSubtype:27 | 825 set setter(String _) => null; // testSetterNotSubtype:27 |
| 873 } | 826 } |
| 874 class Class implements A, B { | 827 class Class implements A, B { |
| 875 set setter(double _) => null; // testSetterNotSubtype:28 | 828 set setter(double _) => null; // testSetterNotSubtype:28 |
| 876 } | 829 } |
| 877 """, | 830 """, warnings: [ |
| 878 warnings: [ | 831 MessageKind.INVALID_OVERRIDE_SETTER, |
| 879 MessageKind.INVALID_OVERRIDE_SETTER, | 832 MessageKind.INVALID_OVERRIDE_SETTER |
| 880 MessageKind.INVALID_OVERRIDE_SETTER | 833 ], infos: [ |
| 881 ], | 834 MessageKind.INVALID_OVERRIDDEN_SETTER, |
| 882 infos: [ | 835 MessageKind.INVALID_OVERRIDDEN_SETTER |
| 883 MessageKind.INVALID_OVERRIDDEN_SETTER, | 836 ]), |
| 884 MessageKind.INVALID_OVERRIDDEN_SETTER | |
| 885 ]), | |
| 886 | 837 |
| 887 // TODO(johnniwinther): These are unclear. Issue 16443 has been filed. | 838 // TODO(johnniwinther): These are unclear. Issue 16443 has been filed. |
| 888 check( | 839 check(""" |
| 889 """ | |
| 890 class A { | 840 class A { |
| 891 set setter(int _) => null; // testSetterNotSubtype:29 | 841 set setter(int _) => null; // testSetterNotSubtype:29 |
| 892 } | 842 } |
| 893 class B { | 843 class B { |
| 894 set setter(num _) => null; // testSetterNotSubtype:30 | 844 set setter(num _) => null; // testSetterNotSubtype:30 |
| 895 } | 845 } |
| 896 abstract class C implements A, B { | 846 abstract class C implements A, B { |
| 897 } | 847 } |
| 898 class Class implements C { | 848 class Class implements C { |
| 899 set setter(double _) => null; // testSetterNotSubtype:31 | 849 set setter(double _) => null; // testSetterNotSubtype:31 |
| 900 } | 850 } |
| 901 """, | 851 """, |
| 902 warnings: MessageKind.INVALID_OVERRIDE_SETTER, | 852 warnings: MessageKind.INVALID_OVERRIDE_SETTER, |
| 903 infos: MessageKind.INVALID_OVERRIDDEN_SETTER), | 853 infos: MessageKind.INVALID_OVERRIDDEN_SETTER), |
| 904 | 854 |
| 905 check( | 855 check(""" |
| 906 """ | |
| 907 class A { | 856 class A { |
| 908 set setter(int _) => null; // testSetterNotSubtype:32 | 857 set setter(int _) => null; // testSetterNotSubtype:32 |
| 909 } | 858 } |
| 910 class B { | 859 class B { |
| 911 set setter(num _) => null; // testSetterNotSubtype:33 | 860 set setter(num _) => null; // testSetterNotSubtype:33 |
| 912 } | 861 } |
| 913 abstract class C implements A, B { | 862 abstract class C implements A, B { |
| 914 } | 863 } |
| 915 class Class implements C { | 864 class Class implements C { |
| 916 set setter(String _) => null; // testSetterNotSubtype:34 | 865 set setter(String _) => null; // testSetterNotSubtype:34 |
| 917 } | 866 } |
| 918 """, | 867 """, warnings: [ |
| 919 warnings: [ | 868 MessageKind.INVALID_OVERRIDE_SETTER, |
| 920 MessageKind.INVALID_OVERRIDE_SETTER, | 869 MessageKind.INVALID_OVERRIDE_SETTER |
| 921 MessageKind.INVALID_OVERRIDE_SETTER | 870 ], infos: [ |
| 922 ], | 871 MessageKind.INVALID_OVERRIDDEN_SETTER, |
| 923 infos: [ | 872 MessageKind.INVALID_OVERRIDDEN_SETTER |
| 924 MessageKind.INVALID_OVERRIDDEN_SETTER, | 873 ]), |
| 925 MessageKind.INVALID_OVERRIDDEN_SETTER | |
| 926 ]), | |
| 927 ]); | 874 ]); |
| 928 } | 875 } |
| 929 | 876 |
| 930 Future testFieldNotSubtype() { | 877 Future testFieldNotSubtype() { |
| 931 return Future.wait([ | 878 return Future.wait([ |
| 932 check(""" | 879 check(""" |
| 933 class A { | 880 class A { |
| 934 int field; // testFieldNotSubtype:1 | 881 int field; // testFieldNotSubtype:1 |
| 935 } | 882 } |
| 936 class Class extends A { | 883 class Class extends A { |
| 937 int field; // testFieldNotSubtype:2 | 884 int field; // testFieldNotSubtype:2 |
| 938 } | 885 } |
| 939 """), | 886 """), |
| 940 check(""" | 887 check(""" |
| 941 class A { | 888 class A { |
| 942 num field; // testFieldNotSubtype:3 | 889 num field; // testFieldNotSubtype:3 |
| 943 } | 890 } |
| 944 class Class extends A { | 891 class Class extends A { |
| 945 int field; // testFieldNotSubtype:4 | 892 int field; // testFieldNotSubtype:4 |
| 946 } | 893 } |
| 947 """), | 894 """), |
| 948 check(""" | 895 check(""" |
| 949 class A { | 896 class A { |
| 950 int field; // testFieldNotSubtype:5 | 897 int field; // testFieldNotSubtype:5 |
| 951 } | 898 } |
| 952 class Class extends A { | 899 class Class extends A { |
| 953 num field; // testFieldNotSubtype:6 | 900 num field; // testFieldNotSubtype:6 |
| 954 } | 901 } |
| 955 """), | 902 """), |
| 956 check( | 903 check(""" |
| 957 """ | |
| 958 class A { | 904 class A { |
| 959 int field; // testFieldNotSubtype:7 | 905 int field; // testFieldNotSubtype:7 |
| 960 } | 906 } |
| 961 class Class extends A { | 907 class Class extends A { |
| 962 double field; // testFieldNotSubtype:8 | 908 double field; // testFieldNotSubtype:8 |
| 963 } | 909 } |
| 964 """, | 910 """, |
| 965 warnings: MessageKind.INVALID_OVERRIDE_FIELD, | 911 warnings: MessageKind.INVALID_OVERRIDE_FIELD, |
| 966 infos: MessageKind.INVALID_OVERRIDDEN_FIELD), | 912 infos: MessageKind.INVALID_OVERRIDDEN_FIELD), |
| 967 check(""" | 913 check(""" |
| 968 class A { | 914 class A { |
| 969 int field; // testFieldNotSubtype:9 | 915 int field; // testFieldNotSubtype:9 |
| 970 } | 916 } |
| 971 class B extends A { | 917 class B extends A { |
| 972 num field; // testFieldNotSubtype:10 | 918 num field; // testFieldNotSubtype:10 |
| 973 } | 919 } |
| 974 class Class extends B { | 920 class Class extends B { |
| 975 double field; // testFieldNotSubtype:11 | 921 double field; // testFieldNotSubtype:11 |
| 976 } | 922 } |
| 977 """), | 923 """), |
| 978 check(""" | 924 check(""" |
| 979 class A { | 925 class A { |
| 980 num field; // testFieldNotSubtype:12 | 926 num field; // testFieldNotSubtype:12 |
| 981 } | 927 } |
| 982 class Class extends A { | 928 class Class extends A { |
| 983 int get field => null; // testFieldNotSubtype:13 | 929 int get field => null; // testFieldNotSubtype:13 |
| 984 } | 930 } |
| 985 """), | 931 """), |
| 986 check( | 932 check(""" |
| 987 """ | |
| 988 class A { | 933 class A { |
| 989 num field; // testFieldNotSubtype:14 | 934 num field; // testFieldNotSubtype:14 |
| 990 } | 935 } |
| 991 class Class extends A { | 936 class Class extends A { |
| 992 String get field => null; // testFieldNotSubtype:15 | 937 String get field => null; // testFieldNotSubtype:15 |
| 993 } | 938 } |
| 994 """, | 939 """, |
| 995 warnings: MessageKind.INVALID_OVERRIDE_FIELD_WITH_GETTER, | 940 warnings: MessageKind.INVALID_OVERRIDE_FIELD_WITH_GETTER, |
| 996 infos: MessageKind.INVALID_OVERRIDDEN_FIELD), | 941 infos: MessageKind.INVALID_OVERRIDDEN_FIELD), |
| 997 check( | 942 check(""" |
| 998 """ | |
| 999 class A { | 943 class A { |
| 1000 num get field => null; // testFieldNotSubtype:16 | 944 num get field => null; // testFieldNotSubtype:16 |
| 1001 } | 945 } |
| 1002 class Class extends A { | 946 class Class extends A { |
| 1003 String field; // testFieldNotSubtype:17 | 947 String field; // testFieldNotSubtype:17 |
| 1004 } | 948 } |
| 1005 """, | 949 """, |
| 1006 warnings: MessageKind.INVALID_OVERRIDE_GETTER_WITH_FIELD, | 950 warnings: MessageKind.INVALID_OVERRIDE_GETTER_WITH_FIELD, |
| 1007 infos: MessageKind.INVALID_OVERRIDDEN_GETTER), | 951 infos: MessageKind.INVALID_OVERRIDDEN_GETTER), |
| 1008 check(""" | 952 check(""" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1030 } | 974 } |
| 1031 """), | 975 """), |
| 1032 check(""" | 976 check(""" |
| 1033 class A { | 977 class A { |
| 1034 void set field(int _) {} // testFieldNotSubtype:23 | 978 void set field(int _) {} // testFieldNotSubtype:23 |
| 1035 } | 979 } |
| 1036 class Class extends A { | 980 class Class extends A { |
| 1037 num field; // testFieldNotSubtype:24 | 981 num field; // testFieldNotSubtype:24 |
| 1038 } | 982 } |
| 1039 """), | 983 """), |
| 1040 check( | 984 check(""" |
| 1041 """ | |
| 1042 class A { | 985 class A { |
| 1043 num field; // testFieldNotSubtype:25 | 986 num field; // testFieldNotSubtype:25 |
| 1044 } | 987 } |
| 1045 class Class extends A { | 988 class Class extends A { |
| 1046 set field(String _) {} // testFieldNotSubtype:26 | 989 set field(String _) {} // testFieldNotSubtype:26 |
| 1047 } | 990 } |
| 1048 """, | 991 """, |
| 1049 warnings: MessageKind.INVALID_OVERRIDE_FIELD_WITH_SETTER, | 992 warnings: MessageKind.INVALID_OVERRIDE_FIELD_WITH_SETTER, |
| 1050 infos: MessageKind.INVALID_OVERRIDDEN_FIELD), | 993 infos: MessageKind.INVALID_OVERRIDDEN_FIELD), |
| 1051 check( | 994 check(""" |
| 1052 """ | |
| 1053 class A { | 995 class A { |
| 1054 set field(num _) {} // testFieldNotSubtype:27 | 996 set field(num _) {} // testFieldNotSubtype:27 |
| 1055 } | 997 } |
| 1056 class Class extends A { | 998 class Class extends A { |
| 1057 String field; // testFieldNotSubtype:28 | 999 String field; // testFieldNotSubtype:28 |
| 1058 } | 1000 } |
| 1059 """, | 1001 """, |
| 1060 warnings: MessageKind.INVALID_OVERRIDE_SETTER_WITH_FIELD, | 1002 warnings: MessageKind.INVALID_OVERRIDE_SETTER_WITH_FIELD, |
| 1061 infos: MessageKind.INVALID_OVERRIDDEN_SETTER), | 1003 infos: MessageKind.INVALID_OVERRIDDEN_SETTER), |
| 1062 check( | 1004 check(""" |
| 1063 """ | |
| 1064 class A { | 1005 class A { |
| 1065 int field; // testFieldNotSubtype:29 | 1006 int field; // testFieldNotSubtype:29 |
| 1066 } | 1007 } |
| 1067 class Class implements A { | 1008 class Class implements A { |
| 1068 String get field => null; // testFieldNotSubtype:30 | 1009 String get field => null; // testFieldNotSubtype:30 |
| 1069 void set field(String s) {} // testFieldNotSubtype:31 | 1010 void set field(String s) {} // testFieldNotSubtype:31 |
| 1070 } | 1011 } |
| 1071 """, | 1012 """, warnings: [ |
| 1072 warnings: [ | 1013 MessageKind.INVALID_OVERRIDE_FIELD_WITH_GETTER, |
| 1073 MessageKind.INVALID_OVERRIDE_FIELD_WITH_GETTER, | 1014 MessageKind.INVALID_OVERRIDE_FIELD_WITH_SETTER |
| 1074 MessageKind.INVALID_OVERRIDE_FIELD_WITH_SETTER | 1015 ], infos: [ |
| 1075 ], | 1016 MessageKind.INVALID_OVERRIDDEN_FIELD, |
| 1076 infos: [ | 1017 MessageKind.INVALID_OVERRIDDEN_FIELD |
| 1077 MessageKind.INVALID_OVERRIDDEN_FIELD, | 1018 ]), |
| 1078 MessageKind.INVALID_OVERRIDDEN_FIELD | 1019 check(""" |
| 1079 ]), | |
| 1080 check( | |
| 1081 """ | |
| 1082 class A { | 1020 class A { |
| 1083 String get field => null; // testFieldNotSubtype:32 | 1021 String get field => null; // testFieldNotSubtype:32 |
| 1084 void set field(String s) {} // testFieldNotSubtype:33 | 1022 void set field(String s) {} // testFieldNotSubtype:33 |
| 1085 } | 1023 } |
| 1086 class Class implements A { | 1024 class Class implements A { |
| 1087 int field; // testFieldNotSubtype:34 | 1025 int field; // testFieldNotSubtype:34 |
| 1088 } | 1026 } |
| 1089 """, | 1027 """, warnings: [ |
| 1090 warnings: [ | 1028 MessageKind.INVALID_OVERRIDE_GETTER_WITH_FIELD, |
| 1091 MessageKind.INVALID_OVERRIDE_GETTER_WITH_FIELD, | 1029 MessageKind.INVALID_OVERRIDE_SETTER_WITH_FIELD |
| 1092 MessageKind.INVALID_OVERRIDE_SETTER_WITH_FIELD | 1030 ], infos: [ |
| 1093 ], | 1031 MessageKind.INVALID_OVERRIDDEN_GETTER, |
| 1094 infos: [ | 1032 MessageKind.INVALID_OVERRIDDEN_SETTER |
| 1095 MessageKind.INVALID_OVERRIDDEN_GETTER, | 1033 ]), |
| 1096 MessageKind.INVALID_OVERRIDDEN_SETTER | |
| 1097 ]), | |
| 1098 ]); | 1034 ]); |
| 1099 } | 1035 } |
| 1100 | 1036 |
| 1101 Future testMixedOverride() { | 1037 Future testMixedOverride() { |
| 1102 return Future.wait([ | 1038 return Future.wait([ |
| 1103 check( | 1039 check(""" |
| 1104 """ | |
| 1105 class A { | 1040 class A { |
| 1106 var member; // testMixedOverride:1 | 1041 var member; // testMixedOverride:1 |
| 1107 } | 1042 } |
| 1108 class Class extends A { | 1043 class Class extends A { |
| 1109 member() {} // testMixedOverride:2 | 1044 member() {} // testMixedOverride:2 |
| 1110 } | 1045 } |
| 1111 """, | 1046 """, |
| 1112 errors: MessageKind.CANNOT_OVERRIDE_FIELD_WITH_METHOD, | 1047 errors: MessageKind.CANNOT_OVERRIDE_FIELD_WITH_METHOD, |
| 1113 infos: MessageKind.CANNOT_OVERRIDE_FIELD_WITH_METHOD_CONT), | 1048 infos: MessageKind.CANNOT_OVERRIDE_FIELD_WITH_METHOD_CONT), |
| 1114 check( | 1049 check(""" |
| 1115 """ | |
| 1116 class A { | 1050 class A { |
| 1117 member() {} // testMixedOverride:3 | 1051 member() {} // testMixedOverride:3 |
| 1118 } | 1052 } |
| 1119 class Class extends A { | 1053 class Class extends A { |
| 1120 var member; // testMixedOverride:4 | 1054 var member; // testMixedOverride:4 |
| 1121 } | 1055 } |
| 1122 """, | 1056 """, |
| 1123 errors: MessageKind.CANNOT_OVERRIDE_METHOD_WITH_FIELD, | 1057 errors: MessageKind.CANNOT_OVERRIDE_METHOD_WITH_FIELD, |
| 1124 infos: MessageKind.CANNOT_OVERRIDE_METHOD_WITH_FIELD_CONT), | 1058 infos: MessageKind.CANNOT_OVERRIDE_METHOD_WITH_FIELD_CONT), |
| 1125 check( | 1059 check(""" |
| 1126 """ | |
| 1127 class A { | 1060 class A { |
| 1128 get member => null; // testMixedOverride:5 | 1061 get member => null; // testMixedOverride:5 |
| 1129 } | 1062 } |
| 1130 class Class extends A { | 1063 class Class extends A { |
| 1131 member() {} // testMixedOverride:6 | 1064 member() {} // testMixedOverride:6 |
| 1132 } | 1065 } |
| 1133 """, | 1066 """, |
| 1134 errors: MessageKind.CANNOT_OVERRIDE_GETTER_WITH_METHOD, | 1067 errors: MessageKind.CANNOT_OVERRIDE_GETTER_WITH_METHOD, |
| 1135 infos: MessageKind.CANNOT_OVERRIDE_GETTER_WITH_METHOD_CONT), | 1068 infos: MessageKind.CANNOT_OVERRIDE_GETTER_WITH_METHOD_CONT), |
| 1136 check( | 1069 check(""" |
| 1137 """ | |
| 1138 class A { | 1070 class A { |
| 1139 member() {} // testMixedOverride:7 | 1071 member() {} // testMixedOverride:7 |
| 1140 } | 1072 } |
| 1141 class Class extends A { | 1073 class Class extends A { |
| 1142 get member => null; // testMixedOverride:8 | 1074 get member => null; // testMixedOverride:8 |
| 1143 } | 1075 } |
| 1144 """, | 1076 """, |
| 1145 errors: MessageKind.CANNOT_OVERRIDE_METHOD_WITH_GETTER, | 1077 errors: MessageKind.CANNOT_OVERRIDE_METHOD_WITH_GETTER, |
| 1146 infos: MessageKind.CANNOT_OVERRIDE_METHOD_WITH_GETTER_CONT), | 1078 infos: MessageKind.CANNOT_OVERRIDE_METHOD_WITH_GETTER_CONT), |
| 1147 check(""" | 1079 check(""" |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1299 } | 1231 } |
| 1300 """), | 1232 """), |
| 1301 check(""" | 1233 check(""" |
| 1302 abstract class A { | 1234 abstract class A { |
| 1303 method(); // testAbstractMethod:7 | 1235 method(); // testAbstractMethod:7 |
| 1304 } | 1236 } |
| 1305 class Class extends A { | 1237 class Class extends A { |
| 1306 method([a]) {} // testAbstractMethod:8 | 1238 method([a]) {} // testAbstractMethod:8 |
| 1307 } | 1239 } |
| 1308 """), | 1240 """), |
| 1309 check( | 1241 check(""" |
| 1310 """ | |
| 1311 abstract class A { | 1242 abstract class A { |
| 1312 method(); // testAbstractMethod:9 | 1243 method(); // testAbstractMethod:9 |
| 1313 } | 1244 } |
| 1314 class Class extends A { | 1245 class Class extends A { |
| 1315 } | 1246 } |
| 1316 """, | 1247 """, |
| 1317 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, | 1248 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, |
| 1318 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), | 1249 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), |
| 1319 check( | 1250 check(""" |
| 1320 """ | |
| 1321 abstract class A { | 1251 abstract class A { |
| 1322 get getter; // testAbstractMethod:10 | 1252 get getter; // testAbstractMethod:10 |
| 1323 } | 1253 } |
| 1324 class Class extends A { | 1254 class Class extends A { |
| 1325 } | 1255 } |
| 1326 """, | 1256 """, |
| 1327 warnings: MessageKind.UNIMPLEMENTED_GETTER_ONE, | 1257 warnings: MessageKind.UNIMPLEMENTED_GETTER_ONE, |
| 1328 infos: MessageKind.UNIMPLEMENTED_EXPLICIT_GETTER), | 1258 infos: MessageKind.UNIMPLEMENTED_EXPLICIT_GETTER), |
| 1329 check( | 1259 check(""" |
| 1330 """ | |
| 1331 abstract class A { | 1260 abstract class A { |
| 1332 set setter(_); // testAbstractMethod:11 | 1261 set setter(_); // testAbstractMethod:11 |
| 1333 } | 1262 } |
| 1334 class Class extends A { | 1263 class Class extends A { |
| 1335 } | 1264 } |
| 1336 """, | 1265 """, |
| 1337 warnings: MessageKind.UNIMPLEMENTED_SETTER_ONE, | 1266 warnings: MessageKind.UNIMPLEMENTED_SETTER_ONE, |
| 1338 infos: MessageKind.UNIMPLEMENTED_EXPLICIT_SETTER), | 1267 infos: MessageKind.UNIMPLEMENTED_EXPLICIT_SETTER), |
| 1339 check( | 1268 check( |
| 1340 """ | 1269 """ |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1434 } | 1363 } |
| 1435 """), | 1364 """), |
| 1436 check(""" | 1365 check(""" |
| 1437 class A { | 1366 class A { |
| 1438 method() {} // testAbstractMethod:26 | 1367 method() {} // testAbstractMethod:26 |
| 1439 } | 1368 } |
| 1440 class Class implements A { | 1369 class Class implements A { |
| 1441 method([a]) {} // testAbstractMethod:27 | 1370 method([a]) {} // testAbstractMethod:27 |
| 1442 } | 1371 } |
| 1443 """), | 1372 """), |
| 1444 check( | 1373 check(""" |
| 1445 """ | |
| 1446 class A { | 1374 class A { |
| 1447 method() {} // testAbstractMethod:28 | 1375 method() {} // testAbstractMethod:28 |
| 1448 } | 1376 } |
| 1449 class Class implements A { | 1377 class Class implements A { |
| 1450 } | 1378 } |
| 1451 """, | 1379 """, |
| 1452 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, | 1380 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, |
| 1453 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), | 1381 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), |
| 1454 check(""" | 1382 check(""" |
| 1455 class A { | 1383 class A { |
| 1456 method() {} // testAbstractMethod:29 | 1384 method() {} // testAbstractMethod:29 |
| 1457 } | 1385 } |
| 1458 class B { | 1386 class B { |
| 1459 method() {} // testAbstractMethod:30 | 1387 method() {} // testAbstractMethod:30 |
| 1460 } | 1388 } |
| 1461 class Class extends A implements B { | 1389 class Class extends A implements B { |
| 1462 } | 1390 } |
| 1463 """), | 1391 """), |
| 1464 check( | 1392 check(""" |
| 1465 """ | |
| 1466 class A { | 1393 class A { |
| 1467 var member; // testAbstractMethod:31 | 1394 var member; // testAbstractMethod:31 |
| 1468 } | 1395 } |
| 1469 class Class implements A { | 1396 class Class implements A { |
| 1470 } | 1397 } |
| 1471 """, | 1398 """, warnings: [ |
| 1472 warnings: [ | 1399 MessageKind.UNIMPLEMENTED_GETTER_ONE, |
| 1473 MessageKind.UNIMPLEMENTED_GETTER_ONE, | 1400 MessageKind.UNIMPLEMENTED_SETTER_ONE |
| 1474 MessageKind.UNIMPLEMENTED_SETTER_ONE | 1401 ], infos: [ |
| 1475 ], | 1402 MessageKind.UNIMPLEMENTED_IMPLICIT_GETTER, |
| 1476 infos: [ | 1403 MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER |
| 1477 MessageKind.UNIMPLEMENTED_IMPLICIT_GETTER, | 1404 ]), |
| 1478 MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER | 1405 check(""" |
| 1479 ]), | |
| 1480 check( | |
| 1481 """ | |
| 1482 class A { | 1406 class A { |
| 1483 var member; // testAbstractMethod:32 | 1407 var member; // testAbstractMethod:32 |
| 1484 } | 1408 } |
| 1485 class B { | 1409 class B { |
| 1486 get member => null; // testAbstractMethod:33 | 1410 get member => null; // testAbstractMethod:33 |
| 1487 set member(_) {} // testAbstractMethod:34 | 1411 set member(_) {} // testAbstractMethod:34 |
| 1488 } | 1412 } |
| 1489 class Class implements A, B { | 1413 class Class implements A, B { |
| 1490 } | 1414 } |
| 1491 """, | 1415 """, warnings: [ |
| 1492 warnings: [ | 1416 MessageKind.UNIMPLEMENTED_GETTER, |
| 1493 MessageKind.UNIMPLEMENTED_GETTER, | 1417 MessageKind.UNIMPLEMENTED_SETTER |
| 1494 MessageKind.UNIMPLEMENTED_SETTER | 1418 ], infos: [ |
| 1495 ], | 1419 MessageKind.UNIMPLEMENTED_EXPLICIT_GETTER, |
| 1496 infos: [ | 1420 MessageKind.UNIMPLEMENTED_IMPLICIT_GETTER, |
| 1497 MessageKind.UNIMPLEMENTED_EXPLICIT_GETTER, | 1421 MessageKind.UNIMPLEMENTED_EXPLICIT_SETTER, |
| 1498 MessageKind.UNIMPLEMENTED_IMPLICIT_GETTER, | 1422 MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER |
| 1499 MessageKind.UNIMPLEMENTED_EXPLICIT_SETTER, | 1423 ]), |
| 1500 MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER | 1424 check(""" |
| 1501 ]), | |
| 1502 check( | |
| 1503 """ | |
| 1504 class A { | 1425 class A { |
| 1505 var member; // testAbstractMethod:35 | 1426 var member; // testAbstractMethod:35 |
| 1506 } | 1427 } |
| 1507 class B { | 1428 class B { |
| 1508 var member; // testAbstractMethod:36 | 1429 var member; // testAbstractMethod:36 |
| 1509 } | 1430 } |
| 1510 class Class implements A, B { | 1431 class Class implements A, B { |
| 1511 } | 1432 } |
| 1512 """, | 1433 """, warnings: [ |
| 1513 warnings: [ | 1434 MessageKind.UNIMPLEMENTED_GETTER, |
| 1514 MessageKind.UNIMPLEMENTED_GETTER, | 1435 MessageKind.UNIMPLEMENTED_SETTER |
| 1515 MessageKind.UNIMPLEMENTED_SETTER | 1436 ], infos: [ |
| 1516 ], | 1437 MessageKind.UNIMPLEMENTED_IMPLICIT_GETTER, |
| 1517 infos: [ | 1438 MessageKind.UNIMPLEMENTED_IMPLICIT_GETTER, |
| 1518 MessageKind.UNIMPLEMENTED_IMPLICIT_GETTER, | 1439 MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER, |
| 1519 MessageKind.UNIMPLEMENTED_IMPLICIT_GETTER, | 1440 MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER |
| 1520 MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER, | 1441 ]), |
| 1521 MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER | 1442 check(""" |
| 1522 ]), | |
| 1523 check( | |
| 1524 """ | |
| 1525 class A { | 1443 class A { |
| 1526 get member => 0; // testAbstractMethod:37 | 1444 get member => 0; // testAbstractMethod:37 |
| 1527 } | 1445 } |
| 1528 class Class implements A { | 1446 class Class implements A { |
| 1529 } | 1447 } |
| 1530 """, | 1448 """, |
| 1531 warnings: MessageKind.UNIMPLEMENTED_GETTER_ONE, | 1449 warnings: MessageKind.UNIMPLEMENTED_GETTER_ONE, |
| 1532 infos: MessageKind.UNIMPLEMENTED_EXPLICIT_GETTER), | 1450 infos: MessageKind.UNIMPLEMENTED_EXPLICIT_GETTER), |
| 1533 check( | 1451 check(""" |
| 1534 """ | |
| 1535 class A { | 1452 class A { |
| 1536 set member(_) {} // testAbstractMethod:38 | 1453 set member(_) {} // testAbstractMethod:38 |
| 1537 } | 1454 } |
| 1538 class Class implements A { | 1455 class Class implements A { |
| 1539 } | 1456 } |
| 1540 """, | 1457 """, |
| 1541 warnings: MessageKind.UNIMPLEMENTED_SETTER_ONE, | 1458 warnings: MessageKind.UNIMPLEMENTED_SETTER_ONE, |
| 1542 infos: MessageKind.UNIMPLEMENTED_EXPLICIT_SETTER), | 1459 infos: MessageKind.UNIMPLEMENTED_EXPLICIT_SETTER), |
| 1543 check( | 1460 check(""" |
| 1544 """ | |
| 1545 class A { | 1461 class A { |
| 1546 var member; // testAbstractMethod:39 | 1462 var member; // testAbstractMethod:39 |
| 1547 } | 1463 } |
| 1548 class Class implements A { | 1464 class Class implements A { |
| 1549 get member => 0; | 1465 get member => 0; |
| 1550 } | 1466 } |
| 1551 """, | 1467 """, |
| 1552 warnings: MessageKind.UNIMPLEMENTED_SETTER_ONE, | 1468 warnings: MessageKind.UNIMPLEMENTED_SETTER_ONE, |
| 1553 infos: MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER), | 1469 infos: MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER), |
| 1554 check( | 1470 check(""" |
| 1555 """ | |
| 1556 class A { | 1471 class A { |
| 1557 var field; // testAbstractMethod:40 | 1472 var field; // testAbstractMethod:40 |
| 1558 } | 1473 } |
| 1559 class Class implements A { | 1474 class Class implements A { |
| 1560 final field = 0; // testAbstractMethod:41 | 1475 final field = 0; // testAbstractMethod:41 |
| 1561 } | 1476 } |
| 1562 """, | 1477 """, |
| 1563 warnings: MessageKind.UNIMPLEMENTED_SETTER_ONE, | 1478 warnings: MessageKind.UNIMPLEMENTED_SETTER_ONE, |
| 1564 infos: MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER), | 1479 infos: MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER), |
| 1565 check( | 1480 check(""" |
| 1566 """ | |
| 1567 class A { | 1481 class A { |
| 1568 var member; // testAbstractMethod:42 | 1482 var member; // testAbstractMethod:42 |
| 1569 } | 1483 } |
| 1570 class Class implements A { | 1484 class Class implements A { |
| 1571 set member(_) {} | 1485 set member(_) {} |
| 1572 } | 1486 } |
| 1573 """, | 1487 """, |
| 1574 warnings: MessageKind.UNIMPLEMENTED_GETTER_ONE, | 1488 warnings: MessageKind.UNIMPLEMENTED_GETTER_ONE, |
| 1575 infos: MessageKind.UNIMPLEMENTED_IMPLICIT_GETTER), | 1489 infos: MessageKind.UNIMPLEMENTED_IMPLICIT_GETTER), |
| 1576 check(""" | 1490 check(""" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1614 noSuchMethod(_, [__]) => null; | 1528 noSuchMethod(_, [__]) => null; |
| 1615 method(); // testNoSuchMethod:4 | 1529 method(); // testNoSuchMethod:4 |
| 1616 } | 1530 } |
| 1617 """), | 1531 """), |
| 1618 check(""" | 1532 check(""" |
| 1619 class Class { | 1533 class Class { |
| 1620 noSuchMethod(_); | 1534 noSuchMethod(_); |
| 1621 method(); // testNoSuchMethod:5 | 1535 method(); // testNoSuchMethod:5 |
| 1622 } | 1536 } |
| 1623 """), | 1537 """), |
| 1624 check( | 1538 check(""" |
| 1625 """ | |
| 1626 abstract class A { | 1539 abstract class A { |
| 1627 method(); // testNoSuchMethod:6 | 1540 method(); // testNoSuchMethod:6 |
| 1628 } | 1541 } |
| 1629 class Class extends A { | 1542 class Class extends A { |
| 1630 } | 1543 } |
| 1631 """, | 1544 """, |
| 1632 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, | 1545 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, |
| 1633 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), | 1546 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), |
| 1634 check( | 1547 check(""" |
| 1635 """ | |
| 1636 abstract class A { | 1548 abstract class A { |
| 1637 method(); // testNoSuchMethod:7 | 1549 method(); // testNoSuchMethod:7 |
| 1638 } | 1550 } |
| 1639 @proxy | 1551 @proxy |
| 1640 class Class extends A { | 1552 class Class extends A { |
| 1641 } | 1553 } |
| 1642 """, | 1554 """, |
| 1643 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, | 1555 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, |
| 1644 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), | 1556 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), |
| 1645 check(""" | 1557 check(""" |
| 1646 abstract class A { | 1558 abstract class A { |
| 1647 method(); // testNoSuchMethod:8 | 1559 method(); // testNoSuchMethod:8 |
| 1648 } | 1560 } |
| 1649 class Class extends A { | 1561 class Class extends A { |
| 1650 noSuchMethod(_) => null; | 1562 noSuchMethod(_) => null; |
| 1651 } | 1563 } |
| 1652 """), | 1564 """), |
| 1653 check( | 1565 check(""" |
| 1654 """ | |
| 1655 class A { | 1566 class A { |
| 1656 method() {} // testNoSuchMethod:9 | 1567 method() {} // testNoSuchMethod:9 |
| 1657 } | 1568 } |
| 1658 class Class implements A { | 1569 class Class implements A { |
| 1659 } | 1570 } |
| 1660 """, | 1571 """, |
| 1661 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, | 1572 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, |
| 1662 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), | 1573 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), |
| 1663 check( | 1574 check(""" |
| 1664 """ | |
| 1665 class A { | 1575 class A { |
| 1666 method() {} // testNoSuchMethod:10 | 1576 method() {} // testNoSuchMethod:10 |
| 1667 } | 1577 } |
| 1668 class Class implements A { | 1578 class Class implements A { |
| 1669 } | 1579 } |
| 1670 """, | 1580 """, |
| 1671 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, | 1581 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, |
| 1672 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), | 1582 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), |
| 1673 check( | 1583 check(""" |
| 1674 """ | |
| 1675 class A { | 1584 class A { |
| 1676 method() {} // testNoSuchMethod:11 | 1585 method() {} // testNoSuchMethod:11 |
| 1677 } | 1586 } |
| 1678 @proxy | 1587 @proxy |
| 1679 class Class implements A { | 1588 class Class implements A { |
| 1680 } | 1589 } |
| 1681 """, | 1590 """, |
| 1682 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, | 1591 warnings: MessageKind.UNIMPLEMENTED_METHOD_ONE, |
| 1683 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), | 1592 infos: MessageKind.UNIMPLEMENTED_METHOD_CONT), |
| 1684 check(""" | 1593 check(""" |
| 1685 class A { | 1594 class A { |
| 1686 method() {} // testNoSuchMethod:12 | 1595 method() {} // testNoSuchMethod:12 |
| 1687 } | 1596 } |
| 1688 class Class implements A { | 1597 class Class implements A { |
| 1689 noSuchMethod(_) => null; | 1598 noSuchMethod(_) => null; |
| 1690 } | 1599 } |
| 1691 """), | 1600 """), |
| 1692 check(""" | 1601 check(""" |
| 1693 class A { | 1602 class A { |
| 1694 noSuchMethod(_) => null; | 1603 noSuchMethod(_) => null; |
| 1695 method(); // testNoSuchMethod:13 | 1604 method(); // testNoSuchMethod:13 |
| 1696 } | 1605 } |
| 1697 class Class extends A { | 1606 class Class extends A { |
| 1698 } | 1607 } |
| 1699 """), | 1608 """), |
| 1700 ]); | 1609 ]); |
| 1701 } | 1610 } |
| OLD | NEW |