mirror of
https://github.com/PowerShell/PowerShell
synced 2026-06-08 12:12:50 +00:00
Now Enum values definition have space-insensitive syntax (#2690)
Fix to support whitespace after the `=` and before the value expression.
This commit is contained in:
@@ -4311,23 +4311,33 @@ namespace System.Management.Automation.Language
|
||||
|
||||
IScriptExtent endExtent = enumeratorName.Extent;
|
||||
ExpressionAst initialValueAst = null;
|
||||
var assignToken = PeekToken();
|
||||
var missingInitializer = false;
|
||||
if (assignToken.Kind == TokenKind.Equals)
|
||||
var oldTokenizerMode = _tokenizer.Mode;
|
||||
Token assignToken = null;
|
||||
try
|
||||
{
|
||||
SkipToken();
|
||||
initialValueAst = ExpressionRule();
|
||||
if (initialValueAst == null)
|
||||
SetTokenizerMode(TokenizerMode.Expression);
|
||||
assignToken = PeekToken();
|
||||
if (assignToken.Kind == TokenKind.Equals)
|
||||
{
|
||||
ReportError(After(assignToken), () => ParserStrings.ExpectedValueExpression, assignToken.Kind.Text());
|
||||
endExtent = assignToken.Extent;
|
||||
missingInitializer = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
endExtent = initialValueAst.Extent;
|
||||
SkipToken();
|
||||
initialValueAst = ExpressionRule();
|
||||
if (initialValueAst == null)
|
||||
{
|
||||
ReportError(After(assignToken), () => ParserStrings.ExpectedValueExpression, assignToken.Kind.Text());
|
||||
endExtent = assignToken.Extent;
|
||||
missingInitializer = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
endExtent = initialValueAst.Extent;
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
SetTokenizerMode(oldTokenizerMode);
|
||||
}
|
||||
|
||||
Token terminatorToken = PeekToken();
|
||||
if (terminatorToken.Kind != TokenKind.NewLine && terminatorToken.Kind != TokenKind.Semi && terminatorToken.Kind != TokenKind.RCurly)
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#
|
||||
|
||||
Describe 'enums' -Tags "CI" {
|
||||
|
||||
Context 'basic enums' {
|
||||
enum E1
|
||||
{
|
||||
@@ -62,9 +61,10 @@ Describe 'enums' -Tags "CI" {
|
||||
e0 = [E6]::e0 + 2
|
||||
}
|
||||
|
||||
# Don't add space after 'e0 ='! Fix #2543
|
||||
enum E6
|
||||
{
|
||||
e0 = 38
|
||||
e0 =38
|
||||
}
|
||||
|
||||
It 'E4 has correct value' { [E4]::e0 | Should Be ([E4]42) }
|
||||
|
||||
Reference in New Issue
Block a user