library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/constants/various2.dart:162:3: Error: A const constructor can't have a body.
// Try removing either the 'const' keyword or the body.
//   const ClassWithNonEmptyConstConstructor() {
//   ^^^^^
//
// pkg/front_end/testcases/general/constants/various2.dart:76:14: Error: Not a constant expression.
// const x1 = --x;
//              ^
//
// pkg/front_end/testcases/general/constants/various2.dart:77:14: Error: Not a constant expression.
// const x2 = ++x;
//              ^
//
// pkg/front_end/testcases/general/constants/various2.dart:78:12: Error: Not a constant expression.
// const x3 = x--;
//            ^
//
// pkg/front_end/testcases/general/constants/various2.dart:79:12: Error: Not a constant expression.
// const x4 = x++;
//            ^
//
// pkg/front_end/testcases/general/constants/various2.dart:82:14: Error: Setter not found: 'y'.
// const y1 = --y;
//              ^
//
// pkg/front_end/testcases/general/constants/various2.dart:83:14: Error: Setter not found: 'y'.
// const y2 = ++y;
//              ^
//
// pkg/front_end/testcases/general/constants/various2.dart:84:12: Error: Setter not found: 'y'.
// const y3 = y--;
//            ^
//
// pkg/front_end/testcases/general/constants/various2.dart:85:12: Error: Setter not found: 'y'.
// const y4 = y++;
//            ^
//
// pkg/front_end/testcases/general/constants/various2.dart:140:24: Error: Not a constant expression.
// const function_const = () {};
//                        ^^
//
// pkg/front_end/testcases/general/constants/various2.dart:180:14: Error: Can't access 'this' in a field initializer to read 'y'.
//   final z1 = y;
//              ^
//
// pkg/front_end/testcases/general/constants/various2.dart:9:49: Error: The value 'null' can't be assigned to the parameter type 'bool' because 'bool' is not nullable.
// const bool.fromEnvironment("bar", defaultValue: null);
//                                                 ^
//
// pkg/front_end/testcases/general/constants/various2.dart:12:34: Warning: Operand of null-aware operation '??' has type 'bool' which excludes null.
// const bool nullAwareOnNullTrue = barFromEnvOrNull ?? true;
//                                  ^
//
// pkg/front_end/testcases/general/constants/various2.dart:13:35: Warning: Operand of null-aware operation '??' has type 'bool' which excludes null.
// const bool nullAwareOnNullFalse = barFromEnvOrNull ?? false;
//                                   ^
//
// pkg/front_end/testcases/general/constants/various2.dart:25:51: Error: The value 'null' can't be assigned to the parameter type 'String' because 'String' is not nullable.
// const String.fromEnvironment("bar", defaultValue: null);
//                                                   ^
//
// pkg/front_end/testcases/general/constants/various2.dart:33:49: Error: The value 'null' can't be assigned to the parameter type 'bool' because 'bool' is not nullable.
// const bool.fromEnvironment("bar", defaultValue: null);
//                                                 ^
//
// pkg/front_end/testcases/general/constants/various2.dart:40:48: Error: The value 'null' can't be assigned to the parameter type 'int' because 'int' is not nullable.
// const int.fromEnvironment("bar", defaultValue: null);
//                                                ^
//
// pkg/front_end/testcases/general/constants/various2.dart:99:4: Error: The class 'AbstractClass' is abstract and can't be instantiated.
//   @AbstractClass()
//    ^^^^^^^^^^^^^
//
// pkg/front_end/testcases/general/constants/various2.dart:99:4: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
// Try using a constructor or factory that is 'const'.
//   @AbstractClass()
//    ^
//
// pkg/front_end/testcases/general/constants/various2.dart:102:4: Error: The class 'AbstractClassWithConstructor' is abstract and can't be instantiated.
//   @AbstractClassWithConstructor()
//    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/general/constants/various2.dart:102:4: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
// Try using a constructor or factory that is 'const'.
//   @AbstractClassWithConstructor()
//    ^
//
// pkg/front_end/testcases/general/constants/various2.dart:118:39: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
// Try using a constructor or factory that is 'const'.
// const ExtendsFoo1 extendsFoo1 = const ExtendsFoo1();
//                                       ^^^^^^^^^^^
//
// pkg/front_end/testcases/general/constants/various2.dart:121:9: Error: The superclass, 'Foo', has no unnamed constructor that takes no arguments.
//   const ExtendsFoo2();
//         ^^^^^^^^^^^
//
// pkg/front_end/testcases/general/constants/various2.dart:180:14: Error: Not a constant expression.
//   final z1 = y;
//              ^
//
// pkg/front_end/testcases/general/constants/various2.dart:181:14: Error: Not a constant expression.
//   final z2 = x;
//              ^
//
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;

