================
@@ -0,0 +1,20 @@
+// RUN: %clang_cc1 -verify %s
+
+struct A {
+  enum E : unsigned {};
+  [[clang::preferred_type(E)]] unsigned b : 2;
+  [[clang::preferred_type(E)]] int b2 : 2;
+  // expected-warning@-1 {{underlying type 'unsigned int' of enumeration 'E' 
doesn't match bit-field type 'int'}}
+  [[clang::preferred_type(E)]] const unsigned b3 : 2;
+  [[clang::preferred_type(bool)]] unsigned b4 : 1;
+  [[clang::preferred_type(bool)]] unsigned b5 : 2;
+  // expected-warning@-1 {{bit-field that holds a boolean value should have 
width of 1 instead of 2}}
+  [[clang::preferred_type()]] unsigned b6 : 2;
+  // expected-error@-1 {{'preferred_type' attribute takes one argument}}
+  [[clang::preferred_type]] unsigned b7 : 2;
+  // expected-error@-1 {{'preferred_type' attribute takes one argument}}
+  [[clang::preferred_type(E, int)]] unsigned b8 : 2;
----------------
Endilll wrote:

@AaronBallman On the topic of automatically-generated diagnostics:
```
/home/user/endill/llvm-project/clang/test/Sema/attr-preferred-type.cpp:16:28: 
error: expected ')'
   16 |   [[clang::preferred_type(E, int)]] unsigned b8 : 2;
      |                            ^
      |                            )
/home/user/endill/llvm-project/clang/test/Sema/attr-preferred-type.cpp:16:33: 
error: expected ','
   16 |   [[clang::preferred_type(E, int)]] unsigned b8 : 2;
      |                                 ^
      |                                 ,
/home/user/endill/llvm-project/clang/test/Sema/attr-preferred-type.cpp:16:30: 
warning: unknown attribute 'int' ignored [-Wunknown-attributes]
   16 |   [[clang::preferred_type(E, int)]] unsigned b8 : 2;
      |                              ^~~
```
3 diagnostics are issued, 0 says that wrong number of attribute arguments is 
passed.

https://github.com/llvm/llvm-project/pull/69104
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to