library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
import "constant_null_is_lib.dart" as con;

import "dart:async";
import "org-dartlang-testcase:///constant_null_is_lib.dart";

static const field core::bool c0 = #C1;
static const field core::bool c1 = #C2;
static const field core::bool c2 = #C1;
static const field core::bool c3 = #C1;
static const field core::bool c4 = #C2;
static const field core::bool c5 = #C1;
static const field core::bool c6 = #C2;
static const field core::bool c7 = #C1;
static const field core::bool c8 = #C1;
static const field core::bool c9 = #C1;
static const field core::bool c10 = #C2;
static const field core::bool c11 = #C1;
static const field core::bool c12 = #C1;
static method main() → dynamic {
  self::expect(null is{ForNonNullableByDefault} core::int?, #C1, "null is int?");
  self::expect(null is{ForNonNullableByDefault} core::int, #C2, "null is int");
  self::expect(null is{ForNonNullableByDefault} core::Null?, #C1, "null is Null");
  self::expect(null is{ForNonNullableByDefault} Never?, #C1, "null is Never?");
  self::expect(null is{ForNonNullableByDefault} Never, #C2, "null is Never");
  self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::int?>, #C1, "null is FutureOr<int?>");
  self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::int>, #C2, "null is FutureOr<int>");
  self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::int>?, #C1, "null is FutureOr<int>?");
  self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::Null?>, #C1, "null is FutureOr<Null>");
  self::expect(null is{ForNonNullableByDefault} asy::FutureOr<core::Null?>?, #C1, "null is FutureOr<Null>?");
  self::expect(null is{ForNonNullableByDefault} asy::FutureOr<Never>, #C2, "null is FutureOr<Never>");
  self::expect(null is{ForNonNullableByDefault} asy::FutureOr<Never?>, #C1, "null is FutureOr<Never?>");
  self::expect(null is{ForNonNullableByDefault} asy::FutureOr<Never>?, #C1, "null is FutureOr<Never>?");
  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 = #C2;
static const field core::bool* d1 = #C1;
static method test() → dynamic {
  self::expect(null is core::int*, #C2, "null is int (opt-out)");
  self::expect(null is core::Null?, #C1, "null is Null");
}

constants  {
  #C1 = true
  #C2 = false
}
