library test;
//
// Problems in library:
//
// pkg/front_end/testcases/inference/abstract_class_instantiation.dart:15:33: Error: The class 'C' is abstract and can't be instantiated.
//   var /*@type=dynamic*/ x = new C();
//                                 ^
//
// pkg/front_end/testcases/inference/abstract_class_instantiation.dart:16:33: Error: The class 'D' is abstract and can't be instantiated.
//   var /*@type=dynamic*/ y = new D(1);
//                                 ^
//
// pkg/front_end/testcases/inference/abstract_class_instantiation.dart:17:24: Error: The class 'D' is abstract and can't be instantiated.
//   D<List<int>> z = new D(/*@typeArgs=dynamic*/ []);
//                        ^
//
import self as self;
import "dart:core" as core;

abstract class C extends core::Object {
  synthetic constructor •() → self::C*
    : super core::Object::•()
    ;
}
abstract class D<T extends core::Object* = dynamic> extends core::Object {
  constructor •(self::D::T* t) → self::D<self::D::T*>*
    : super core::Object::•()
    ;
}
static method test() → void {
  dynamic x = throw new core::AbstractClassInstantiationError::•("C");
  dynamic y = let final core::Object* #t1 = 1 in throw new core::AbstractClassInstantiationError::•("D");
  self::D<core::List<core::int*>*>* z = let final core::Object* #t2 = <dynamic>[] in throw new core::AbstractClassInstantiationError::•("D");
}
static method main() → dynamic {}
