blob: 5a45b37c304007207e171af03b06b40b9a8b3172 [file] [log] [blame]
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/switch_nullable_enum.dart:7:5: Error: A non-null value must be returned since the return type 'int' doesn't allow null.
// int method1(Enum? e) {
// ^
//
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;
class Enum extends core::Object /*isEnum*/ {
final field core::int index;
final field core::String _name;
static const field core::List<self::Enum> values = #C7;
static const field self::Enum e1 = #C3;
static const field self::Enum e2 = #C6;
const constructor •(core::int index, core::String _name) self::Enum
: self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
;
method toString() core::String
return this.{self::Enum::_name};
}
static method method1(self::Enum? e) core::int {
switch(e) {
#L1:
case #C3:
case #C6:
{
return 0;
}
}
return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/switch_nullable_enum.dart:7:5: Error: A non-null value must be returned since the return type 'int' doesn't allow null.
int method1(Enum? e) {
^" in null;
}
static method method2(self::Enum? e) → core::int {
switch(e) {
#L2:
case #C3:
case #C6:
{
return 0;
}
#L3:
case #C8:
{
return 1;
}
#L4:
default:
throw new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable enum type.");
}
}
static method method3(self::Enum? e) → core::int {
switch(e) {
#L5:
case #C3:
case #C6:
{
return 0;
}
#L6:
default:
{
return 1;
}
}
}
static method method4(self::Enum? e) → core::int {
switch(e) {
#L7:
case #C3:
case #C6:
{
return 0;
}
#L8:
case #C8:
default:
{
return 1;
}
}
}
static method test() → dynamic {
self::method1(#C3);
}
static method main() → dynamic {
self::expect(0, self::method2(#C3));
self::expect(0, self::method2(#C6));
self::expect(1, self::method2(null));
self::expect(0, self::method3(#C3));
self::expect(0, self::method3(#C6));
self::expect(1, self::method3(null));
self::expect(0, self::method4(#C3));
self::expect(0, self::method4(#C6));
self::expect(1, self::method4(null));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!expected.{core::Object::==}(actual)) {
throw "Expected ${expected}, actual ${actual}.";
}
}
constants {
#C1 = 0
#C2 = "Enum.e1"
#C3 = self::Enum {index:#C1, _name:#C2}
#C4 = 1
#C5 = "Enum.e2"
#C6 = self::Enum {index:#C4, _name:#C5}
#C7 = <self::Enum*>[#C3, #C6]
#C8 = null
}
Constructor coverage from constants:
org-dartlang-testcase:///switch_nullable_enum.dart:
- Enum. (from org-dartlang-testcase:///switch_nullable_enum.dart:5:6)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:31:9)