library;
//
// Problems in library:
//
// pkg/front_end/testcases/none/property_get.dart:55:32: Error: Not a constant expression.
//   const dynamic instance_get = nullableClass1.field;
//                                ^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/none/property_get.dart:63:36: Error: Not a constant expression.
//   const dynamic instance_tearOff = nonNullableClass1.method;
//                                    ^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/none/property_get.dart:82:27: Error: Not a constant expression.
//   const dynamic dyn_get = dyn.field;
//                           ^^^
//
// pkg/front_end/testcases/none/property_get.dart:106:36: Error: Not a constant expression.
//   const dynamic function_tearOff = nonNullableFunction.call;
//                                    ^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/none/property_get.dart:67:18: Error: Can't tear off method 'call' from a potentially null value.
//   Function? f2 = nullableClass2;
//                  ^
//
// pkg/front_end/testcases/none/property_get.dart:110:27: Error: Too few positional arguments: 1 required, 0 given.
//   nonNullableClass1.method().field;
//                           ^
//
// pkg/front_end/testcases/none/property_get.dart:113:21: Error: The getter 'unresolved' isn't defined for the type 'Class1'.
//  - 'Class1' is from 'pkg/front_end/testcases/none/property_get.dart'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'unresolved'.
//   nonNullableClass1.unresolved;
//                     ^^^^^^^^^^
//
import self as self;
import "dart:core" as core;

class Class1 extends core::Object {
  field core::int field;
  static field core::int staticField = 42;
  constructor •(core::int field) → self::Class1
    : self::Class1::field = field, super core::Object::•()
    ;
  method method(core::double o) → core::int
    return 0;
  static method staticMethod(core::double o) → core::int
    return 0;
}
class Class2<T extends core::Object? = dynamic> extends core::Object {
  covariant-by-class field self::Class2::T% field;
  constructor •(self::Class2::T% field) → self::Class2<self::Class2::T%>
    : self::Class2::field = field, super core::Object::•()
    ;
  method call() → core::int
    return 42;
}
static field core::int topLevelField = 42;
static const field core::String string = #C1;
static const field core::int stringLength = #C2;
static const field dynamic dynamicString = #C1;
static const field core::int dynamicStringLength = #C2;
static method topLevelMethod(core::double o) → core::int
  return 0;
