// PR c++/9634, c++/29469, c++/29607
// Contributed by: Giovanni Bajo <giovannibajo at gcc dot gnu dot org>
// DR224: Make sure that a name is *truly* semantically dependent.

struct D {
  typedef int K;
};

template <typename T>
struct A
{
  typedef int Bar;

  template <typename>
  struct N {};

  typedef Bar          type1;
  typedef A::Bar       type2;
  typedef A<T>::Bar    type3;
  typedef A<T*>::Bar    type4;  // { dg-error "" "" { target c++17_down } }
  typedef typename A<T*>::Bar type5;

  typedef N<int>       type6;
  typedef A::N<int>    type7;
  typedef A<T>::N<int> type8;
  typedef A<T*>::template N<int> type9;  // { dg-error "" "" { target c++17_down } }
  typedef typename A<T*>::template N<int> type10;

  typedef D Bar2;
  struct N2 { typedef int K; };

  // Check that A::N2 is still considered dependent (because it
  //  could be specialized), while A::Bar2 (being just ::D) is not.
  typedef A::Bar2 type11;
  typedef type11::K k3;

  typedef A::N2 type12;
  typedef typename type12::K k2;
  typedef type12::K k1;  // { dg-error "" "" { target c++17_down } }

  // Check that A::Bar2 is not considered dependent even if we use
  // the typename keyword.
  typedef typename A::Bar2 type13;
  typedef type13::K k4;
};
