// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -fsyntax-only %s -verify struct Pair { int First; int Second; //expected-error@+1 {{HLSL does not support constructors or destructors}} Pair() { First = 0; Second = 0; } //expected-error@+1 {{HLSL does not support constructors or destructors}} Pair(int F, int S) { First = F; Second = S; } //expected-error@+2 {{references are unsupported in HLSL}} //expected-error@+1 {{HLSL does not support constructors or destructors}} Pair(const Pair& P) { this.First = P.First; this.Second = P.Second; } //expected-error@+2 {{references are unsupported in HLSL}} //expected-error@+1 {{HLSL does not support constructors or destructors}} Pair(Pair&& P) = default; //expected-error@+1 {{HLSL does not support constructors or destructors}} ~Pair(); //expected-error@+2 {{references are unsupported in HLSL}} //expected-error@+1 {{references are unsupported in HLSL}} Pair& operator=(const Pair& P) { this.First = P.First; this.Second = P.Second; //expected-error@+1 {{the '*' operator is unsupported in HLSL}} return *this; } //expected-error@+2 {{references are unsupported in HLSL}} //expected-error@+1 {{references are unsupported in HLSL}} Pair& operator=(Pair&& P) { First = move(P.First); Second = move(P.Second); //expected-error@+1 {{the '*' operator is unsupported in HLSL}} return *this; } };