mirror of
https://github.com/PowerShell/PowerShell
synced 2026-06-08 12:12:50 +00:00
Remove CompletionHelpers escape parameter from CompletionRequiresQuotes (#25178)
This commit is contained in:
@@ -234,7 +234,7 @@ namespace System.Management.Automation
|
||||
syntax = string.IsNullOrEmpty(syntax) ? name : syntax;
|
||||
bool needAmpersand;
|
||||
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(name, false))
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(name))
|
||||
{
|
||||
needAmpersand = quote == string.Empty && addAmpersandIfNecessary;
|
||||
string quoteInUse = quote == string.Empty ? "'" : quote;
|
||||
@@ -524,7 +524,7 @@ namespace System.Management.Automation
|
||||
+ moduleInfo.ModuleType.ToString() + "\r\nPath: "
|
||||
+ moduleInfo.Path;
|
||||
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText, false))
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText))
|
||||
{
|
||||
var quoteInUse = quote == string.Empty ? "'" : quote;
|
||||
if (quoteInUse == "'")
|
||||
@@ -1846,7 +1846,7 @@ namespace System.Management.Automation
|
||||
string completionText = entry;
|
||||
if (quote == string.Empty)
|
||||
{
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(entry, false))
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(entry))
|
||||
{
|
||||
realEntry = CodeGeneration.EscapeSingleQuotedStringContent(entry);
|
||||
completionText = "'" + realEntry + "'";
|
||||
@@ -3220,7 +3220,7 @@ namespace System.Management.Automation
|
||||
var completionText = eventLog.Log.ToString();
|
||||
var listItemText = completionText;
|
||||
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText, false))
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText))
|
||||
{
|
||||
var quoteInUse = quote == string.Empty ? "'" : quote;
|
||||
if (quoteInUse == "'")
|
||||
@@ -3311,7 +3311,7 @@ namespace System.Management.Automation
|
||||
var completionText = psJob.Name;
|
||||
var listItemText = completionText;
|
||||
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText, false))
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText))
|
||||
{
|
||||
var quoteInUse = quote == string.Empty ? "'" : quote;
|
||||
if (quoteInUse == "'")
|
||||
@@ -3386,7 +3386,7 @@ namespace System.Management.Automation
|
||||
var completionText = psJob.Name;
|
||||
var listItemText = completionText;
|
||||
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText, false))
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText))
|
||||
{
|
||||
var quoteInUse = quote == string.Empty ? "'" : quote;
|
||||
if (quoteInUse == "'")
|
||||
@@ -3526,7 +3526,7 @@ namespace System.Management.Automation
|
||||
continue;
|
||||
|
||||
uniqueSet.Add(completionText);
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText, false))
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText))
|
||||
{
|
||||
var quoteInUse = quote == string.Empty ? "'" : quote;
|
||||
if (quoteInUse == "'")
|
||||
@@ -3579,7 +3579,7 @@ namespace System.Management.Automation
|
||||
var completionText = providerInfo.Name;
|
||||
var listItemText = completionText;
|
||||
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText, false))
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText))
|
||||
{
|
||||
var quoteInUse = quote == string.Empty ? "'" : quote;
|
||||
if (quoteInUse == "'")
|
||||
@@ -3627,7 +3627,7 @@ namespace System.Management.Automation
|
||||
var completionText = driveInfo.Name;
|
||||
var listItemText = completionText;
|
||||
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText, false))
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText))
|
||||
{
|
||||
var quoteInUse = quote == string.Empty ? "'" : quote;
|
||||
if (quoteInUse == "'")
|
||||
@@ -3678,7 +3678,7 @@ namespace System.Management.Automation
|
||||
var completionText = serviceInfo.DisplayName;
|
||||
var listItemText = completionText;
|
||||
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText, false))
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText))
|
||||
{
|
||||
var quoteInUse = quote == string.Empty ? "'" : quote;
|
||||
if (quoteInUse == "'")
|
||||
@@ -3709,7 +3709,7 @@ namespace System.Management.Automation
|
||||
var completionText = serviceInfo.Name;
|
||||
var listItemText = completionText;
|
||||
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText, false))
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText))
|
||||
{
|
||||
var quoteInUse = quote == string.Empty ? "'" : quote;
|
||||
if (quoteInUse == "'")
|
||||
@@ -3765,7 +3765,7 @@ namespace System.Management.Automation
|
||||
completionText = completionText.Replace("*", "`*");
|
||||
}
|
||||
|
||||
if (!completionText.Equals("$", StringComparison.Ordinal) && CompletionHelpers.CompletionRequiresQuotes(completionText, false))
|
||||
if (!completionText.Equals("$", StringComparison.Ordinal) && CompletionHelpers.CompletionRequiresQuotes(completionText))
|
||||
{
|
||||
var quoteInUse = effectiveQuote == string.Empty ? "'" : effectiveQuote;
|
||||
if (quoteInUse == "'")
|
||||
@@ -3815,7 +3815,7 @@ namespace System.Management.Automation
|
||||
var completionText = aliasInfo.Name;
|
||||
var listItemText = completionText;
|
||||
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText, false))
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText))
|
||||
{
|
||||
var quoteInUse = quote == string.Empty ? "'" : quote;
|
||||
if (quoteInUse == "'")
|
||||
@@ -3878,7 +3878,7 @@ namespace System.Management.Automation
|
||||
var completionText = trace.Name;
|
||||
var listItemText = completionText;
|
||||
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText, false))
|
||||
if (CompletionHelpers.CompletionRequiresQuotes(completionText))
|
||||
{
|
||||
var quoteInUse = quote == string.Empty ? "'" : quote;
|
||||
if (quoteInUse == "'")
|
||||
|
||||
@@ -14,8 +14,6 @@ namespace System.Management.Automation
|
||||
{
|
||||
private static readonly SearchValues<char> s_defaultCharsToCheck = SearchValues.Create("$`");
|
||||
|
||||
private static readonly SearchValues<char> s_escapeCharsToCheck = SearchValues.Create("$[]`");
|
||||
|
||||
/// <summary>
|
||||
/// Get matching completions from word to complete.
|
||||
/// This makes it easier to handle different variations of completions with consideration of quotes.
|
||||
@@ -121,14 +119,12 @@ namespace System.Management.Automation
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
internal static bool CompletionRequiresQuotes(string completion, bool escape)
|
||||
internal static bool CompletionRequiresQuotes(string completion)
|
||||
{
|
||||
// If the tokenizer sees the completion as more than two tokens, or if there is some error, then
|
||||
// some form of quoting is necessary (if it's a variable, we'd need ${}, filenames would need [], etc.)
|
||||
|
||||
Language.Token[] tokens;
|
||||
ParseError[] errors;
|
||||
Language.Parser.ParseInput(completion, out tokens, out errors);
|
||||
Parser.ParseInput(completion, out Token[] tokens, out ParseError[] errors);
|
||||
|
||||
// Expect no errors and 2 tokens (1 is for our completion, the other is eof)
|
||||
// Or if the completion is a keyword, we ignore the errors
|
||||
@@ -136,13 +132,13 @@ namespace System.Management.Automation
|
||||
if ((!requireQuote && tokens[0] is StringToken) ||
|
||||
(tokens.Length == 2 && (tokens[0].TokenFlags & TokenFlags.Keyword) != 0))
|
||||
{
|
||||
requireQuote = ContainsCharsToCheck(tokens[0].Text, escape);
|
||||
requireQuote = ContainsCharsToCheck(tokens[0].Text);
|
||||
}
|
||||
|
||||
return requireQuote;
|
||||
}
|
||||
|
||||
private static bool ContainsCharsToCheck(ReadOnlySpan<char> text, bool escape)
|
||||
=> text.ContainsAny(escape ? s_escapeCharsToCheck : s_defaultCharsToCheck);
|
||||
private static bool ContainsCharsToCheck(ReadOnlySpan<char> text)
|
||||
=> text.ContainsAny(s_defaultCharsToCheck);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user