blob: e4651a27f5c9c5a34893206efe2afbc5c9cfcdea [file] [log] [blame]
library;
import self as self;
import "never_opt_out_lib.dart" as nev;
import "dart:core" as core;
import "org-dartlang-testcase:///never_opt_out_lib.dart";
class B extends nev::A {
field core::Null? neverField = null;
field core::Null? nullField = null;
synthetic constructor •() self::B*
: super nev::A::•()
;
method neverMethod(core::Null? value) core::Null?
return value;
get neverProperty() core::Null?
return null;
set neverProperty(core::Null? value) void {}
method nullMethod(core::Null? value) core::Null?
return value;
get nullProperty() core::Null?
return null;
set nullProperty(core::Null? value) void {}
}
class C extends nev::A {
field Never* neverField = null;
field Never* nullField = null;
synthetic constructor •() self::C*
: super nev::A::•()
;
method neverMethod(Never* value) Never*
return value;
get neverProperty() Never*
return null;
set neverProperty(Never* value) void {}
method nullMethod(Never* value) Never*
return value;
get nullProperty() Never*
return null;
set nullProperty(Never* value) void {}
}
static field Never* optOutNever;
static field core::Null? inferredOptOutNever = nev::optInNever;
static method main() dynamic {
Never* localNever = null;
core::Null? localNull = null;
Never inferredLocalNever = nev::optInNever;
localNever = localNever;
self::optOutNever = localNever;
nev::optInNever = localNever;
localNull = localNever;
self::inferredOptOutNever = localNever;
inferredLocalNever = localNever;
localNever = self::optOutNever;
self::optOutNever = self::optOutNever;
nev::optInNever = self::optOutNever;
localNull = self::optOutNever;
self::inferredOptOutNever = self::optOutNever;
inferredLocalNever = self::optOutNever;
localNever = nev::optInNever;
self::optOutNever = nev::optInNever;
nev::optInNever = nev::optInNever;
localNull = nev::optInNever;
self::inferredOptOutNever = nev::optInNever;
inferredLocalNever = nev::optInNever;
localNever = localNull;
self::optOutNever = localNull;
nev::optInNever = localNull as{TypeError} Never;
localNull = localNull;
self::inferredOptOutNever = localNull;
inferredLocalNever = localNull as{TypeError} Never;
localNever = self::inferredOptOutNever;
self::optOutNever = self::inferredOptOutNever;
nev::optInNever = self::inferredOptOutNever as{TypeError} Never;
localNull = self::inferredOptOutNever;
self::inferredOptOutNever = self::inferredOptOutNever;
inferredLocalNever = self::inferredOptOutNever as{TypeError} Never;
localNever = inferredLocalNever;
self::optOutNever = inferredLocalNever;
nev::optInNever = inferredLocalNever;
localNull = inferredLocalNever;
self::inferredOptOutNever = inferredLocalNever;
inferredLocalNever = inferredLocalNever;
self::throws(() Never => self::optOutNever = nev::throwing());
self::throws(() Never => localNever = nev::throwing());
self::throws(() Never => self::optOutNever = nev::throwing());
self::throws(() Never => nev::optInNever = nev::throwing());
self::throws(() Never => self::inferredOptOutNever = nev::throwing());
self::throws(() Never => inferredLocalNever = nev::throwing());
}
static method throws(() →* void f) dynamic {
try {
f.call();
}
on dynamic catch(final dynamic _) {
return;
}
throw "Expected exception";
}
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/never_opt_out_lib.dart:19:28: Warning: Assigning value of type 'Type' to a variable of type 'Null?'.
// - 'Type' is from 'dart:core'.
// Null get nullProperty => Null;
// ^
//
import self as nev;
import "dart:core" as core;
import "never_opt_out.dart" as self;
import "org-dartlang-testcase:///never_opt_out.dart";
class A extends core::Object {
field Never neverField = throw "Should not reach here";
field core::Null? nullField = null;
synthetic constructor •() nev::A
: super core::Object::•()
;
method neverMethod(Never value) Never
return value;
get neverProperty() Never
return throw "Should not reach here";
set neverProperty(Never value) void {}
method nullMethod(core::Null? value) core::Null?
return value;
get nullProperty() core::Null?
return core::Null? as{TypeError,ForNonNullableByDefault} core::Null?;
set nullProperty(core::Null? value) void {}
}
static field Never optInNever = self::optOutNever;
static method throwing() Never
return throw "Never!";