Compiler projects using llvm
// RUN: %clang_cc1 -fsyntax-only -verify -fenable-matrix %s

struct Foo {};
__attribute__((objc_root_class))
@interface FooValue
@property struct Foo value;
@end

typedef double double4x4 __attribute__((matrix_type(4, 4)));

// Check that we generate proper error messages for invalid placeholder types.
//
double test_index_placeholders(double4x4 m, FooValue *iv) {
  return m[iv.value][iv.value];
  // expected-error@-1 {{matrix row index is not an integer}}
  // expected-error@-2 {{matrix column index is not an integer}}
}

double test_base_and_index_placeholders(FooValue *m, FooValue *iv) {
  return m.value[iv.value][iv.value];
  // expected-error@-1 {{subscripted value is not an array, pointer, or vector}}
}