56 lines · plain
1// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -ast-dump -o - %s -verify2// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -ast-dump -DSTRUCT -o - %s -verify3 4#ifdef STRUCT5#define KEYWORD struct6#else7#define KEYWORD class8#endif9 10KEYWORD Doggo {11 int legs; // expected-note {{member is declared here}} expected-note {{member is declared here}}12protected: // expected-warning {{access specifiers are a clang HLSL extension}}13 int ears[2]; // expected-note {{declared protected here}}14private: // expected-warning {{access specifiers are a clang HLSL extension}}15 int tail; // expected-note {{declared private here}} expected-note {{declared private here}}16};17 18KEYWORD Shiba : public Doggo { // expected-warning {{access specifiers are a clang HLSL extension}}19 int undercoat;20};21 22KEYWORD Akita : Doggo {23 int floof;24};25 26KEYWORD Chow : private Doggo { // expected-warning {{access specifiers are a clang HLSL extension}} expected-note {{constrained by private inheritance here}}27 int megafloof;28};29 30KEYWORD Dachshund : protected Doggo { // expected-warning {{access specifiers are a clang HLSL extension}} expected-note {{constrained by protected inheritance here}}31 int wiry;32};33 34void Puppers() {35 Shiba Shibe;36 Shibe.undercoat = 0xFFFF;37 Shibe.legs = 4;38 39 Shibe.tail = 1; // expected-error {{'tail' is a private member of 'Doggo'}}40 Shibe.ears[0] = 1; // expected-error {{'ears' is a protected member of 'Doggo'}}41 42 Akita Aki;43 Aki.floof = 0xFFFF;44 Aki.legs = 4;45 46 Aki.tail = 1; // expected-error {{'tail' is a private member of 'Doggo'}}47 48 Chow Ch;49 Ch.megafloof = 0xFFFF;50 51 Ch.legs = 4; // expected-error {{'legs' is a private member of 'Doggo'}}52 53 Dachshund DH;54 DH.legs = 4; // expected-error {{'legs' is a protected member of 'Doggo'}}55}56