infer enum types

This commit is contained in:
nub31
2026-02-26 20:44:29 +01:00
parent aa5bf0b568
commit 3323d760e8
3 changed files with 24 additions and 15 deletions

View File

@@ -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;
}