summaryrefslogtreecommitdiff
path: root/tests/language-feature/struct-field-initializers
diff options
context:
space:
mode:
authorkaizhangNV <149626564+kaizhangNV@users.noreply.github.com>2025-02-05 12:37:03 -0600
committerGitHub <noreply@github.com>2025-02-05 10:37:03 -0800
commit9ec6b91686b651d959fd9ffbec283845bd725dd6 (patch)
tree2c48202cb04b76e5ddcb274be35529378ddf8f31 /tests/language-feature/struct-field-initializers
parent4b350645042b8e8fbdad19784ee745d11c7bc616 (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')
-rw-r--r--tests/language-feature/struct-field-initializers/struct-field-initializer-import.slang6
-rw-r--r--tests/language-feature/struct-field-initializers/struct-field-initializer-inherited-chain.slang10
-rw-r--r--tests/language-feature/struct-field-initializers/struct-field-initializer-inherited.slang6
-rw-r--r--tests/language-feature/struct-field-initializers/struct-field-initializer-static.slang4
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
+}