infer enum types
This commit is contained in:
@@ -381,15 +381,10 @@ public class Parser
|
||||
}
|
||||
else if (TryExpectKeyword(Keyword.Enum))
|
||||
{
|
||||
var module = ExpectIdent();
|
||||
ExpectSymbol(Symbol.ColonColon);
|
||||
var enumName = ExpectIdent();
|
||||
ExpectSymbol(Symbol.ColonColon);
|
||||
var variantName = ExpectIdent();
|
||||
|
||||
var type = ParseType();
|
||||
var value = ParseExpression();
|
||||
|
||||
expr = new NodeExpressionEnumLiteral(TokensFrom(startIndex), module, enumName, variantName, value);
|
||||
expr = new NodeExpressionEnumLiteral(TokensFrom(startIndex), type, value);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -846,11 +841,9 @@ public class NodeExpressionStructLiteral(List<Token> tokens, NodeType? type, Lis
|
||||
}
|
||||
}
|
||||
|
||||
public class NodeExpressionEnumLiteral(List<Token> tokens, TokenIdent module, TokenIdent enumName, TokenIdent variantName, NodeExpression value) : NodeExpression(tokens)
|
||||
public class NodeExpressionEnumLiteral(List<Token> tokens, NodeType type, NodeExpression value) : NodeExpression(tokens)
|
||||
{
|
||||
public TokenIdent Module { get; } = module;
|
||||
public TokenIdent EnumName { get; } = enumName;
|
||||
public TokenIdent VariantName { get; } = variantName;
|
||||
public NodeType Type { get; } = type;
|
||||
public NodeExpression Value { get; } = value;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user