summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/diagnostics/uninitialized-fields-delegated.slang46
-rw-r--r--tests/diagnostics/uninitialized-fields.slang18
2 files changed, 46 insertions, 18 deletions
diff --git a/tests/diagnostics/uninitialized-fields-delegated.slang b/tests/diagnostics/uninitialized-fields-delegated.slang
new file mode 100644
index 000000000..e3777f477
--- /dev/null
+++ b/tests/diagnostics/uninitialized-fields-delegated.slang
@@ -0,0 +1,46 @@
+//TEST:SIMPLE(filecheck=CHK): -target spirv
+
+// Delegated constructors
+struct Impl
+{
+ float x;
+
+ __init(float val)
+ {
+ x = val;
+ }
+
+ __init()
+ {
+ float val = 2.0;
+
+ // Shouldn't trigger a warning here
+ return Impl(val);
+ }
+}
+
+// Calling a method from a constructor to initialize fields
+struct HitInfo
+{
+ float3 barycentrics;
+ uint primitiveIndex;
+
+ [[mutating]] void init(float2 hitBarycentrics, uint hitPrimitiveIndex)
+ {
+ barycentrics = { 1.0 - hitBarycentrics.x - hitBarycentrics.y, hitBarycentrics.x, hitBarycentrics.y };
+ primitiveIndex = hitPrimitiveIndex;
+ }
+
+ __init(float2 hitBarycentrics, uint hitPrimitiveIndex)
+ {
+ init(hitBarycentrics, hitPrimitiveIndex);
+ }
+
+ __init(BuiltInTriangleIntersectionAttributes attr)
+ {
+ init(attr.barycentrics, PrimitiveIndex());
+ }
+}
+
+//CHK-NOT: warning 41020
+//CHK-NOT: warning 41021
diff --git a/tests/diagnostics/uninitialized-fields.slang b/tests/diagnostics/uninitialized-fields.slang
index 29e065d2b..c5fa37aad 100644
--- a/tests/diagnostics/uninitialized-fields.slang
+++ b/tests/diagnostics/uninitialized-fields.slang
@@ -86,23 +86,5 @@ struct Pass
int y = 0;
}
-struct Impl
-{
- float x;
-
- __init(float val)
- {
- x = val;
- }
-
- __init()
- {
- float val = 2.0;
-
- // Shouldn't trigger a warning here
- return Impl(val);
- }
-}
-
//CHK-NOT: warning 41020
//CHK-NOT: warning 41021