// Formatted problems:
//
// pkg/front_end/testcases/regress/issue_34403.dart:16:14: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var c1 = C.bar<int>();
//              ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:18:18: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var c2 = new C.bar<int>();
//                  ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:20:22: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var c3 = C<String>.bar<int>();
//                      ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:22:26: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var c4 = new C<String>.bar<int>();
//                          ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:25:16: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const d1 = D.foo<int>();
//                ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:27:22: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const d2 = const D.foo<int>();
//                      ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:29:24: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const d3 = D<String>.foo<int>();
//                        ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:31:30: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const d4 = const D<String>.foo<int>();
//                              ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:34:16: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var e1 = p.E.bar<int>();
//                ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:36:20: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var e2 = new p.E.bar<int>();
//                    ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:38:24: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var e3 = p.E<String>.bar<int>();
//                        ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:40:28: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var e4 = new p.E<String>.bar<int>();
//                            ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:43:18: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const f1 = p.F.foo<int>();
//                  ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:45:24: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const f2 = const p.F.foo<int>();
//                        ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:47:26: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const f3 = p.F<String>.foo<int>();
//                          ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:49:32: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const f4 = const p.F<String>.foo<int>();
//                                ^^^

// Unhandled errors:
//
// pkg/front_end/testcases/regress/issue_34403.dart:16:14: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var c1 = C.bar<int>();
//              ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:18:18: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var c2 = new C.bar<int>();
//                  ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:20:22: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var c3 = C<String>.bar<int>();
//                      ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:22:26: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var c4 = new C<String>.bar<int>();
//                          ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:25:16: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const d1 = D.foo<int>();
//                ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:27:22: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const d2 = const D.foo<int>();
//                      ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:29:24: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const d3 = D<String>.foo<int>();
//                        ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:31:30: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const d4 = const D<String>.foo<int>();
//                              ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:34:16: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var e1 = p.E.bar<int>();
//                ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:36:20: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var e2 = new p.E.bar<int>();
//                    ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:38:24: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var e3 = p.E<String>.bar<int>();
//                        ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:40:28: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   var e4 = new p.E<String>.bar<int>();
//                            ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:43:18: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const f1 = p.F.foo<int>();
//                  ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:45:24: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const f2 = const p.F.foo<int>();
//                        ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:47:26: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const f3 = p.F<String>.foo<int>();
//                          ^^^
//
// pkg/front_end/testcases/regress/issue_34403.dart:49:32: Error: A constructor invocation can't have type arguments on the constructor name.
// Try to place the type arguments on the class name.
//   const f4 = const p.F<String>.foo<int>();
//                                ^^^

library;
import self as self;
import "dart:core" as core;
import "./issue_34403_lib.dart" as iss;

class C<T extends core::Object = dynamic> extends core::Object {
  constructor bar() → self::C<self::C::T>
    : super core::Object::•()
    ;
}
class D<T extends core::Object = dynamic> extends core::Object {
  const constructor foo() → self::D<self::D::T>
    : super core::Object::•()
    ;
}
static method main() → dynamic {
  dynamic c1 = new self::C::bar<core::int>();
  c1.toString();
  dynamic c2 = new self::C::bar<core::int>();
  c2.toString();
  dynamic c3 = new self::C::bar<core::String>();
  c3.toString();
  dynamic c4 = new self::C::bar<core::String>();
  c4.toString();
  const dynamic d1 = const self::D::foo<core::int>();
  d1.toString();
  const dynamic d2 = const self::D::foo<core::int>();
  d2.toString();
  const dynamic d3 = const self::D::foo<core::String>();
  d3.toString();
  const dynamic d4 = const self::D::foo<core::String>();
  d4.toString();
  dynamic e1 = new iss::E::bar<core::int>();
  e1.toString();
  dynamic e2 = new iss::E::bar<dynamic>();
  e2.toString();
  dynamic e3 = new iss::E::bar<core::String>();
  e3.toString();
  dynamic e4 = new iss::E::bar<core::String>();
  e4.toString();
  const dynamic f1 = const iss::F::foo<core::int>();
  f1.toString();
  const dynamic f2 = const iss::F::foo<dynamic>();
  f2.toString();
  const dynamic f3 = const iss::F::foo<core::String>();
  f3.toString();
  const dynamic f4 = const iss::F::foo<core::String>();
  f4.toString();
}
