Fix a regression in the API CompletionCompleters.CompleteFilename() that causes null reference exception (#26291)

This commit is contained in:
Dongbo Wang
2025-10-23 16:19:55 -07:00
committed by GitHub
parent b0507ca4cf
commit 38f9885173
2 changed files with 25 additions and 2 deletions
@@ -4580,8 +4580,8 @@ namespace System.Management.Automation
return CommandCompletion.EmptyCompletionResult;
}
var lastAst = context.RelatedAsts[^1];
if (lastAst.Parent is UsingStatementAst usingStatement
var lastAst = context.RelatedAsts?[^1];
if (lastAst?.Parent is UsingStatementAst usingStatement
&& usingStatement.UsingStatementKind is UsingStatementKind.Module or UsingStatementKind.Assembly
&& lastAst.Extent.File is not null)
{
@@ -126,4 +126,27 @@ Describe "Tab completion bug fix" -Tags "CI" {
$Runspace.Dispose()
}
}
It "Issue#26277 - [CompletionCompleters]::CompleteFilename('') should work" {
$testDir = Join-Path $TestDrive "TempTestDir"
$file1 = Join-Path $testDir "abc.ps1"
$file2 = Join-Path $testDir "def.py"
New-Item -ItemType Directory -Path $testDir > $null
New-Item -ItemType File -Path $file1 > $null
New-Item -ItemType File -Path $file2 > $null
try {
Push-Location -Path $testDir
$result = [System.Management.Automation.CompletionCompleters]::CompleteFilename("")
$result | Should -Not -Be $null
$result | Measure-Object | ForEach-Object -MemberName Count | Should -Be 2
$item1, $item2 = @($result)
$item1.ListItemText | Should -BeExactly 'abc.ps1'
$item2.ListItemText | Should -BeExactly 'def.py'
} finally {
Pop-Location
}
}
}