summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/diagnostics/enum-implicit-conversion.slang.expected4
-rw-r--r--tests/front-end/diamond.slang32
2 files changed, 34 insertions, 2 deletions
diff --git a/tests/diagnostics/enum-implicit-conversion.slang.expected b/tests/diagnostics/enum-implicit-conversion.slang.expected
index 1fc0c3dc6..c102c6012 100644
--- a/tests/diagnostics/enum-implicit-conversion.slang.expected
+++ b/tests/diagnostics/enum-implicit-conversion.slang.expected
@@ -7,8 +7,8 @@ tests/diagnostics/enum-implicit-conversion.slang(34): note: explicit conversion
tests/diagnostics/enum-implicit-conversion.slang(35): error 30019: expected an expression of type 'uint', got 'Color'
tests/diagnostics/enum-implicit-conversion.slang(35): note: explicit conversion from 'Color' to 'uint' is possible
tests/diagnostics/enum-implicit-conversion.slang(42): error 39999: ambiguous call to overloaded operation with arguments of type (Color)
-tests/diagnostics/enum-implicit-conversion.slang(18): note 39999: candidate: foo(uint)
-tests/diagnostics/enum-implicit-conversion.slang(17): note 39999: candidate: foo(int)
+tests/diagnostics/enum-implicit-conversion.slang(18): note 39999: candidate: func foo(uint) -> int
+tests/diagnostics/enum-implicit-conversion.slang(17): note 39999: candidate: func foo(int) -> int
}
standard output = {
}
diff --git a/tests/front-end/diamond.slang b/tests/front-end/diamond.slang
new file mode 100644
index 000000000..bcb1bbd43
--- /dev/null
+++ b/tests/front-end/diamond.slang
@@ -0,0 +1,32 @@
+// diamond.slang
+
+//TEST:SIMPLE:
+
+// Test to confirm that Slang can handle a "diamond"
+// multiple inheritance pattern between interfaces,
+// without having lookup ambiguity issues at use
+// sites.
+
+interface A { float getA(); }
+
+interface B : A {}
+
+interface C : A {}
+
+interface D : B, C {}
+
+float doIt<T : D>(T value)
+{
+ return value.getA();
+}
+
+struct Thing : D
+{
+ float getA() { return 0.0f; }
+}
+
+float test()
+{
+ Thing thing;
+ return doIt(thing);
+} \ No newline at end of file