Small refactoring
This commit is contained in:
@@ -1247,15 +1247,10 @@ public class QBEGenerator
|
|||||||
return (offset + alignment - 1) & ~(alignment - 1);
|
return (offset + alignment - 1) & ~(alignment - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int OffsetOf(StructNode structDef, string member)
|
private static int OffsetOf(StructNode structDef, string member)
|
||||||
{
|
{
|
||||||
var offset = 0;
|
var offset = 0;
|
||||||
|
|
||||||
// if (structDef.InterfaceImplementations.Any())
|
|
||||||
// {
|
|
||||||
// offset = 8;
|
|
||||||
// }
|
|
||||||
|
|
||||||
foreach (var field in structDef.Fields)
|
foreach (var field in structDef.Fields)
|
||||||
{
|
{
|
||||||
if (field.Name == member)
|
if (field.Name == member)
|
||||||
|
|||||||
@@ -75,16 +75,12 @@ public sealed class Parser
|
|||||||
|
|
||||||
while (!TryExpectSymbol(Symbol.CloseParen))
|
while (!TryExpectSymbol(Symbol.CloseParen))
|
||||||
{
|
{
|
||||||
var parameter = ParseFuncParameter();
|
parameters.Add(ParseFuncParameter());
|
||||||
parameters.Add(parameter);
|
|
||||||
|
|
||||||
if (!TryExpectSymbol(Symbol.Comma) && CurrentToken is not SymbolToken { Symbol: Symbol.CloseParen })
|
if (!TryExpectSymbol(Symbol.Comma))
|
||||||
{
|
{
|
||||||
_diagnostics.Add(Diagnostic
|
ExpectSymbol(Symbol.CloseParen);
|
||||||
.Warning("Missing comma between function parameters")
|
break;
|
||||||
.WithHelp("Add a ',' to separate parameters")
|
|
||||||
.At(CurrentToken)
|
|
||||||
.Build());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -491,17 +487,14 @@ public sealed class Parser
|
|||||||
if (TryExpectSymbol(Symbol.OpenParen))
|
if (TryExpectSymbol(Symbol.OpenParen))
|
||||||
{
|
{
|
||||||
var parameters = new List<ExpressionSyntax>();
|
var parameters = new List<ExpressionSyntax>();
|
||||||
|
|
||||||
while (!TryExpectSymbol(Symbol.CloseParen))
|
while (!TryExpectSymbol(Symbol.CloseParen))
|
||||||
{
|
{
|
||||||
var parameter = ParseExpression();
|
parameters.Add(ParseExpression());
|
||||||
parameters.Add(parameter);
|
if (!TryExpectSymbol(Symbol.Comma))
|
||||||
if (!TryExpectSymbol(Symbol.Comma) && CurrentToken is not SymbolToken { Symbol: Symbol.CloseParen })
|
|
||||||
{
|
{
|
||||||
_diagnostics.Add(Diagnostic
|
ExpectSymbol(Symbol.CloseParen);
|
||||||
.Warning("Missing comma between function arguments")
|
break;
|
||||||
.WithHelp("Add a ',' to separate arguments")
|
|
||||||
.At(CurrentToken)
|
|
||||||
.Build());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -524,17 +517,14 @@ public sealed class Parser
|
|||||||
if (TryExpectSymbol(Symbol.OpenParen))
|
if (TryExpectSymbol(Symbol.OpenParen))
|
||||||
{
|
{
|
||||||
var parameters = new List<ExpressionSyntax>();
|
var parameters = new List<ExpressionSyntax>();
|
||||||
|
|
||||||
while (!TryExpectSymbol(Symbol.CloseParen))
|
while (!TryExpectSymbol(Symbol.CloseParen))
|
||||||
{
|
{
|
||||||
var parameter = ParseExpression();
|
parameters.Add(ParseExpression());
|
||||||
parameters.Add(parameter);
|
if (!TryExpectSymbol(Symbol.Comma))
|
||||||
if (!TryExpectSymbol(Symbol.Comma) && CurrentToken is not SymbolToken { Symbol: Symbol.CloseParen })
|
|
||||||
{
|
{
|
||||||
_diagnostics.Add(Diagnostic
|
ExpectSymbol(Symbol.CloseParen);
|
||||||
.Warning("Missing comma between function arguments")
|
break;
|
||||||
.WithHelp("Add a ',' to separate arguments")
|
|
||||||
.At(CurrentToken)
|
|
||||||
.Build());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -635,22 +625,21 @@ public sealed class Parser
|
|||||||
if (TryExpectSymbol(Symbol.Func))
|
if (TryExpectSymbol(Symbol.Func))
|
||||||
{
|
{
|
||||||
ExpectSymbol(Symbol.OpenParen);
|
ExpectSymbol(Symbol.OpenParen);
|
||||||
|
|
||||||
List<TypeSyntax> parameters = [];
|
List<TypeSyntax> parameters = [];
|
||||||
while (!TryExpectSymbol(Symbol.CloseParen))
|
while (!TryExpectSymbol(Symbol.CloseParen))
|
||||||
{
|
{
|
||||||
var parameter = ParseType();
|
parameters.Add(ParseType());
|
||||||
parameters.Add(parameter);
|
if (!TryExpectSymbol(Symbol.Comma))
|
||||||
if (!TryExpectSymbol(Symbol.Comma) && CurrentToken is not SymbolToken { Symbol: Symbol.CloseParen })
|
|
||||||
{
|
{
|
||||||
_diagnostics.Add(Diagnostic
|
ExpectSymbol(Symbol.CloseParen);
|
||||||
.Warning("Missing comma between func type arguments")
|
break;
|
||||||
.WithHelp("Add a ',' to separate arguments")
|
|
||||||
.At(CurrentToken)
|
|
||||||
.Build());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var returnType = TryExpectSymbol(Symbol.Colon) ? ParseType() : new VoidTypeSyntax([]);
|
var returnType = TryExpectSymbol(Symbol.Colon)
|
||||||
|
? ParseType()
|
||||||
|
: new VoidTypeSyntax([]);
|
||||||
|
|
||||||
return new FuncTypeSyntax(GetTokens(startIndex), parameters, returnType);
|
return new FuncTypeSyntax(GetTokens(startIndex), parameters, returnType);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user