diff options
| author | Yong He <yonghe@outlook.com> | 2025-09-09 22:14:05 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-10 05:14:05 +0000 |
| commit | 43dffcde78227113a0e62b02857eaf4ed6ea6e7e (patch) | |
| tree | 5cf38f83d37188651b938aa73d5e07fadd107a26 /tests | |
| parent | 7026dec790ab0c239c58ebf72b17633e9e8765c3 (diff) | |
Fix language server auto-complete regression in debug build. (#8416)
Fixes this regression:
```slang
struct MyType
{
// Regression Condition 1: there must be more than one member in the lookup scope.
float v;
int getSum() { return 0; }
}
void m(MyType t)
{
// Regression condition 2: the completion must be in an init expression.
// Regression condition 3: none of the candidate members can coerce to the expected type.
// Regression behavior: no completion candidates are shown, because
// SemanticsVisitor::resolveOverloadedLookup throws an error when there are 0 applicable candidates
// after type coercion filtering.
Texture2D x = t.; // completion request after . here
}
```
The root cause is that we shouldn't be applying candidate filtering on
the candidate list when in completion checking mode.
Closes #8417.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/language-server/completion-in-initexpr.slang | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/language-server/completion-in-initexpr.slang b/tests/language-server/completion-in-initexpr.slang new file mode 100644 index 000000000..8eec82991 --- /dev/null +++ b/tests/language-server/completion-in-initexpr.slang @@ -0,0 +1,20 @@ +//TEST:LANG_SERVER(filecheck=CHECK): +//COMPLETE:17,21 +struct MyType +{ + // Regression Condition 1: there must be more than one member in the lookup scope. + float v; + int getSum() { return 0; } +} + +void m(MyType t) +{ + // Regression condition 2: the completion must be in an init expression. + // Regression condition 3: none of the candidate members can coerce to the expected type. + // Regression behavior: no completion candidates are shown, because + // SemanticsVisitor::resolveOverloadedLookup throws an error when there are 0 applicable candidates + // after type coercion filtering. + Texture2D x = t.; +} + +// CHECK: getSum |
