summaryrefslogtreecommitdiff
path: root/tests/diagnostics
diff options
context:
space:
mode:
Diffstat (limited to 'tests/diagnostics')
-rw-r--r--tests/diagnostics/bad-operator-call.slang33
-rw-r--r--tests/diagnostics/bad-operator-call.slang.expected52
-rw-r--r--tests/diagnostics/enum-implicit-conversion.slang.expected2
3 files changed, 86 insertions, 1 deletions
diff --git a/tests/diagnostics/bad-operator-call.slang b/tests/diagnostics/bad-operator-call.slang
new file mode 100644
index 000000000..449d2dbc1
--- /dev/null
+++ b/tests/diagnostics/bad-operator-call.slang
@@ -0,0 +1,33 @@
+// bad-operator-call.slang
+//DIAGNOSTIC_TEST(windows):SIMPLE:
+
+// Test that bad calls to operators produce reasonable diagnostic messages.
+
+// Note: This test is currently Windows-only becase our Linux builds
+// seem to print references to the stdlib code with paths that don't
+// match the Windows build (which generated our baseline).
+
+struct S {}
+
+void test()
+{
+ int a;
+ S b;
+
+ a += b;
+
+ a = a + b;
+
+ a = ~b;
+
+ vector<int, 4> c;
+ vector<float, 3> d;
+
+ a += c;
+
+ c = a + c;
+
+ d += c;
+
+ d = c + d;
+} \ No newline at end of file
diff --git a/tests/diagnostics/bad-operator-call.slang.expected b/tests/diagnostics/bad-operator-call.slang.expected
new file mode 100644
index 000000000..c125165e4
--- /dev/null
+++ b/tests/diagnostics/bad-operator-call.slang.expected
@@ -0,0 +1,52 @@
+result code = -1
+standard error = {
+tests/diagnostics/bad-operator-call.slang(17): error 39999: no overload for '+=' applicable to arguments of type (int, S)
+core.meta.slang(1740): note 39999: candidate: func +=<T, R:int, C:int>(matrix<T,R,C>, T) -> matrix<T,R,C>
+core.meta.slang(1732): note 39999: candidate: func +=<T, R:int, C:int>(matrix<T,R,C>, matrix<T,R,C>) -> matrix<T,R,C>
+core.meta.slang(1724): note 39999: candidate: func +=<T, N:int>(vector<T,N>, T) -> vector<T,N>
+core.meta.slang(1716): note 39999: candidate: func +=<T, N:int>(vector<T,N>, vector<T,N>) -> vector<T,N>
+core.meta.slang(1708): note 39999: candidate: func +=<T>(T, T) -> T
+tests/diagnostics/bad-operator-call.slang(19): error 39999: no overload for '+' applicable to arguments of type (int, S)
+core.meta.slang(1630): note 39999: candidate: func +(uint64_t, uint64_t) -> uint64_t
+core.meta.slang(1623): note 39999: candidate: func +(uint, uint) -> uint
+core.meta.slang(1616): note 39999: candidate: func +(uint16_t, uint16_t) -> uint16_t
+core.meta.slang(1609): note 39999: candidate: func +(uint8_t, uint8_t) -> uint8_t
+core.meta.slang(1602): note 39999: candidate: func +(double, double) -> double
+core.meta.slang(1595): note 39999: candidate: func +(float, float) -> float
+core.meta.slang(1588): note 39999: candidate: func +(half, half) -> half
+core.meta.slang(1581): note 39999: candidate: func +(int64_t, int64_t) -> int64_t
+core.meta.slang(1574): note 39999: candidate: func +(int, int) -> int
+core.meta.slang(1567): note 39999: candidate: func +(int16_t, int16_t) -> int16_t
+tests/diagnostics/bad-operator-call.slang(19): note 39999: 1 more overload candidates
+tests/diagnostics/bad-operator-call.slang(21): error 39999: no overload for '~' applicable to arguments of type (S)
+slang-stdlib.cpp(1641): note 39999: candidate: func ~(uint64_t) -> uint64_t
+slang-stdlib.cpp(1638): note 39999: candidate: func ~(uint) -> uint
+slang-stdlib.cpp(1635): note 39999: candidate: func ~(uint16_t) -> uint16_t
+slang-stdlib.cpp(1632): note 39999: candidate: func ~(uint8_t) -> uint8_t
+slang-stdlib.cpp(1629): note 39999: candidate: func ~(int64_t) -> int64_t
+slang-stdlib.cpp(1626): note 39999: candidate: func ~(int) -> int
+slang-stdlib.cpp(1623): note 39999: candidate: func ~(int16_t) -> int16_t
+slang-stdlib.cpp(1620): note 39999: candidate: func ~(int8_t) -> int8_t
+tests/diagnostics/bad-operator-call.slang(26): error 30047: argument passed to parameter '0' must be l-value.
+tests/diagnostics/bad-operator-call.slang(26): note 30048: argument was implicitly cast from 'int' to 'vector<int,4>', and Slang does not support using an implicit cast as an l-value
+tests/diagnostics/bad-operator-call.slang(30): error 39999: no overload for '+=' applicable to arguments of type (vector<float,3>, vector<int,4>)
+core.meta.slang(1740): note 39999: candidate: func +=<T, R:int, C:int>(matrix<T,R,C>, T) -> matrix<T,R,C>
+core.meta.slang(1732): note 39999: candidate: func +=<T, R:int, C:int>(matrix<T,R,C>, matrix<T,R,C>) -> matrix<T,R,C>
+core.meta.slang(1724): note 39999: candidate: func +=<T, N:int>(vector<T,N>, T) -> vector<T,N>
+core.meta.slang(1716): note 39999: candidate: func +=<T, N:int>(vector<T,N>, vector<T,N>) -> vector<T,N>
+core.meta.slang(1708): note 39999: candidate: func +=<T>(T, T) -> T
+tests/diagnostics/bad-operator-call.slang(32): error 39999: no overload for '+' applicable to arguments of type (vector<int,4>, vector<float,3>)
+core.meta.slang(1635): note 39999: candidate: func +<4>(vector<uint64_t,4>, uint64_t) -> vector<uint64_t,4>
+core.meta.slang(1633): note 39999: candidate: func +<3>(uint64_t, vector<uint64_t,3>) -> vector<uint64_t,3>
+core.meta.slang(1630): note 39999: candidate: func +(uint64_t, uint64_t) -> uint64_t
+core.meta.slang(1628): note 39999: candidate: func +<4>(vector<uint,4>, uint) -> vector<uint,4>
+core.meta.slang(1626): note 39999: candidate: func +<3>(uint, vector<uint,3>) -> vector<uint,3>
+core.meta.slang(1623): note 39999: candidate: func +(uint, uint) -> uint
+core.meta.slang(1621): note 39999: candidate: func +<4>(vector<uint16_t,4>, uint16_t) -> vector<uint16_t,4>
+core.meta.slang(1619): note 39999: candidate: func +<3>(uint16_t, vector<uint16_t,3>) -> vector<uint16_t,3>
+core.meta.slang(1616): note 39999: candidate: func +(uint16_t, uint16_t) -> uint16_t
+core.meta.slang(1614): note 39999: candidate: func +<4>(vector<uint8_t,4>, uint8_t) -> vector<uint8_t,4>
+tests/diagnostics/bad-operator-call.slang(32): note 39999: 23 more overload candidates
+}
+standard output = {
+}
diff --git a/tests/diagnostics/enum-implicit-conversion.slang.expected b/tests/diagnostics/enum-implicit-conversion.slang.expected
index c102c6012..5faca78e6 100644
--- a/tests/diagnostics/enum-implicit-conversion.slang.expected
+++ b/tests/diagnostics/enum-implicit-conversion.slang.expected
@@ -6,7 +6,7 @@ tests/diagnostics/enum-implicit-conversion.slang(34): error 30019: expected an e
tests/diagnostics/enum-implicit-conversion.slang(34): note: explicit conversion from 'Color' to 'int' is possible
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(42): error 39999: ambiguous call to 'foo' with arguments of type (Color)
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
}