// { dg-do assemble  }
// { dg-options "-fshow-column" }
// GROUPS passed constructors
// ctors file
// Subject: bug in handling static const object of the enclosing class
// Date: Tue, 1 Sep 92 10:38:44 EDT

class X
{ // { dg-message "1:X::X\\(const X&\\)" } implicit constructor
  private:
    int x;
  public:
    static const X x0;
    X( int );
};

class Y // { dg-error "1:new types may not be defined in a return type" "err" }
        // { dg-message "1:\\(perhaps a semicolon is missing after the definition of 'Y'\\)" "note" { target *-*-* } 17 }
{
  private:
    X xx;
  public:
    Y();
}
X::X( int xi ) // { dg-error "14:return type specification for constructor invalid" "err" }
// { dg-message "1:candidates are: X::X\\(int\\)" "note" { target *-*-* } 25 }
{
    x = xi;
}

const X X::x0( 0 );

Y::Y() // { dg-error "6:no matching function for call to 'X::X\\(\\)'" }
{
    xx = X::x0;
}
