CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
279 lines
12 KiB
C++
279 lines
12 KiB
C++
// RUN: %check_clang_tidy -std=c++20-or-later %s modernize-use-designated-initializers %t \
|
|
// RUN: -- \
|
|
// RUN: -- -fno-delayed-template-parsing
|
|
// RUN: %check_clang_tidy -check-suffixes=,SINGLE-ELEMENT -std=c++20-or-later %s modernize-use-designated-initializers %t \
|
|
// RUN: -- -config="{CheckOptions: {modernize-use-designated-initializers.IgnoreSingleElementAggregates: false}}" \
|
|
// RUN: -- -fno-delayed-template-parsing
|
|
// RUN: %check_clang_tidy -check-suffixes=POD -std=c++20-or-later %s modernize-use-designated-initializers %t \
|
|
// RUN: -- -config="{CheckOptions: {modernize-use-designated-initializers.RestrictToPODTypes: true}}" \
|
|
// RUN: -- -fno-delayed-template-parsing
|
|
// RUN: %check_clang_tidy -check-suffixes=,MACROS -std=c++20-or-later %s modernize-use-designated-initializers %t \
|
|
// RUN: -- -config="{CheckOptions: {modernize-use-designated-initializers.IgnoreMacros: false}}" \
|
|
// RUN: -- -fno-delayed-template-parsing
|
|
|
|
struct S1 {};
|
|
|
|
S1 s11{};
|
|
S1 s12 = {};
|
|
S1 s13();
|
|
S1 s14;
|
|
|
|
struct S2 { int i, j; };
|
|
|
|
S2 s21{.i=1, .j =2};
|
|
|
|
S2 s22 = {1, 2};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: use designated initializer list to initialize 'S2' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-6]]:1: note: aggregate type is defined here
|
|
// CHECK-MESSAGES-POD: :[[@LINE-3]]:10: warning: use designated initializer list to initialize 'S2' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-8]]:1: note: aggregate type is defined here
|
|
// CHECK-FIXES: S2 s22 = {.i=1, .j=2};
|
|
|
|
S2 s23{1};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use designated initializer list to initialize 'S2' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-13]]:1: note: aggregate type is defined here
|
|
// CHECK-MESSAGES-POD: :[[@LINE-3]]:7: warning: use designated initializer list to initialize 'S2' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-15]]:1: note: aggregate type is defined here
|
|
// CHECK-FIXES: S2 s23{.i=1};
|
|
|
|
S2 s24{.i = 1};
|
|
|
|
S2 s25 = {.i=1, 2};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:17: warning: use designated init expression to initialize field 'j' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-2]]:17: warning: use designated init expression to initialize field 'j' [modernize-use-designated-initializers]
|
|
// CHECK-FIXES: S2 s25 = {.i=1, .j=2};
|
|
|
|
class S3 {
|
|
public:
|
|
S2 s2;
|
|
double d;
|
|
};
|
|
|
|
S3 s31 = {.s2 = 1, 2, 3.1};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:20: warning: use designated init expression to initialize field 's2.j' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-2]]:23: warning: use designated init expression to initialize field 'd' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-3]]:20: warning: use designated init expression to initialize field 's2.j' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-4]]:23: warning: use designated init expression to initialize field 'd' [modernize-use-designated-initializers]
|
|
// CHECK-FIXES: S3 s31 = {.s2 = 1, .s2.j=2, .d=3.1};
|
|
|
|
S3 s32 = {{.i = 1, 2}};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: use designated initializer list to initialize 'S3' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-15]]:1: note: aggregate type is defined here
|
|
// CHECK-MESSAGES: :[[@LINE-3]]:20: warning: use designated init expression to initialize field 'j' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-4]]:10: warning: use designated initializer list to initialize 'S3' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-18]]:1: note: aggregate type is defined here
|
|
// CHECK-MESSAGES-POD: :[[@LINE-6]]:20: warning: use designated init expression to initialize field 'j' [modernize-use-designated-initializers]
|
|
// CHECK-FIXES: S3 s32 = {.s2={.i = 1, .j=2}};
|
|
|
|
S3 s33 = {{2}, .d=3.1};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: use designated init expression to initialize field 's2' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-2]]:11: warning: use designated initializer list to initialize 'S2' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-50]]:1: note: aggregate type is defined here
|
|
// CHECK-MESSAGES-POD: :[[@LINE-4]]:11: warning: use designated init expression to initialize field 's2' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-5]]:11: warning: use designated initializer list to initialize 'S2' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-53]]:1: note: aggregate type is defined here
|
|
// CHECK-FIXES: S3 s33 = {.s2={.i=2}, .d=3.1};
|
|
|
|
struct S4 {
|
|
double d;
|
|
private: static int i;
|
|
};
|
|
|
|
S4 s41 {2.2};
|
|
// CHECK-MESSAGES-SINGLE-ELEMENT: :[[@LINE-1]]:8: warning: use designated initializer list to initialize 'S4' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-SINGLE-ELEMENT: :[[@LINE-7]]:1: note: aggregate type is defined here
|
|
// CHECK-FIXES-SINGLE-ELEMENT: S4 s41 {.d=2.2};
|
|
|
|
S4 s42 = {{}};
|
|
// CHECK-MESSAGES-SINGLE-ELEMENT: :[[@LINE-1]]:10: warning: use designated initializer list to initialize 'S4' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-SINGLE-ELEMENT: :[[@LINE-12]]:1: note: aggregate type is defined here
|
|
// CHECK-FIXES-SINGLE-ELEMENT: S4 s42 = {.d={}};
|
|
|
|
template<typename S> S template1() { return {10, 11}; }
|
|
|
|
S2 s26 = template1<S2>();
|
|
|
|
template<typename S> S template2() { return {}; }
|
|
|
|
S2 s27 = template2<S2>();
|
|
|
|
struct S5: S2 { int x, y; };
|
|
|
|
S5 s51 {1, 2, .x = 3, .y = 4};
|
|
|
|
struct S6 {
|
|
int i;
|
|
struct { int j; } s;
|
|
};
|
|
|
|
S6 s61 {1, 2};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: use designated initializer list to initialize 'S6' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-7]]:1: note: aggregate type is defined here
|
|
// CHECK-MESSAGES-POD: :[[@LINE-3]]:8: warning: use designated initializer list to initialize 'S6' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-9]]:1: note: aggregate type is defined here
|
|
// CHECK-FIXES: S6 s61 {.i=1, .s.j=2};
|
|
|
|
struct S7 {
|
|
union {
|
|
int k;
|
|
double d;
|
|
} u;
|
|
};
|
|
|
|
S7 s71 {1};
|
|
// CHECK-MESSAGES-SINGLE-ELEMENT: :[[@LINE-1]]:8: warning: use designated initializer list to initialize 'S7' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-SINGLE-ELEMENT: :[[@LINE-9]]:1: note: aggregate type is defined here
|
|
// CHECK-FIXES-SINGLE-ELEMENT: S7 s71 {.u.k=1};
|
|
|
|
struct S8: S7 { int i; };
|
|
|
|
S8 s81{1, 2};
|
|
|
|
struct S9 {
|
|
int i, j;
|
|
S9 &operator=(S9);
|
|
};
|
|
|
|
S9 s91{1, 2};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use designated initializer list to initialize 'S9' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-7]]:1: note: aggregate type is defined here
|
|
// CHECK-FIXES: S9 s91{.i=1, .j=2};
|
|
|
|
struct S10 { int i = 1, j = 2; };
|
|
|
|
S10 s101 {1, .j=2};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: use designated init expression to initialize field 'i' [modernize-use-designated-initializers]
|
|
// CHECK-FIXES: S10 s101 {.i=1, .j=2};
|
|
|
|
struct S11 { int i; S10 s10; };
|
|
|
|
S11 s111 { .i = 1 };
|
|
S11 s112 { 1 };
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: use designated initializer list to initialize 'S11' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-5]]:1: note: aggregate type is defined here
|
|
// CHECK-FIXES: S11 s112 { .i=1 };
|
|
|
|
S11 s113 { .i=1, {}};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:18: warning: use designated init expression to initialize field 's10' [modernize-use-designated-initializers]
|
|
// CHECK-FIXES: S11 s113 { .i=1, .s10={}};
|
|
|
|
S11 s114 { .i=1, .s10={1, .j=2}};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: use designated init expression to initialize field 'i' [modernize-use-designated-initializers]
|
|
// CHECK-FIXES: S11 s114 { .i=1, .s10={.i=1, .j=2}};
|
|
|
|
struct S12 {
|
|
int i;
|
|
struct { int j; };
|
|
};
|
|
|
|
S12 s121 {1, 2};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: use designated initializer list to initialize 'S12' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-7]]:1: note: aggregate type is defined here
|
|
// CHECK-MESSAGES-POD: :[[@LINE-3]]:10: warning: use designated initializer list to initialize 'S12' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-9]]:1: note: aggregate type is defined here
|
|
// CHECK-FIXES: S12 s121 {.i=1, .j=2};
|
|
|
|
struct S13 {
|
|
union {
|
|
int k;
|
|
double d;
|
|
};
|
|
int i;
|
|
};
|
|
|
|
S13 s131 {1, 2};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: use designated initializer list to initialize 'S13' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-10]]:1: note: aggregate type is defined here
|
|
// CHECK-MESSAGES-POD: :[[@LINE-3]]:10: warning: use designated initializer list to initialize 'S13' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-12]]:1: note: aggregate type is defined here
|
|
// CHECK-FIXES: S13 s131 {.k=1, .i=2};
|
|
|
|
#define A (3+2)
|
|
#define B .j=1
|
|
|
|
S9 s92 {A, B};
|
|
// CHECK-MESSAGES-MACROS: :[[@LINE-1]]:9: warning: use designated init expression to initialize field 'i' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-MACROS: :[[@LINE-5]]:11: note: expanded from macro 'A'
|
|
|
|
#define DECLARE_S93 S9 s93 {1, 2}
|
|
|
|
DECLARE_S93;
|
|
// CHECK-MESSAGES-MACROS: :[[@LINE-1]]:1: warning: use designated initializer list to initialize 'S9' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-MACROS: :[[@LINE-4]]:28: note: expanded from macro 'DECLARE_S93'
|
|
// CHECK-MESSAGES-MACROS: :[[@LINE-71]]:1: note: aggregate type is defined here
|
|
|
|
// Issue #113652.
|
|
struct S14;
|
|
|
|
struct S15{
|
|
S15(S14& d):d{d}{}
|
|
S14& d;
|
|
};
|
|
|
|
//Issue #133715
|
|
namespace std {
|
|
template<typename T, unsigned int N>
|
|
struct array {
|
|
T __elems[N];
|
|
};
|
|
template<typename T, typename... U>
|
|
array(T, U...) -> array<T, 1 + sizeof...(U)>;
|
|
}
|
|
|
|
std::array a{1,2,3};
|
|
std::array<int,2> b{10, 11};
|
|
using array = std::array<int, 2>;
|
|
array c{10, 11};
|
|
|
|
struct S16 {
|
|
int a;
|
|
int b;
|
|
};
|
|
|
|
using S17 = S16;
|
|
|
|
S17 s171{1, 2};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:9: warning: use designated initializer list to initialize 'S17' (aka 'S16') [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-9]]:1: note: aggregate type is defined here
|
|
// CHECK-FIXES: S17 s171{.a=1, .b=2};
|
|
// CHECK-MESSAGES-POD: :[[@LINE-4]]:9: warning: use designated initializer list to initialize 'S17' (aka 'S16') [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-12]]:1: note: aggregate type is defined here
|
|
// CHECK-FIXES-POD: S17 s171{.a=1, .b=2};
|
|
|
|
S17 s172{.a=1, 2};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:16: warning: use designated init expression to initialize field 'b' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-2]]:16: warning: use designated init expression to initialize field 'b' [modernize-use-designated-initializers]
|
|
// CHECK-FIXES: S17 s172{.a=1, .b=2};
|
|
|
|
S17 s173{.a=1, .b=2}; // no issue
|
|
|
|
typedef S16 S18;
|
|
|
|
S18 s181{1, 2};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:9: warning: use designated initializer list to initialize 'S18' (aka 'S16') [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-2]]:9: warning: use designated initializer list to initialize 'S18' (aka 'S16') [modernize-use-designated-initializers]
|
|
|
|
S18 s182{1, .b=2};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: use designated init expression to initialize field 'a' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-2]]:10: warning: use designated init expression to initialize field 'a' [modernize-use-designated-initializers]
|
|
// CHECK-FIXES: S18 s182{.a=1, .b=2};
|
|
|
|
S18 s183{.a=1, .b=2}; // no issue
|
|
|
|
struct S19 {
|
|
int i;
|
|
S17 s17;
|
|
S18 s18;
|
|
};
|
|
|
|
S19 s191{1, {2, .b=3}, {4, 5}};
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:9: warning: use designated initializer list to initialize 'S19' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-8]]:1: note: aggregate type is defined here
|
|
// CHECK-MESSAGES: :[[@LINE-3]]:14: warning: use designated init expression to initialize field 'a' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES: :[[@LINE-4]]:24: warning: use designated initializer list to initialize 'S18' (aka 'S16') [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-5]]:9: warning: use designated initializer list to initialize 'S19' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-12]]:1: note: aggregate type is defined here
|
|
// CHECK-MESSAGES-POD: :[[@LINE-7]]:14: warning: use designated init expression to initialize field 'a' [modernize-use-designated-initializers]
|
|
// CHECK-MESSAGES-POD: :[[@LINE-8]]:24: warning: use designated initializer list to initialize 'S18' (aka 'S16') [modernize-use-designated-initializers]
|
|
// CHECK-FIXES: S19 s191{.i=1, .s17={.a=2, .b=3}, .s18={.a=4, .b=5}};
|