xref: /llvm-project/clang/test/SemaHLSL/Language/ArrayOutputArgs-errors.hlsl (revision 46de3a7064250bd2dfc7f8dc6e300474afa9fa97)
1*46de3a70SSarah Spall// RUN: %clang_cc1 -finclude-default-header -triple dxil-pc-shadermodel6.6-library %s -verify
2*46de3a70SSarah Spall
3*46de3a70SSarah Spallvoid increment(inout int Arr[2]) {
4*46de3a70SSarah Spall  for (int I = 0; I < 2; I++)
5*46de3a70SSarah Spall    Arr[0] += 2;
6*46de3a70SSarah Spall}
7*46de3a70SSarah Spall
8*46de3a70SSarah Spallexport int wrongSize() {
9*46de3a70SSarah Spall  int A[3] = { 0, 1, 2 };
10*46de3a70SSarah Spall  increment(A);
11*46de3a70SSarah Spall  // expected-error@-1 {{no matching function for call to 'increment'}}
12*46de3a70SSarah Spall  // expected-note@*:* {{candidate function not viable: no known conversion from 'int[3]' to 'int[2]' for 1st argument}}
13*46de3a70SSarah Spall  return A[0];
14*46de3a70SSarah Spall}
15*46de3a70SSarah Spall
16*46de3a70SSarah Spallexport int wrongSize2() {
17*46de3a70SSarah Spall  int A[1] = { 0 };
18*46de3a70SSarah Spall  increment(A);
19*46de3a70SSarah Spall  // expected-error@-1 {{no matching function for call to 'increment'}}
20*46de3a70SSarah Spall  // expected-note@*:* {{candidate function not viable: no known conversion from 'int[1]' to 'int[2]' for 1st argument}}
21*46de3a70SSarah Spall  return A[0];
22*46de3a70SSarah Spall}
23*46de3a70SSarah Spall
24*46de3a70SSarah Spallexport void tooFewArgs() {
25*46de3a70SSarah Spall  increment();
26*46de3a70SSarah Spall  // expected-error@-1 {{no matching function for call to 'increment'}}
27*46de3a70SSarah Spall  // expected-note@*:* {{candidate function not viable: requires single argument 'Arr', but no arguments were provided}}
28*46de3a70SSarah Spall}
29*46de3a70SSarah Spall
30*46de3a70SSarah Spallexport float wrongType() {
31*46de3a70SSarah Spall  float A[2] = { 0, 1 };
32*46de3a70SSarah Spall  increment(A);
33*46de3a70SSarah Spall  // expected-error@-1 {{no matching function for call to 'increment'}}
34*46de3a70SSarah Spall  // expected-note@*:* {{candidate function not viable: no known conversion from 'float[2]' to 'int[2]' for 1st argument}}
35*46de3a70SSarah Spall  return A[0];
36*46de3a70SSarah Spall}
37*46de3a70SSarah Spall
38*46de3a70SSarah Spallexport int wrongType2() {
39*46de3a70SSarah Spall  increment(5);
40*46de3a70SSarah Spall  // expected-error@-1 {{no matching function for call to 'increment'}}
41*46de3a70SSarah Spall  // expected-note@*:* {{candidate function not viable: no known conversion from 'int' to 'int[2]' for 1st argument}}
42*46de3a70SSarah Spall  return 1;
43*46de3a70SSarah Spall}
44*46de3a70SSarah Spall
45*46de3a70SSarah Spallexport void tooManyArgs() {
46*46de3a70SSarah Spall  int A[2] = { 0, 1 };
47*46de3a70SSarah Spall  int B[2] = { 2, 3 };
48*46de3a70SSarah Spall  increment(A, B);
49*46de3a70SSarah Spall  // expected-error@-1 {{no matching function for call to 'increment'}}
50*46de3a70SSarah Spall  // expected-note@*:* {{candidate function not viable: requires single argument 'Arr', but 2 arguments were provided}}
51*46de3a70SSarah Spall}
52