Skip to content

Commit 5deabab

Browse files
Rename [[clang::requires_explicit_initialization]] to [[clang::require_explicit_initialization]] (#122947)
This makes it consistent with `[[clang::require_constant_initialization]]`. (The attribute was just added to Clang a few minutes ago, so there are no users yet.)
1 parent dac06e7 commit 5deabab

File tree

5 files changed

+21
-21
lines changed

5 files changed

+21
-21
lines changed

clang/include/clang/AST/DeclBase.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1671,7 +1671,7 @@ class DeclContext {
16711671
uint64_t HasNonTrivialToPrimitiveCopyCUnion : 1;
16721672

16731673
/// True if any field is marked as requiring explicit initialization with
1674-
/// [[clang::requires_explicit_initialization]].
1674+
/// [[clang::require_explicit_initialization]].
16751675
/// In C++, this is also set for types without a user-provided default
16761676
/// constructor, and is propagated from any base classes and/or member
16771677
/// variables whose types are aggregates.

clang/include/clang/Basic/Attr.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1903,7 +1903,7 @@ def Leaf : InheritableAttr {
19031903
}
19041904

19051905
def ExplicitInit : InheritableAttr {
1906-
let Spellings = [Clang<"requires_explicit_initialization">];
1906+
let Spellings = [Clang<"require_explicit_initialization">];
19071907
let Subjects = SubjectList<[Field], ErrorDiag>;
19081908
let Documentation = [ExplicitInitDocs];
19091909
let SimpleHandler = 1;

clang/include/clang/Basic/AttrDocs.td

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1687,7 +1687,7 @@ is not specified.
16871687
def ExplicitInitDocs : Documentation {
16881688
let Category = DocCatField;
16891689
let Content = [{
1690-
The ``clang::requires_explicit_initialization`` attribute indicates that a
1690+
The ``clang::require_explicit_initialization`` attribute indicates that a
16911691
field of an aggregate must be initialized explicitly by the user when an object
16921692
of the aggregate type is constructed. The attribute supports both C and C++,
16931693
but its usage is invalid on non-aggregates.
@@ -1704,13 +1704,13 @@ initializers exist):
17041704
.. code-block:: c++
17051705

17061706
struct Buffer {
1707-
void *address [[clang::requires_explicit_initialization]];
1708-
size_t length [[clang::requires_explicit_initialization]] = 0;
1707+
void *address [[clang::require_explicit_initialization]];
1708+
size_t length [[clang::require_explicit_initialization]] = 0;
17091709
};
17101710

17111711
struct ArrayIOParams {
1712-
size_t count [[clang::requires_explicit_initialization]];
1713-
size_t element_size [[clang::requires_explicit_initialization]];
1712+
size_t count [[clang::require_explicit_initialization]];
1713+
size_t element_size [[clang::require_explicit_initialization]];
17141714
int flags = 0;
17151715
};
17161716

clang/test/Sema/uninit-variables.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -554,16 +554,16 @@ struct full_of_empty empty_test_2(void) {
554554

555555
struct with_explicit_field {
556556
int x;
557-
int y [[clang::requires_explicit_initialization]]; // #FIELD_Y
557+
int y [[clang::require_explicit_initialization]]; // #FIELD_Y
558558
};
559559

560560
struct with_explicit_array {
561-
[[clang::requires_explicit_initialization]] int arr[2]; // #FIELD_ARR
561+
[[clang::require_explicit_initialization]] int arr[2]; // #FIELD_ARR
562562
};
563563

564564
struct with_explicit_flex_array {
565565
int x;
566-
[[clang::requires_explicit_initialization]] int flex_arr[]; // #FIELD_FLEX_ARR
566+
[[clang::require_explicit_initialization]] int flex_arr[]; // #FIELD_FLEX_ARR
567567
};
568568

569569
void aggregate() {

clang/test/SemaCXX/uninitialized.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1483,14 +1483,14 @@ struct Inherit : Bases... { // #TYPE_INHERIT
14831483

14841484
template<class... Bases>
14851485
struct InheritWithExplicit : Bases... { // #TYPE_INHERIT_WITH_EXPLICIT
1486-
int g2 [[clang::requires_explicit_initialization]]; // #FIELD_G2
1486+
int g2 [[clang::require_explicit_initialization]]; // #FIELD_G2
14871487
};
14881488

14891489
struct Special {};
14901490

14911491
template<>
14921492
struct Inherit<Special> {
1493-
int g3 [[clang::requires_explicit_initialization]]; // #FIELD_G3
1493+
int g3 [[clang::require_explicit_initialization]]; // #FIELD_G3
14941494
};
14951495

14961496
template<>
@@ -1501,42 +1501,42 @@ struct InheritWithExplicit<Special> {
15011501
void aggregate() {
15021502
struct NonAgg {
15031503
NonAgg() { }
1504-
[[clang::requires_explicit_initialization]] int na; // expected-warning {{'requires_explicit_initialization' attribute is ignored in non-aggregate type 'NonAgg'}}
1504+
[[clang::require_explicit_initialization]] int na; // expected-warning {{'require_explicit_initialization' attribute is ignored in non-aggregate type 'NonAgg'}}
15051505
};
15061506
NonAgg nonagg; // no-warning
15071507
(void)nonagg;
15081508

15091509
struct S {
1510-
[[clang::requires_explicit_initialization]] int s1; // #FIELD_S1
1510+
[[clang::require_explicit_initialization]] int s1; // #FIELD_S1
15111511
int s2;
15121512
int s3 = 12;
1513-
[[clang::requires_explicit_initialization]] int s4 = 100; // #FIELD_S4
1513+
[[clang::require_explicit_initialization]] int s4 = 100; // #FIELD_S4
15141514
static void foo(S) { }
15151515
};
15161516

15171517
struct C {
15181518
#if __cplusplus < 202002L
15191519
// expected-warning@+1 {{explicit initialization of field 'c1' will not be enforced in C++20 and later because 'C' has a user-declared constructor, making the type no longer an aggregate}}
1520-
[[clang::requires_explicit_initialization]]
1520+
[[clang::require_explicit_initialization]]
15211521
#endif
15221522
int c1; // #FIELD_C1
15231523
C() = default; // Test pre-C++20 aggregates
15241524
};
15251525

15261526
struct D : S { // #TYPE_D
15271527
int d1;
1528-
int d2 [[clang::requires_explicit_initialization]]; // #FIELD_D2
1528+
int d2 [[clang::require_explicit_initialization]]; // #FIELD_D2
15291529
};
15301530

15311531
struct D2 : D { // #TYPE_D2
15321532
};
15331533

15341534
struct E { // #TYPE_E
15351535
int e1;
1536-
D e2 [[clang::requires_explicit_initialization]]; // #FIELD_E2
1536+
D e2 [[clang::require_explicit_initialization]]; // #FIELD_E2
15371537
struct {
1538-
[[clang::requires_explicit_initialization]] D e3;
1539-
D2 e4 [[clang::requires_explicit_initialization]];
1538+
[[clang::require_explicit_initialization]] D e3;
1539+
D2 e4 [[clang::require_explicit_initialization]];
15401540
};
15411541
};
15421542

@@ -1636,7 +1636,7 @@ void aggregate() {
16361636
InheritWithExplicit<> agg; // expected-warning {{field in 'InheritWithExplicit<>' requires explicit initialization but is not explicitly initialized}} expected-note@#FIELD_G2 {{'g2' declared here}}
16371637
(void)agg;
16381638

1639-
InheritWithExplicit<Polymorphic> polymorphic; // expected-warning@#FIELD_G2 {{'requires_explicit_initialization' attribute is ignored in non-aggregate type 'InheritWithExplicit<Polymorphic>'}}
1639+
InheritWithExplicit<Polymorphic> polymorphic; // expected-warning@#FIELD_G2 {{'require_explicit_initialization' attribute is ignored in non-aggregate type 'InheritWithExplicit<Polymorphic>'}}
16401640
(void)polymorphic;
16411641

16421642
Inherit<Special> specialized_explicit; // expected-warning {{field in 'Inherit<Special>' requires explicit initialization but is not explicitly initialized}} expected-note@#FIELD_G3 {{'g3' declared here}}

0 commit comments

Comments
 (0)