// Unhandled errors:
//
// pkg/front_end/testcases/rasta/issue_000041.dart:7:9: Error: '+' is not a prefix operator.
// Try removing '+'.
//     use(+super);
//         ^
//
// pkg/front_end/testcases/rasta/issue_000041.dart:7:9: Error: Getter not found: ''.
//     use(+super);
//         ^

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

class C extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  method test() → dynamic {
    self::use(const core::_ConstantExpressionError::•()._throw(new core::_CompileTimeError::•("pkg/front_end/testcases/rasta/issue_000041.dart:7:10: Error: Can't use `super` as an expression.\n    use(+super);\n         ^")));
  }
}
static method use(dynamic _) → dynamic
  return null;
static method main() → dynamic {
  new self::C::•().{self::C::test}();
}
