xref: /llvm-project/clang/test/SemaObjC/matrix-type-operators.m (revision 8f3f88d2f50d97011bf48ccc507bef033715e566)
1// RUN: %clang_cc1 -fsyntax-only -verify -fenable-matrix %s
2
3struct Foo {};
4__attribute__((objc_root_class))
5@interface FooValue
6@property struct Foo value;
7@end
8
9typedef double double4x4 __attribute__((matrix_type(4, 4)));
10
11// Check that we generate proper error messages for invalid placeholder types.
12//
13double test_index_placeholders(double4x4 m, FooValue *iv) {
14  return m[iv.value][iv.value];
15  // expected-error@-1 {{matrix row index is not an integer}}
16  // expected-error@-2 {{matrix column index is not an integer}}
17}
18
19double test_base_and_index_placeholders(FooValue *m, FooValue *iv) {
20  return m.value[iv.value][iv.value];
21  // expected-error@-1 {{subscripted value is not an array, pointer, or vector}}
22}
23