// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
template<typename T>
class X0 {
  friend T;
};

class Y1 { };
enum E1 { };
X0<Y1> x0a;
X0<Y1 *> x0b;
X0<int> x0c;
X0<E1> x0d;

template<typename T>
class X1 {
  friend typename T::type; // expected-error{{no type named 'type' in 'Y1'}}
};

struct Y2 {
  struct type { };
};

struct Y3 {
  typedef int type;
};

X1<Y2> x1a;
X1<Y3> x1b;
X1<Y1> x1c; // expected-note{{in instantiation of template class 'X1<Y1>' requested here}}

template<typename T> class B;

template<typename T>
class A {
  T x;
public:
  class foo {};
  static int y;
  template <typename S> friend class B<S>::ty;
};

template <typename T> class B { typedef int ty; };

struct {
  // Ill-formed
  int friend; // expected-error {{'friend' must appear first in a non-function declaration}}
  unsigned friend int; // expected-error {{'friend' must appear first in a non-function declaration}}
  const volatile friend int; // expected-error {{'friend' must appear first in a non-function declaration}}
  int
          friend; // expected-error {{'friend' must appear first in a non-function declaration}}

  // OK
  int friend foo(void);
  friend int;
  friend const volatile int;
      friend

  float;
  template<typename T> friend class A<T>::foo;
} a;

void testA() { (void)sizeof(A<int>); }
