================ @@ -0,0 +1,64 @@ +// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.6-library %s -verify +void fn(in out float f); // #fn + +// expected-error@#fn2{{duplicate parameter modifier 'in'}} +// expected-note@#fn2{{conflicting attribute is here}} +void fn2(in in float f); // #fn2 + +// expected-error@#fn3{{duplicate parameter modifier 'out'}} +// expected-note@#fn3{{conflicting attribute is here}} +void fn3(out out float f); // #fn3 + +// expected-error@#fn4{{duplicate parameter modifier 'in'}} +// expected-error@#fn4{{duplicate parameter modifier 'out'}} +// expected-note@#fn4{{conflicting attribute is here}} +// expected-note@#fn4{{conflicting attribute is here}} +void fn4(inout in out float f); // #fn4 + +// expected-error@#fn5{{duplicate parameter modifier 'in'}} +// expected-note@#fn5{{conflicting attribute is here}} +void fn5(inout in float f); // #fn5 + +// expected-error@#fn6{{duplicate parameter modifier 'out'}} +// expected-note@#fn6{{conflicting attribute is here}} +void fn6(inout out float f); // #fn6 + +// expected-error@#fn-def{{conflicting parameter qualifier 'out' on parameter 'f'}} +// expected-note@#fn{{previously declared as 'inout' here}} +void fn(out float f) { // #fn-def + f = 2; +} + +// Overload resolution failure. +void fn(in float f); // #fn-in + +void failOverloadResolution() { + float f = 1.0; + fn(f); // expected-error{{call to 'fn' is ambiguous}} + // expected-note@#fn-def{{candidate function}} + // expected-note@#fn-in{{candidate function}} +} + +// No errors on these scenarios. + +// Alternating `inout` and `in out` spellings between declaration and +// definitions is fine since they have the same semantic meaning. +void fn7(inout float f); +void fn7(in out float f) {} + +void fn8(in out float f); +void fn8(inout float f) {} + +// These two declare two different functions (although calling them will be +// ambiguous). This is equivalent to declaring a functiion that takes a ---------------- bogner wrote:
Typo. s/functiion/function/ https://github.com/llvm/llvm-project/pull/72139 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits