From 7cd8130e1a3dbcca8746e0577fb8df3bf2975bf8 Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 7 Aug 2025 08:10:02 -0700 Subject: Support `expand` on concrete tuple values. (#8106) Closes #8061. Along with the fix, also enhanced coercion/overload resolution to filter candidates based on the target type, allowing `tests\language-feature\higher-order-functions\overloaded.slang` to pass. --- .../higher-order-functions/overloaded.slang | 13 ++++++++++--- .../higher-order-functions/overloaded.slang.expected | 8 -------- 2 files changed, 10 insertions(+), 11 deletions(-) delete mode 100644 tests/language-feature/higher-order-functions/overloaded.slang.expected (limited to 'tests/language-feature/higher-order-functions') diff --git a/tests/language-feature/higher-order-functions/overloaded.slang b/tests/language-feature/higher-order-functions/overloaded.slang index ebbc6ed19..d3d495bc1 100644 --- a/tests/language-feature/higher-order-functions/overloaded.slang +++ b/tests/language-feature/higher-order-functions/overloaded.slang @@ -1,11 +1,11 @@ -//TEST:SIMPLE: +//TEST:INTERPRET(filecheck=CHECK): func foo(f : functype (float) -> int) -> int{ return f(0); } int bit(T) { - return 1; + return 10; } int bit(vector) { @@ -13,6 +13,13 @@ int bit(vector) { } int zit() { - // In an ideal world in this case we could infer that we want bit + // even though foo is overloaded, we should still be able to infer that we want bit + // based on the parameter (expected) type. return foo(bit); } + +void main() +{ + // CHECK: 10 + printf("%d\n", zit()); +} \ No newline at end of file diff --git a/tests/language-feature/higher-order-functions/overloaded.slang.expected b/tests/language-feature/higher-order-functions/overloaded.slang.expected deleted file mode 100644 index 3d02bf06f..000000000 --- a/tests/language-feature/higher-order-functions/overloaded.slang.expected +++ /dev/null @@ -1,8 +0,0 @@ -result code = -1 -standard error = { -tests/language-feature/higher-order-functions/overloaded.slang(17): error 39999: passing overloaded functions to higher order functions is not supported - return foo(bit); - ^ -} -standard output = { -} -- cgit v1.2.3