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:
iSazonov
2016-11-18 14:00:26 -08:00
committed by Jason Shirk
parent 469924d855
commit 4edde10fda
2 changed files with 24 additions and 14 deletions
@@ -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) }