library test;
import self as self;
import "dart:core" as core;

class C extends core::Object {
  static field core::bool staticValue = self::o as{TypeError} core::bool;
  field core::bool instanceValue = self::o as{TypeError} core::bool;
  synthetic constructor •() → void
    : super core::Object::•()
    ;
}
static field core::Object o = 1;
static field core::bool topLevelValue = self::o as{TypeError} core::bool;
static method main() → dynamic {
  try {
    self::topLevelValue;
    throw "no exception";
  }
  on core::TypeError catch(no-exception-var) {
  }
  try {
    self::C::staticValue;
    throw "no exception";
  }
  on core::TypeError catch(no-exception-var) {
  }
  try {
    new self::C::•();
    throw "no exception";
  }
  on core::TypeError catch(no-exception-var) {
  }
}