static method test<T1 extends core::Function, T2 extends () → core::int>(self::Class1 nonNullableClass1, self::Class1? nullableClass1, dynamic dyn, Never never, self::Class2<core::String> nonNullableClass2, self::Class2<core::String>? nullableClass2, core::Function nonNullableFunction, core::Function? nullableFunction, () → core::int nonNullableFunctionType, () →? core::int nullableFunctionType, self::test::T1 nonNullableTypeVariable1, self::test::T1? nullableTypeVariable1, self::test::T2 nonNullableTypeVariable2, self::test::T2? nullableTypeVariable2) → dynamic {
  core::print("InstanceGet");
  nonNullableClass1.{self::Class1::field}{core::int};
  let final self::Class1? #t1 = nullableClass1 in #t1 == null ?{core::int?} null : #t1{self::Class1}.{self::Class1::field}{core::int};
  nonNullableClass2.{self::Class2::field}{core::String};
  let final self::Class2<core::String>? #t2 = nullableClass2 in #t2 == null ?{core::String?} null : #t2{self::Class2<core::String>}.{self::Class2::field}{core::String};
  const dynamic instance_get = invalid-expression "pkg/front_end/testcases/none/property_get.dart:55:32: Error: Not a constant expression.
  const dynamic instance_get = nullableClass1.field;
                               ^^^^^^^^^^^^^^";
  core::print(invalid-expression "pkg/front_end/testcases/none/property_get.dart:55:32: Error: Not a constant expression.
  const dynamic instance_get = nullableClass1.field;
                               ^^^^^^^^^^^^^^");
  core::print("InstanceTearOff");
  nonNullableClass1.{self::Class1::method}{(core::double) → core::int};
  let final self::Class1? #t3 = nullableClass1 in #t3 == null ?{(core::double) →? core::int} null : #t3{self::Class1}.{self::Class1::method}{(core::double) → core::int};
  nonNullableClass2.{self::Class2::call}{() → core::int};
  let final self::Class2<core::String>? #t4 = nullableClass2 in #t4 == null ?{() →? core::int} null : #t4{self::Class2<core::String>}.{self::Class2::call}{() → core::int};
  const dynamic instance_tearOff = invalid-expression "pkg/front_end/testcases/none/property_get.dart:63:36: Error: Not a constant expression.
  const dynamic instance_tearOff = nonNullableClass1.method;
                                   ^^^^^^^^^^^^^^^^^";
  core::print(invalid-expression "pkg/front_end/testcases/none/property_get.dart:63:36: Error: Not a constant expression.
  const dynamic instance_tearOff = nonNullableClass1.method;
                                   ^^^^^^^^^^^^^^^^^");
  core::Function f1 = let final self::Class2<core::String> #t5 = nonNullableClass2 in #t5 == null ?{() → core::int} null : #t5.{self::Class2::call}{() → core::int};
  core::Function? f2 = invalid-expression "pkg/front_end/testcases/none/property_get.dart:67:18: Error: Can't tear off method 'call' from a potentially null value.
  Function? f2 = nullableClass2;
                 ^" in nullableClass2 as{TypeError} core::Function?;
  core::print("StaticGet");
  self::Class1::staticField;
  self::topLevelField;
  core::print("StaticTearOff");
  #C3;
  #C4;
  core::print(#C4);
  core::print("DynamicGet");
  dyn{dynamic}.field;
  let final dynamic #t6 = dyn in #t6 == null ?{dynamic} null : #t6{dynamic}.field;
  const dynamic dyn_get = invalid-expression "pkg/front_end/testcases/none/property_get.dart:82:27: Error: Not a constant expression.
  const dynamic dyn_get = dyn.field;
                          ^^^";
  core::print(invalid-expression "pkg/front_end/testcases/none/property_get.dart:82:27: Error: Not a constant expression.
  const dynamic dyn_get = dyn.field;
                          ^^^");
  core::print("InstanceGet (Object)");
  dyn.{core::Object::hashCode}{<object>}.{core::int};
  nullableClass1.{core::Object::hashCode}{<object>}.{core::int};
  core::print("InstanceGetTearOff (Object)");
  dyn.{core::Object::toString}{<object>}.{() → core::String};
  nullableClass1.{core::Object::toString}{<object>}.{() → core::String};
  core::print("DynamicGet (Never)");
  never{Never}.field;
  never{Never}.hashCode;
  core::print("FunctionTearOff");
  nonNullableFunction.call;
  let final core::Function? #t7 = nullableFunction in #t7 == null ?{core::Function?} null : #t7{core::Function}.call;
  nonNullableFunctionType.call;
  let final () →? core::int #t8 = nullableFunctionType in #t8 == null ?{() →? core::int} null : #t8{() → core::int}.call;
  nonNullableTypeVariable1.call;
  let final self::test::T1? #t9 = nullableTypeVariable1 in #t9 == null ?{self::test::T1?} null : #t9{self::test::T1}.call;
  nonNullableTypeVariable2.call;
  let final self::test::T2? #t10 = nullableTypeVariable2 in #t10 == null ?{self::test::T2?} null : #t10{self::test::T2}.call;
  const dynamic function_tearOff = invalid-expression "pkg/front_end/testcases/none/property_get.dart:106:36: Error: Not a constant expression.
  const dynamic function_tearOff = nonNullableFunction.call;
                                   ^^^^^^^^^^^^^^^^^^^";
  core::print(invalid-expression "pkg/front_end/testcases/none/property_get.dart:106:36: Error: Not a constant expression.
  const dynamic function_tearOff = nonNullableFunction.call;
                                   ^^^^^^^^^^^^^^^^^^^");
  core::print("DynamicGet (Invalid)");
  invalid-expression "pkg/front_end/testcases/none/property_get.dart:110:27: Error: Too few positional arguments: 1 required, 0 given.
  nonNullableClass1.method().field;
                          ^" in nonNullableClass1.{self::Class1::method}{<inapplicable>}.(){() → invalid-type}{<invalid>}.field;
  core::print("DynamicGet (Unresolved)");
  invalid-expression "pkg/front_end/testcases/none/property_get.dart:113:21: Error: The getter 'unresolved' isn't defined for the type 'Class1'.
 - 'Class1' is from 'pkg/front_end/testcases/none/property_get.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'unresolved'.
  nonNullableClass1.unresolved;
                    ^^^^^^^^^^" in nonNullableClass1{<unresolved>}.unresolved;
}
static method main() → dynamic {}

constants  {
  #C1 = "foo"
  #C2 = 3
  #C3 = static-tearoff self::Class1::staticMethod
  #C4 = static-tearoff self::topLevelMethod
}
