blob: 0d7d3203c87e8063aab0c6cb9722273be3601ae0 [file] [log] [blame]
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/switch_redesign_types.dart:35:16: Error: Type 'A' of the case expression is not a subtype of type 'B' of this switch expression.
// - 'A' is from 'pkg/front_end/testcases/nnbd/switch_redesign_types.dart'.
// - 'B' is from 'pkg/front_end/testcases/nnbd/switch_redesign_types.dart'.
// case const A(42): // Error: not a subtype of B.
// ^
// pkg/front_end/testcases/nnbd/switch_redesign_types.dart:30:11: Context: The switch expression is here.
// switch (b) {
// ^
//
// pkg/front_end/testcases/nnbd/switch_redesign_types.dart:39:10: Error: Type 'dynamic' of the case expression is not a subtype of type 'B' of this switch expression.
// - 'B' is from 'pkg/front_end/testcases/nnbd/switch_redesign_types.dart'.
// case x: // Error: D has custom operator ==.
// ^
// pkg/front_end/testcases/nnbd/switch_redesign_types.dart:30:11: Context: The switch expression is here.
// switch (b) {
// ^
//
// pkg/front_end/testcases/nnbd/switch_redesign_types.dart:37:16: Error: Case expression 'D {}' does not have a primitive operator '=='.
// - 'D' is from 'pkg/front_end/testcases/nnbd/switch_redesign_types.dart'.
// case const D(42): // Error: D has custom operator ==.
// ^
//
// pkg/front_end/testcases/nnbd/switch_redesign_types.dart:39:10: Error: Case expression 'D {}' does not have a primitive operator '=='.
// - 'D' is from 'pkg/front_end/testcases/nnbd/switch_redesign_types.dart'.
// case x: // Error: D has custom operator ==.
// ^
//
import self as self;
import "dart:core" as core;
class A extends core::Object /*hasConstConstructor*/ {
final field core::int foo;
const constructor •(core::int foo) self::A
: self::A::foo = foo, super core::Object::•()
;
}
class B extends self::A /*hasConstConstructor*/ {
const constructor •(core::int foo) self::B
: super self::A::•(foo)
;
}
class C extends self::B /*hasConstConstructor*/ {
const constructor •(core::int foo) self::C
: super self::B::•(foo)
;
}
class D extends self::B /*hasConstConstructor*/ {
const constructor •(core::int foo) self::D
: super self::B::•(foo)
;
operator ==(dynamic other) core::bool
return core::identical(this, other);
}
static method bar(self::B b) dynamic {
#L1:
switch(b) {
#L2:
case #C2:
{
break #L1;
}
#L3:
case #C3:
{
break #L1;
}
#L4:
case #C4:
{
break #L1;
}
#L5:
case #C5:
{
break #L1;
}
#L6:
case #C7:
{
break #L1;
}
#L7:
default:
{}
}
}
static method main() dynamic {}
constants {
#C1 = 42
#C2 = self::B {foo:#C1}
#C3 = self::C {foo:#C1}
#C4 = self::A {foo:#C1}
#C5 = self::D {foo:#C1}
#C6 = 123
#C7 = self::D {foo:#C6}
}
Constructor coverage from constants:
org-dartlang-testcase:///switch_redesign_types.dart:
- D. (from org-dartlang-testcase:///switch_redesign_types.dart:23:9)
- B. (from org-dartlang-testcase:///switch_redesign_types.dart:15:9)
- A. (from org-dartlang-testcase:///switch_redesign_types.dart:11:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
- C. (from org-dartlang-testcase:///switch_redesign_types.dart:19:9)