0196a5b296
Eventually, these hints should probably be moved over to warnings. But for now, this makes it possible to write static error language tests that validate that analyzer produces unreachable case warnings/hints where expected. Also updated the patterns/ and switch/ tests now that those errors must be expected by the test. Change-Id: If1fb92602c4bde2819b9eec73598033009054947 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291967 Auto-Submit: Bob Nystrom <rnystrom@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Samuel Rawlins <srawlins@google.com> Commit-Queue: Bob Nystrom <rnystrom@google.com>
54 lines
959 B
Dart
54 lines
959 B
Dart
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
class A {
|
|
const A();
|
|
const factory A.B() = B;
|
|
const factory A.C() = C;
|
|
const factory A.C2() = D;
|
|
}
|
|
|
|
class B implements A {
|
|
const B();
|
|
}
|
|
|
|
class C implements D {
|
|
final int x;
|
|
const C() : x = 0;
|
|
const C.fromD() : x = 1;
|
|
}
|
|
|
|
class D implements A {
|
|
int get x => 0;
|
|
const factory D() = C.fromD;
|
|
}
|
|
|
|
main() {
|
|
switch (new C()) {
|
|
case const C():
|
|
Expect.fail("bad switch");
|
|
break;
|
|
}
|
|
|
|
switch (new C()) {
|
|
case const A.C() as C:
|
|
Expect.fail("bad switch");
|
|
break;
|
|
}
|
|
|
|
switch (new C()) {
|
|
case const A.C2() as C:
|
|
Expect.fail("bad switch");
|
|
break;
|
|
}
|
|
|
|
switch (new A()) {
|
|
case const A():
|
|
Expect.fail("bad switch");
|
|
break;
|
|
}
|
|
}
|