// RUN: %clang_cc1 -fsyntax-only -verify %s

struct X {
  template<typename T, typename U>
  static void f(int, int);
};

void f() {
  void (*ptr)(int, int) = &X::f<int, int>;

  unknown *p = 0; // expected-error {{unknown type name 'unknown'}}
  unknown * p + 0; // expected-error {{undeclared identifier 'unknown'}}
}

auto (*p)() -> int(nullptr);
auto (*q)() -> int(*)(unknown); // expected-error {{unknown type name 'unknown'}}
auto (*r)() -> int(*)(unknown + 1); // expected-error {{undeclared identifier 'unknown'}}

int f(unknown const x); // expected-error {{unknown type name 'unknown'}}

// Disambiguating an array declarator from an array subscripting.
void arr() {
  int x[] = {1}; // expected-note 2{{previous}}

  // This is array indexing not an array declarator because a comma expression
  // is not syntactically a constant-expression.
  int(x[1,1]); // expected-warning {{left operand of comma operator has no effect}} expected-warning {{unused}}

  // This is array indexing not an array declaration because a braced-init-list
  // is not syntactically a constant-expression.
  int(x[{0}]); // expected-error {{array subscript is not an integer}}
  struct A {
    struct Q { int n; };
    int operator[](Q);
  } a;
  int(a[{0}]); // expected-warning {{unused}}

  // These are array declarations.
  int(x[((void)1,1)]); // expected-error {{redefinition}}
  int(x[true ? 1 : (1,1)]); // expected-error {{redefinition}} // expected-warning {{left operand of comma operator has no effect}}

  int (*_Atomic atomic_ptr_to_int);
  *atomic_ptr_to_int = 42;
}
