c1a401c5da
Closes #44641. Closes #44246. Bug: https://github.com/dart-lang/sdk/issues/44641 Bug: https://github.com/dart-lang/sdk/issues/44246 Change-Id: I78cb0514a57ab3adafb3639b09ea8930791da030 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179340 Commit-Queue: Dmitry Stefantsov <dmitryas@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com>
144 lines
9.1 KiB
Plaintext
144 lines
9.1 KiB
Plaintext
library /*isNonNullableByDefault*/;
|
|
import self as self;
|
|
import "dart:core" as core;
|
|
import "constant_null_is_lib.dart" as con;
|
|
|
|
import "dart:async";
|
|
import "org-dartlang-testcase:///constant_null_is_lib.dart";
|
|
|
|
class Class<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
|
final field core::bool field;
|
|
const constructor constructor1(dynamic value) → self::Class<self::Class::T%>
|
|
: self::Class::field = value is{ForNonNullableByDefault} self::Class::T%, super core::Object::•()
|
|
;
|
|
const constructor constructor2(dynamic value) → self::Class<self::Class::T%>
|
|
: self::Class::field = value is{ForNonNullableByDefault} self::Class::T?, super core::Object::•()
|
|
;
|
|
const constructor constructor3(dynamic value) → self::Class<self::Class::T%>
|
|
: self::Class::field = value is{ForNonNullableByDefault} self::Class<self::Class::T%>, super core::Object::•()
|
|
;
|
|
const constructor constructor4(dynamic value) → self::Class<self::Class::T%>
|
|
: self::Class::field = value is{ForNonNullableByDefault} self::Class<self::Class::T%>?, super core::Object::•()
|
|
;
|
|
}
|
|
static final field core::bool isWeakMode = (#C1) is{ForNonNullableByDefault} core::List<core::Object>;
|
|
static const field core::bool c0 = #C2;
|
|
static const field core::bool c1 = #C3;
|
|
static const field core::bool c2 = #C2;
|
|
static const field core::bool c3 = #C2;
|
|
static const field core::bool c4 = #C3;
|
|
static const field core::bool c5 = #C2;
|
|
static const field core::bool c6 = #C3;
|
|
static const field core::bool c7 = #C2;
|
|
static const field core::bool c8 = #C2;
|
|
static const field core::bool c9 = #C2;
|
|
static const field core::bool c10 = #C3;
|
|
static const field core::bool c11 = #C2;
|
|
static const field core::bool c12 = #C2;
|
|
static const field self::Class<core::int> e1 = #C4;
|
|
static const field self::Class<core::List<core::int>> e2 = #C5;
|
|
static const field self::Class<Null> e3 = #C6;
|
|
static const field self::Class<core::int> e4 = #C7;
|
|
static const field self::Class<core::int?> e5 = #C8;
|
|
static const field self::Class<Null> e6 = #C6;
|
|
static const field self::Class<core::int> e7 = #C4;
|
|
static const field self::Class<core::int?> e8 = #C9;
|
|
static const field self::Class<Null> e9 = #C10;
|
|
static const field self::Class<core::int> e10 = #C7;
|
|
static const field self::Class<core::int?> e11 = #C8;
|
|
static const field self::Class<Null> e12 = #C6;
|
|
static method main() → dynamic {
|
|
self::expect(null is{ForNonNullableByDefault} core::int?, #C2, "null is int?");
|
|
self::expect(null is{ForNonNullableByDefault} core::int, #C3, "null is int");
|
|
self::expect(null is{ForNonNullableByDefault} Null, #C2, "null is Null");
|
|
self::expect(null is{ForNonNullableByDefault} Never?, #C2, "null is Never?");
|
|
self::expect(null is{ForNonNullableByDefault} Never, #C3, "null is Never");
|
|
self::expect(null is{ForNonNullableByDefault} FutureOr<core::int?>, #C2, "null is FutureOr<int?>");
|
|
self::expect(null is{ForNonNullableByDefault} FutureOr<core::int>, #C3, "null is FutureOr<int>");
|
|
self::expect(null is{ForNonNullableByDefault} FutureOr<core::int>?, #C2, "null is FutureOr<int>?");
|
|
self::expect(null is{ForNonNullableByDefault} FutureOr<Null>, #C2, "null is FutureOr<Null>");
|
|
self::expect(null is{ForNonNullableByDefault} FutureOr<Null>?, #C2, "null is FutureOr<Null>?");
|
|
self::expect(null is{ForNonNullableByDefault} FutureOr<Never>, #C3, "null is FutureOr<Never>");
|
|
self::expect(null is{ForNonNullableByDefault} FutureOr<Never?>, #C2, "null is FutureOr<Never?>");
|
|
self::expect(null is{ForNonNullableByDefault} FutureOr<Never>?, #C2, "null is FutureOr<Never>?");
|
|
self::expect(new self::Class::constructor1<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor1(null).field");
|
|
self::expect(true, new self::Class::constructor1<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor1(null).field");
|
|
self::expect(self::isWeakMode, (#C5).{self::Class::field}, "const Class<List<int>>.constructor1(<Null>[null]).field");
|
|
self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor1(null).field");
|
|
self::expect(new self::Class::constructor2<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor2(null).field");
|
|
self::expect(true, new self::Class::constructor2<core::int?>(null).{self::Class::field}, "new Class<int?>.constructor2(null).field");
|
|
self::expect(new self::Class::constructor2<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor2(null).field");
|
|
self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor2(null).field");
|
|
self::expect(new self::Class::constructor3<core::int>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor3(null).field");
|
|
self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
|
|
self::expect(new self::Class::constructor3<core::int?>(null).{self::Class::field}, (#C9).{self::Class::field}, "Class<int?>.constructor3(null).field");
|
|
self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}, (#C10).{self::Class::field}, "Class<Null>.constructor3(null).field");
|
|
self::expect(new self::Class::constructor4<core::int>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor4(null).field");
|
|
self::expect(new self::Class::constructor4<core::int?>(null).{self::Class::field}, (#C8).{self::Class::field}, "Class<int?>.constructor4(null).field");
|
|
self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor4(null).field");
|
|
con::test();
|
|
}
|
|
static method expect(dynamic expected, dynamic actual, core::String message) → dynamic {
|
|
if(!expected.{core::Object::==}(actual))
|
|
throw "Expected ${expected}, actual ${actual} for ${message}";
|
|
}
|
|
|
|
library;
|
|
import self as con;
|
|
import "constant_null_is.dart" as self;
|
|
import "dart:core" as core;
|
|
|
|
import "dart:async";
|
|
import "org-dartlang-testcase:///constant_null_is.dart";
|
|
|
|
static const field core::bool* d0 = #C3;
|
|
static const field core::bool* d1 = #C2;
|
|
static const field self::Class<core::int*>* d4 = #C4;
|
|
static const field self::Class<Null>* d5 = #C6;
|
|
static const field self::Class<core::int*>* d6 = #C7;
|
|
static const field self::Class<Null>* d7 = #C6;
|
|
static const field self::Class<core::int*>* d8 = #C4;
|
|
static const field self::Class<Null>* d9 = #C10;
|
|
static const field self::Class<core::int*>* d10 = #C7;
|
|
static const field self::Class<Null>* d11 = #C6;
|
|
static method test() → dynamic {
|
|
self::expect(null is core::int*, #C3, "null is int (opt-out)");
|
|
self::expect(null is Null, #C2, "null is Null");
|
|
self::expect(new self::Class::constructor1<core::int*>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor1(null).field (opt-out)");
|
|
self::expect(new self::Class::constructor1<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor1(null).field (opt-out)");
|
|
self::expect(new self::Class::constructor2<core::int*>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor2(null).field (opt-out)");
|
|
self::expect(new self::Class::constructor2<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor2(null).field (opt-out)");
|
|
self::expect(new self::Class::constructor3<core::int*>(null).{self::Class::field}, (#C4).{self::Class::field}, "Class<int>.constructor3(null).field (opt-out)");
|
|
self::expect(new self::Class::constructor3<Null>(null).{self::Class::field}, (#C10).{self::Class::field}, "Class<Null>.constructor3(null).field (opt-out)");
|
|
self::expect(new self::Class::constructor4<core::int*>(null).{self::Class::field}, (#C7).{self::Class::field}, "Class<int>.constructor4(null).field (opt-out)");
|
|
self::expect(new self::Class::constructor4<Null>(null).{self::Class::field}, (#C6).{self::Class::field}, "Class<Null>.constructor4(null).field (opt-out)");
|
|
}
|
|
|
|
constants {
|
|
#C1 = <Null>[]
|
|
#C2 = true
|
|
#C3 = false
|
|
#C4 = self::Class<core::int*> {field:#C3}
|
|
#C5 = self::Class<core::List<core::int*>*> {field:#C2}
|
|
#C6 = self::Class<Null> {field:#C2}
|
|
#C7 = self::Class<core::int*> {field:#C2}
|
|
#C8 = self::Class<core::int?> {field:#C2}
|
|
#C9 = self::Class<core::int?> {field:#C3}
|
|
#C10 = self::Class<Null> {field:#C3}
|
|
}
|
|
|
|
|
|
Constructor coverage from constants:
|
|
org-dartlang-testcase:///constant_null_is.dart:
|
|
- Class.constructor1 (from org-dartlang-testcase:///constant_null_is.dart:39:9)
|
|
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
|
|
- Class.constructor2 (from org-dartlang-testcase:///constant_null_is.dart:40:9)
|
|
- Class.constructor3 (from org-dartlang-testcase:///constant_null_is.dart:41:9)
|
|
- Class.constructor4 (from org-dartlang-testcase:///constant_null_is.dart:42:9)
|
|
|
|
org-dartlang-testcase:///constant_null_is_lib.dart:
|
|
- Class.constructor1 (from org-dartlang-testcase:///constant_null_is.dart:39:9)
|
|
- Class.constructor2 (from org-dartlang-testcase:///constant_null_is.dart:40:9)
|
|
- Class.constructor3 (from org-dartlang-testcase:///constant_null_is.dart:41:9)
|
|
- Class.constructor4 (from org-dartlang-testcase:///constant_null_is.dart:42:9)
|