diff options
| author | kaizhangNV <149626564+kaizhangNV@users.noreply.github.com> | 2025-02-05 12:37:03 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-05 10:37:03 -0800 |
| commit | 9ec6b91686b651d959fd9ffbec283845bd725dd6 (patch) | |
| tree | 2c48202cb04b76e5ddcb274be35529378ddf8f31 /tests/language-feature/struct-field-initializers | |
| parent | 4b350645042b8e8fbdad19784ee745d11c7bc616 (diff) | |
Feature/initialize list side branch (#6058)
* SP004: implement initialize list translation to ctor
- We synthesize a member-wise constructor for each struct follow
the rules described in SP004.
- Add logic to translate the initialize list to constructor invoke
- Add cuda-host decoration for the synthesized constructor
- Remove the default constructor when we have a valid member init constructor
- Disable -zero-initialize option, will re-implement it in followup (#6109).
- Fix the overload lookup issue
When creating invoke expression for ctor, we need to call
ResolveInvoke() to find us the best candidates, however
the existing lookup logic could find us the base constructor
for child struct, we should eliminate this case by providing
the LookupOptions::IgnoreInheritance to lookup, this requires
us to create a subcontext on SemanticsVisitor to indicate that
we only want to use this option on looking the constructor.
- Do not implicit initialize a struct that doesn't have explicit default
constructor.
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
Diffstat (limited to 'tests/language-feature/struct-field-initializers')
4 files changed, 13 insertions, 13 deletions
diff --git a/tests/language-feature/struct-field-initializers/struct-field-initializer-import.slang b/tests/language-feature/struct-field-initializers/struct-field-initializer-import.slang index 6c8b6fee1..1478fae0b 100644 --- a/tests/language-feature/struct-field-initializers/struct-field-initializer-import.slang +++ b/tests/language-feature/struct-field-initializers/struct-field-initializer-import.slang @@ -15,12 +15,12 @@ void modifyOut(out DefaultStructNoInit2 noInit2) [numthreads(1, 1, 1)] void computeMain(uint3 dispatchThreadID: SV_DispatchThreadID) { - DefaultStructNoInit noInit; - DefaultStructNoInit2 noInit2; + DefaultStructNoInit noInit = {}; + DefaultStructNoInit2 noInit2 = {}; modifyOut(noInit2); // BUF: 1 outputBuffer[0] = true && noInit.data0 == 2 && noInit2.data0 == 2 ; -}
\ No newline at end of file +} diff --git a/tests/language-feature/struct-field-initializers/struct-field-initializer-inherited-chain.slang b/tests/language-feature/struct-field-initializers/struct-field-initializer-inherited-chain.slang index ef21a452f..e6f856a21 100644 --- a/tests/language-feature/struct-field-initializers/struct-field-initializer-inherited-chain.slang +++ b/tests/language-feature/struct-field-initializers/struct-field-initializer-inherited-chain.slang @@ -29,10 +29,10 @@ struct DefaultStruct_top : DefaultStruct_middle2 [numthreads(1, 1, 1)] void computeMain(uint3 dispatchThreadID: SV_DispatchThreadID) { - DefaultStruct_bottom s1; - DefaultStruct_middle1 s2; - DefaultStruct_middle2 s3; - DefaultStruct_top s4; + DefaultStruct_bottom s1 = {}; + DefaultStruct_middle1 s2 = {}; + DefaultStruct_middle2 s3 = {}; + DefaultStruct_top s4 = {}; // BUF: 1 outputBuffer[0] = true @@ -50,4 +50,4 @@ void computeMain(uint3 dispatchThreadID: SV_DispatchThreadID) && s4.data2 == 1 && s4.data3 == 1 ; -}
\ No newline at end of file +} diff --git a/tests/language-feature/struct-field-initializers/struct-field-initializer-inherited.slang b/tests/language-feature/struct-field-initializers/struct-field-initializer-inherited.slang index 8edb98447..954a1edbe 100644 --- a/tests/language-feature/struct-field-initializers/struct-field-initializer-inherited.slang +++ b/tests/language-feature/struct-field-initializers/struct-field-initializer-inherited.slang @@ -46,10 +46,10 @@ struct DefaultStruct4 : DefaultStruct_base [numthreads(1, 1, 1)] void computeMain(uint3 dispatchThreadID: SV_DispatchThreadID) { - DefaultStruct1 s1; + DefaultStruct1 s1 = {}; DefaultStruct2 s2; DefaultStruct3 s3; - DefaultStruct4 s4; + DefaultStruct4 s4 = {}; // BUF: 1 outputBuffer[0] = true && s1.data0 == 1 @@ -63,4 +63,4 @@ void computeMain(uint3 dispatchThreadID: SV_DispatchThreadID) && s4.data0 == 1 && s4.data1 == 1 ; -}
\ No newline at end of file +} diff --git a/tests/language-feature/struct-field-initializers/struct-field-initializer-static.slang b/tests/language-feature/struct-field-initializers/struct-field-initializer-static.slang index b2ed006be..d6f9d3612 100644 --- a/tests/language-feature/struct-field-initializers/struct-field-initializer-static.slang +++ b/tests/language-feature/struct-field-initializers/struct-field-initializer-static.slang @@ -23,7 +23,7 @@ struct DefaultStructNoInit : DefaultStructNoInit_base void computeMain(uint3 dispatchThreadID: SV_DispatchThreadID) { DefaultStructNoInit::data4 = 0; - DefaultStructNoInit noInit; + DefaultStructNoInit noInit = {}; // BUF: 1 outputBuffer[0] = true && noInit.data0 == 2 @@ -32,4 +32,4 @@ void computeMain(uint3 dispatchThreadID: SV_DispatchThreadID) && noInit.data3 == 2 && noInit.data4 == 0; ; -}
\ No newline at end of file +} |
