diff options
Diffstat (limited to 'tests/diagnostics')
| -rw-r--r-- | tests/diagnostics/bad-operator-call.slang | 33 | ||||
| -rw-r--r-- | tests/diagnostics/bad-operator-call.slang.expected | 52 | ||||
| -rw-r--r-- | tests/diagnostics/enum-implicit-conversion.slang.expected | 2 |
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 } |