abstract class AbstractClass extends core::Object {
  synthetic constructor •() → self::AbstractClass
    ;
}
abstract class AbstractClassWithConstructor extends core::Object /*hasConstConstructor*/  {
  const constructor •() → self::AbstractClassWithConstructor
    : super core::Object::•()
    ;
  abstract method foo() → core::int;
}
class NotAbstractClass extends core::Object {
  @throw invalid-expression "pkg/front_end/testcases/general/constants/various2.dart:99:4: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
Try using a constructor or factory that is 'const'.
  @AbstractClass()
   ^"
  field core::Object foo;
  @throw invalid-expression "pkg/front_end/testcases/general/constants/various2.dart:102:4: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
Try using a constructor or factory that is 'const'.
  @AbstractClassWithConstructor()
   ^"
  field core::Object bar;
  synthetic constructor •() → self::NotAbstractClass
    ;
}
class Foo extends core::Object /*hasConstConstructor*/  {
  final field core::int x;
  final field core::int y;
  const constructor •(core::int x) → self::Foo
    : self::Foo::x = x, self::Foo::y = "hello".{core::String::length}{core::int}, super core::Object::•()
    ;
}
class ExtendsFoo1 extends self::Foo {
  synthetic constructor •() → self::ExtendsFoo1
    ;
}
class ExtendsFoo2 extends self::Foo /*hasConstConstructor*/  {
  const constructor •() → self::ExtendsFoo2
    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/constants/various2.dart:121:9: Error: The superclass, 'Foo', has no unnamed constructor that takes no arguments.
  const ExtendsFoo2();
        ^^^^^^^^^^^"
    ;
}
class ConstClassWithFailingAssertWithEmptyMessage extends core::Object /*hasConstConstructor*/  {
  const constructor •() → self::ConstClassWithFailingAssertWithEmptyMessage
    : assert(false, ""), super core::Object::•()
    ;
}
class ClassWithTypeArguments<E extends core::Object? = dynamic, F extends core::Object? = dynamic, G extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
  const constructor •(self::ClassWithTypeArguments::E% e, self::ClassWithTypeArguments::F% f, self::ClassWithTypeArguments::G% g) → self::ClassWithTypeArguments<self::ClassWithTypeArguments::E%, self::ClassWithTypeArguments::F%, self::ClassWithTypeArguments::G%>
    : super core::Object::•()
    ;
}
class ClassWithNonEmptyConstConstructor extends core::Object {
  constructor •() → self::ClassWithNonEmptyConstConstructor
    ;
}
class ConstClassWithFinalFields1 extends core::Object /*hasConstConstructor*/  {
  final field core::int x = 1;
  const constructor •() → self::ConstClassWithFinalFields1
    : super core::Object::•()
    ;
}
class ConstClassWithFinalFields2 extends core::Object /*hasConstConstructor*/  {
  final field core::int y = 1;
  final field invalid-type z1 = this.{self::ConstClassWithFinalFields2::y}{core::int};
  final field core::int z2 = self::x;
  const constructor •() → self::ConstClassWithFinalFields2
    : super core::Object::•()
    ;
}
static const field core::bool barFromEnv = const core::bool::fromEnvironment("bar");
static const field core::bool hasBarEnv = const core::bool::hasEnvironment("bar");
static const field core::bool barFromEnvOrNull = const core::bool::fromEnvironment("bar", defaultValue: invalid-expression "pkg/front_end/testcases/general/constants/various2.dart:9:49: Error: The value 'null' can't be assigned to the parameter type 'bool' because 'bool' is not nullable.
const bool.fromEnvironment(\"bar\", defaultValue: null);
                                                ^" in null as{TypeError,ForNonNullableByDefault} core::bool);
static const field core::bool notBarFromEnvOrNull = !self::barFromEnvOrNull;
static const field core::bool conditionalOnNull = self::barFromEnvOrNull ?{core::bool} true : false;
static const field core::bool nullAwareOnNullTrue = let final core::bool #t2 = self::barFromEnvOrNull in #t2 == null ?{core::bool} true : #t2;
static const field core::bool nullAwareOnNullFalse = let final core::bool #t3 = self::barFromEnvOrNull in #t3 == null ?{core::bool} false : #t3;
static const field core::bool andOnFalse = self::nullAwareOnNullFalse && self::nullAwareOnNullTrue;
static const field core::bool andOnFalse2 = self::nullAwareOnNullTrue && self::nullAwareOnNullFalse;
static const field core::bool andOnNull = self::barFromEnvOrNull && true;
static const field core::bool andOnNull2 = true && self::barFromEnvOrNull;
static const field core::bool orOnNull = self::barFromEnvOrNull || true;
static const field core::bool orOnNull2 = self::barFromEnvOrNull || false;
static const field core::bool orOnNull3 = true || self::barFromEnvOrNull;
static const field core::bool orOnNull4 = false || self::barFromEnvOrNull;
static const field core::String barFromEnvString = const core::String::fromEnvironment("bar");
static const field core::String barFromEnvOrNullString = const core::String::fromEnvironment("bar", defaultValue: invalid-expression "pkg/front_end/testcases/general/constants/various2.dart:25:51: Error: The value 'null' can't be assigned to the parameter type 'String' because 'String' is not nullable.
const String.fromEnvironment(\"bar\", defaultValue: null);
                                                  ^" in null as{TypeError,ForNonNullableByDefault} core::String);
static const field core::String barFromEnvOrActualString = const core::String::fromEnvironment("bar", defaultValue: "hello");
static const field core::String nullFromEnvString = const core::String::fromEnvironment(self::barFromEnvOrNullString);
static const field core::bool barFromEnvBool = const core::bool::fromEnvironment("bar");
static const field core::bool barFromEnvOrNullBool = const core::bool::fromEnvironment("bar", defaultValue: invalid-expression "pkg/front_end/testcases/general/constants/various2.dart:33:49: Error: The value 'null' can't be assigned to the parameter type 'bool' because 'bool' is not nullable.
const bool.fromEnvironment(\"bar\", defaultValue: null);
                                                ^" in null as{TypeError,ForNonNullableByDefault} core::bool);
static const field core::bool barFromEnvOrActualBool = const core::bool::fromEnvironment("bar", defaultValue: true);
static const field core::bool nullFromEnvBool = const core::bool::fromEnvironment(self::barFromEnvOrNullString);
static const field core::int barFromEnvInt = const core::int::fromEnvironment("bar");
static const field core::int barFromEnvOrNullInt = const core::int::fromEnvironment("bar", defaultValue: invalid-expression "pkg/front_end/testcases/general/constants/various2.dart:40:48: Error: The value 'null' can't be assigned to the parameter type 'int' because 'int' is not nullable.
const int.fromEnvironment(\"bar\", defaultValue: null);
                                               ^" in null as{TypeError,ForNonNullableByDefault} core::int);
static const field core::int barFromEnvOrActualInt = const core::int::fromEnvironment("bar", defaultValue: 42);
static const field core::int nullFromEnvInt = const core::int::fromEnvironment(self::barFromEnvOrNullString);
static const field core::bool bazFromEnv = const core::bool::fromEnvironment("baz");
static const field core::bool hasBazEnv = const core::bool::hasEnvironment("baz");
static const field core::int bazFromEnvAsInt = const core::int::fromEnvironment("baz");
static const field core::String bazFromEnvAsString = const core::String::fromEnvironment("baz");
static const field core::bool bazTrueFromEnv = const core::bool::fromEnvironment("bazTrue");
static const field core::bool bazFalseFromEnv = const core::bool::fromEnvironment("bazFalse");
static const field core::bool trueBool = true;
static const field core::bool falseBool = false;
static const field core::bool binaryOnBoolCaret = self::trueBool.{core::bool::^}(self::falseBool){(core::bool) → core::bool};
static const field core::bool binaryOnBoolAmpersand = self::trueBool.{core::bool::&}(self::falseBool){(core::bool) → core::bool};
static const field core::bool binaryOnBoolBar = self::trueBool.{core::bool::|}(self::falseBool){(core::bool) → core::bool};
static const field core::bool binaryOnBoolBar2 = self::falseBool.{core::bool::|}(self::trueBool){(core::bool) → core::bool};
static const field dynamic willBeDouble = const core::bool::fromEnvironment("foo") ?{core::num} 42 : 42.42;
static const field dynamic binaryOnDouble = self::willBeDouble{dynamic}.<<(2);
static const field dynamic willBeInt = const core::bool::fromEnvironment("foo") ?{core::num} 42.42 : 42;
static const field dynamic binaryOnIntWithDoubleBad = self::willBeInt{dynamic}.<<(self::willBeDouble);
static const field dynamic binaryOnIntWithDoubleOK = self::willBeInt{dynamic}.+(self::willBeDouble);
static const field dynamic binaryOnIntWithString = self::willBeInt{dynamic}.<<("hello");
static const field dynamic willBeString = const core::bool::fromEnvironment("foo") ?{core::Object} 42.42 : "hello";
static const field dynamic binaryOnStringWithStringOK = self::willBeString{dynamic}.+(" world");
static const field dynamic binaryOnStringWithInt = self::willBeString{dynamic}.+(self::willBeInt);
static const field dynamic binaryOnStringWithStringBad = self::willBeString{dynamic}.-(" world");
static field core::int x;
static const field core::int x1 = self::x = self::x.{core::num::-}(1){(core::num) → core::int};
static const field core::int x2 = self::x = self::x.{core::num::+}(1){(core::num) → core::int};
static const field core::int x3 = let final core::int #t4 = self::x in let final core::int #t5 = self::x = #t4.{core::num::-}(1){(core::num) → core::int} in #t4;
static const field core::int x4 = let final core::int #t6 = self::x in let final core::int #t7 = self::x = #t6.{core::num::+}(1){(core::num) → core::int} in #t6;
static const field core::int y = 1;
static const field invalid-type y1 = invalid-expression "pkg/front_end/testcases/general/constants/various2.dart:82:14: Error: Setter not found: 'y'.
const y1 = --y;
             ^";
static const field invalid-type y2 = invalid-expression "pkg/front_end/testcases/general/constants/various2.dart:83:14: Error: Setter not found: 'y'.
const y2 = ++y;
             ^";
static const field core::int y3 = let final core::int #t8 = self::y in let final invalid-type #t9 = invalid-expression "pkg/front_end/testcases/general/constants/various2.dart:84:12: Error: Setter not found: 'y'.
const y3 = y--;
           ^" in #t8;
static const field core::int y4 = let final core::int #t10 = self::y in let final invalid-type #t11 = invalid-expression "pkg/front_end/testcases/general/constants/various2.dart:85:12: Error: Setter not found: 'y'.
const y4 = y++;
           ^" in #t10;
static field self::AbstractClassWithConstructor abstractClassWithConstructor;
static const field self::ExtendsFoo1 extendsFoo1 = invalid-expression "pkg/front_end/testcases/general/constants/various2.dart:118:39: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
Try using a constructor or factory that is 'const'.
const ExtendsFoo1 extendsFoo1 = const ExtendsFoo1();
                                      ^^^^^^^^^^^";
static const field self::ExtendsFoo2 extendsFoo2 = const self::ExtendsFoo2::•();
static const field self::Foo foo1 = const self::Foo::•(42);
static const field self::Foo foo2 = const self::Foo::•(42);
static const field core::bool foosIdentical = core::identical(self::foo1, self::foo2);
static const field core::bool foosEqual = self::foo1 =={core::Object::==}{(core::Object) → core::bool} self::foo2;
static const field core::Symbol barFoo = const _in::Symbol::•("Foo");
static const field core::Symbol barFooEqual = const _in::Symbol::•("Foo=");
static const field core::Symbol tripleShiftSymbol = const _in::Symbol::•(">>>");
static const field core::Symbol symbolWithDots = const _in::Symbol::•("I.Have.Dots");
static const field core::int circularity1 = self::circularity2;
static const field core::int circularity2 = self::circularity3;
static const field core::int circularity3 = self::circularity4;
static const field core::int circularity4 = self::circularity1;
static const field invalid-type function_const = invalid-expression "pkg/front_end/testcases/general/constants/various2.dart:140:24: Error: Not a constant expression.
const function_const = () {};
                       ^^";
static field () → Null function_var;
static field self::ConstClassWithFailingAssertWithEmptyMessage failedAssertEmptyMessage;
static const field self::ClassWithTypeArguments<dynamic, dynamic, dynamic> classWithTypeArguments1 = const self::ClassWithTypeArguments::•<core::int, core::int, core::int>(42, 42, 42);
static const field self::ClassWithTypeArguments<dynamic, dynamic, dynamic> classWithTypeArguments2 = const self::ClassWithTypeArguments::•<dynamic, dynamic, dynamic>(42, 42, 42);
static const field core::bool classWithTypeArgumentsIdentical = core::identical(self::classWithTypeArguments1, self::classWithTypeArguments2);
static field self::ClassWithNonEmptyConstConstructor classWithNonEmptyConstConstructor;
static field self::ConstClassWithFinalFields2 constClassWithFinalFields;
static const field core::bool zeroPointZeroIdentical = core::identical(0.0, 0.0);
static const field core::bool zeroPointZeroIdenticalToZero = core::identical(0.0, 0);
static const field core::bool zeroIdenticalToZeroPointZero = core::identical(0, 0.0);
static const field core::bool nanIdentical = core::identical(0.{core::num::/}(0){(core::num) → core::double}, 0.{core::num::/}(0){(core::num) → core::double});
static const field core::bool zeroPointZeroEqual = 0.0 =={core::num::==}{(core::Object) → core::bool} 0.0;
static const field core::bool zeroPointZeroEqualToZero = 0.0 =={core::num::==}{(core::Object) → core::bool} 0;
static const field core::bool zeroEqualToZeroPointZero = 0 =={core::num::==}{(core::Object) → core::bool} 0.0;
static const field core::bool nanEqual = 0.{core::num::/}(0){(core::num) → core::double} =={core::num::==}{(core::Object) → core::bool} 0.{core::num::/}(0){(core::num) → core::double};
static const field dynamic willBecomeNull = const core::bool::fromEnvironment("foo") ?{<T extends core::Object? = dynamic>(T%) →? T%} self::id1 : null;
static const field (core::int) → core::int willBecomeNullToo = (const core::bool::fromEnvironment("foo") ?{dynamic} self::id1<core::int> : self::willBecomeNull) as{TypeError,ForDynamic,ForNonNullableByDefault} (core::int) → core::int;
static const field (core::int) → core::int partialInstantiation = (const core::bool::fromEnvironment("foo") ?{dynamic} self::willBecomeNull : self::id1<core::int>) as{TypeError,ForDynamic,ForNonNullableByDefault} (core::int) → core::int;
static const field core::bool yBool = true;
static const field core::bool zBool = !self::yBool;
static const field core::Object maybeInt = const core::bool::fromEnvironment("foo") ?{core::Object} 42 : true;
static const field core::bool isItInt = self::maybeInt is{ForNonNullableByDefault} core::int ?{core::bool} true : false;
static const field core::Object maybeInt2 = self::zBool ?{core::Object} 42 : true;
static const field core::bool isItInt2 = self::maybeInt2 is{ForNonNullableByDefault} core::int ?{core::bool} true : false;
static const field core::int? maybeInt3 = self::zBool ?{core::int?} 42 : null;
static const field core::bool isItInt3 = self::maybeInt3 is{ForNonNullableByDefault} core::int ?{core::bool} true : false;
static method id1<T extends core::Object? = dynamic>(self::id1::T% t) → self::id1::T%
  ;
static method id2<T extends core::Object? = dynamic>(self::id2::T% t) → self::id2::T%
  ;
static method main() → dynamic
  ;


Extra constant evaluation status:
Evaluated: InstanceGet @ org-dartlang-testcase:///various2.dart:111:26 -> IntConstant(5)
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:6:31 -> BoolConstant(false)
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:7:30 -> BoolConstant(false)
Evaluated: LogicalExpression @ org-dartlang-testcase:///various2.dart:20:29 -> BoolConstant(true)
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:23:39 -> StringConstant("")
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:27:7 -> StringConstant("hello")
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:31:35 -> BoolConstant(false)
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:35:7 -> BoolConstant(true)
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:38:33 -> IntConstant(0)
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:42:7 -> IntConstant(42)
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:46:31 -> BoolConstant(false)
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:47:30 -> BoolConstant(true)
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:48:35 -> IntConstant(42)
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:49:41 -> StringConstant("42")
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:53:35 -> BoolConstant(true)
Evaluated: FactoryConstructorInvocation @ org-dartlang-testcase:///various2.dart:54:36 -> BoolConstant(false)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///various2.dart:58:41 -> BoolConstant(true)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///various2.dart:59:45 -> BoolConstant(false)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///various2.dart:60:39 -> BoolConstant(true)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///various2.dart:61:41 -> BoolConstant(true)
Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:63:64 -> DoubleConstant(42.42)
Evaluated: StaticGet @ org-dartlang-testcase:///various2.dart:64:24 -> DoubleConstant(42.42)
Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:65:61 -> IntConstant(42)
Evaluated: StaticGet @ org-dartlang-testcase:///various2.dart:66:34 -> IntConstant(42)
Evaluated: StaticGet @ org-dartlang-testcase:///various2.dart:66:47 -> DoubleConstant(42.42)
Evaluated: DynamicInvocation @ org-dartlang-testcase:///various2.dart:67:43 -> DoubleConstant(84.42)
Evaluated: StaticGet @ org-dartlang-testcase:///various2.dart:68:31 -> IntConstant(42)
Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:70:35 -> StringConstant("hello")
Evaluated: DynamicInvocation @ org-dartlang-testcase:///various2.dart:71:49 -> StringConstant("hello world")
Evaluated: StaticGet @ org-dartlang-testcase:///various2.dart:72:31 -> StringConstant("hello")
Evaluated: StaticGet @ org-dartlang-testcase:///various2.dart:72:46 -> IntConstant(42)
Evaluated: StaticGet @ org-dartlang-testcase:///various2.dart:73:37 -> StringConstant("hello")
Evaluated: StaticGet @ org-dartlang-testcase:///various2.dart:84:12 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///various2.dart:84:12 -> IntConstant(1)
Evaluated: StaticGet @ org-dartlang-testcase:///various2.dart:85:12 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///various2.dart:85:12 -> IntConstant(1)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various2.dart:126:24 -> InstanceConstant(const Foo{Foo.x: 42, Foo.y: 5})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various2.dart:127:24 -> InstanceConstant(const Foo{Foo.x: 42, Foo.y: 5})
Evaluated: StaticInvocation @ org-dartlang-testcase:///various2.dart:128:28 -> BoolConstant(true)
Evaluated: StaticGet @ org-dartlang-testcase:///various2.dart:129:24 -> InstanceConstant(const Foo{Foo.x: 42, Foo.y: 5})
Evaluated: StaticGet @ org-dartlang-testcase:///various2.dart:129:32 -> InstanceConstant(const Foo{Foo.x: 42, Foo.y: 5})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various2.dart:130:29 -> SymbolConstant(#Foo)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various2.dart:131:34 -> SymbolConstant(#Foo=)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various2.dart:132:40 -> SymbolConstant(#>>>)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various2.dart:133:37 -> SymbolConstant(#I.Have.Dots)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various2.dart:155:7 -> InstanceConstant(const ClassWithTypeArguments<int*, int*, int*>{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various2.dart:157:7 -> InstanceConstant(const ClassWithTypeArguments<dynamic, dynamic, dynamic>{})
Evaluated: StaticInvocation @ org-dartlang-testcase:///various2.dart:159:1 -> BoolConstant(false)
Evaluated: StaticInvocation @ org-dartlang-testcase:///various2.dart:187:32 -> BoolConstant(true)
Evaluated: StaticInvocation @ org-dartlang-testcase:///various2.dart:188:38 -> BoolConstant(false)
Evaluated: StaticInvocation @ org-dartlang-testcase:///various2.dart:189:38 -> BoolConstant(false)
Evaluated: StaticInvocation @ org-dartlang-testcase:///various2.dart:190:22 -> BoolConstant(true)
Evaluated: EqualsCall @ org-dartlang-testcase:///various2.dart:192:32 -> BoolConstant(true)
Evaluated: EqualsCall @ org-dartlang-testcase:///various2.dart:193:38 -> BoolConstant(true)
Evaluated: EqualsCall @ org-dartlang-testcase:///various2.dart:194:36 -> BoolConstant(true)
Evaluated: EqualsCall @ org-dartlang-testcase:///various2.dart:195:24 -> BoolConstant(false)
Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:200:66 -> NullConstant(null)
Evaluated: AsExpression @ org-dartlang-testcase:///various2.dart:203:35 -> NullConstant(null)
Evaluated: AsExpression @ org-dartlang-testcase:///various2.dart:205:35 -> InstantiationConstant(id1<int*>)
Evaluated: Not @ org-dartlang-testcase:///various2.dart:208:20 -> BoolConstant(false)
Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:210:46 -> BoolConstant(true)
Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:211:38 -> BoolConstant(false)
Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:212:25 -> BoolConstant(true)
Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:213:40 -> BoolConstant(false)
Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:214:25 -> NullConstant(null)
Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:215:40 -> BoolConstant(false)
Extra constant evaluation: evaluated: 149, effectively constant: 66
