Style fixes

This commit is contained in:
Alexander Luzgarev 2020-07-24 10:00:48 +02:00
parent 165cd35485
commit c70e94d166
8 changed files with 60 additions and 102 deletions

View File

@ -13,7 +13,7 @@ namespace Parser.Binding
{
private readonly DiagnosticsBag _diagnostics = new DiagnosticsBag();
private BoundProgram? BindProgramInternal(SyntaxTree syntaxTree)
private BoundProgram BindProgramInternal(SyntaxTree syntaxTree)
{
var boundRoot = BindRoot(syntaxTree.NullRoot);
var statements = ((BoundBlockStatement)boundRoot.File.Body).Statements;
@ -31,7 +31,11 @@ namespace Parser.Binding
{
_diagnostics.ReportMainIsNotAllowed(
f.Syntax.Span);
return null;
return new BoundProgram(
_diagnostics.ToImmutableArray(),
mainFunction: null,
scriptFunction: null,
functions: functionsBuilder.ToImmutable());
}
}
@ -70,7 +74,7 @@ namespace Parser.Binding
functionsBuilder.ToImmutable());
}
public static BoundProgram? BindProgram(SyntaxTree syntaxTree)
public static BoundProgram BindProgram(SyntaxTree syntaxTree)
{
var binder = new Binder();
return binder.BindProgramInternal(syntaxTree);

View File

@ -858,46 +858,40 @@ namespace Parser.Internal
List<SyntaxTrivia> leadingTrivia,
List<SyntaxTrivia> trailingTrivia)
{
switch (tokenInfo.Kind)
return tokenInfo.Kind switch
{
case TokenKind.IdentifierToken:
return TokenFactory.CreateIdentifier(
TokenKind.IdentifierToken => TokenFactory.CreateIdentifier(
tokenInfo.Text,
leadingTrivia,
trailingTrivia);
case TokenKind.UnquotedStringLiteralToken:
return TokenFactory.CreateUnquotedStringLiteral(
trailingTrivia),
TokenKind.UnquotedStringLiteralToken => TokenFactory.CreateUnquotedStringLiteral(
tokenInfo.Text,
tokenInfo.StringValue,
leadingTrivia,
trailingTrivia);
case TokenKind.NumberLiteralToken:
return TokenFactory.CreateTokenWithValueAndTrivia<double>(
trailingTrivia),
TokenKind.NumberLiteralToken => TokenFactory.CreateTokenWithValueAndTrivia<double>(
tokenInfo.Kind,
tokenInfo.Text,
tokenInfo.DoubleValue,
leadingTrivia,
trailingTrivia);
case TokenKind.StringLiteralToken:
return TokenFactory.CreateTokenWithValueAndTrivia<string>(
trailingTrivia),
TokenKind.StringLiteralToken => TokenFactory.CreateTokenWithValueAndTrivia<string>(
tokenInfo.Kind,
tokenInfo.Text,
tokenInfo.StringValue,
leadingTrivia,
trailingTrivia);
case TokenKind.DoubleQuotedStringLiteralToken:
return TokenFactory.CreateTokenWithValueAndTrivia<string>(
trailingTrivia),
TokenKind.DoubleQuotedStringLiteralToken => TokenFactory.CreateTokenWithValueAndTrivia<string>(
tokenInfo.Kind,
tokenInfo.Text,
tokenInfo.StringValue,
leadingTrivia,
trailingTrivia);
default:
return TokenFactory.CreateTokenWithTrivia(
trailingTrivia),
_ => TokenFactory.CreateTokenWithTrivia(
tokenInfo.Kind,
leadingTrivia,
trailingTrivia);
}
trailingTrivia),
};
}
public List<(SyntaxToken, Position)> ParseAll()

View File

@ -76,17 +76,6 @@ namespace Parser.Internal
return token;
}
private SyntaxToken? PossiblyEatIdentifier(string s)
{
var token = CurrentToken;
if (token.Kind == TokenKind.IdentifierToken && token.Text == s)
{
return EatToken();
}
return null;
}
private SyntaxToken EatPossiblyMissingIdentifier(string s)
{
var token = CurrentToken;
@ -300,43 +289,20 @@ namespace Parser.Internal
return builder.ToList();
}
private ExpressionSyntaxNode? ParseTerm(ParseOptions options)
private ExpressionSyntaxNode ParseTerm(ParseOptions options)
{
var token = CurrentToken;
ExpressionSyntaxNode? expression = null;
switch (token.Kind)
ExpressionSyntaxNode expression = token.Kind switch
{
case TokenKind.NumberLiteralToken:
expression = Factory.NumberLiteralExpressionSyntax(EatToken());
break;
case TokenKind.StringLiteralToken:
expression = Factory.StringLiteralExpressionSyntax(EatToken());
break;
case TokenKind.DoubleQuotedStringLiteralToken:
expression = Factory.DoubleQuotedStringLiteralExpressionSyntax(EatToken());
break;
case TokenKind.OpenSquareBracketToken:
expression = ParseArrayLiteral();
break;
case TokenKind.OpenBraceToken:
expression = ParseCellArrayLiteral();
break;
case TokenKind.ColonToken:
expression = Factory.EmptyExpressionSyntax();
break;
case TokenKind.OpenParenthesisToken:
expression = ParseParenthesizedExpression();
break;
default:
var id = EatToken(TokenKind.IdentifierToken);
expression = Factory.IdentifierNameExpressionSyntax(id);
break;
}
if (expression == null)
{
return null;
}
TokenKind.NumberLiteralToken => Factory.NumberLiteralExpressionSyntax(EatToken()),
TokenKind.StringLiteralToken => Factory.StringLiteralExpressionSyntax(EatToken()),
TokenKind.DoubleQuotedStringLiteralToken => Factory.DoubleQuotedStringLiteralExpressionSyntax(EatToken()),
TokenKind.OpenSquareBracketToken => ParseArrayLiteral(),
TokenKind.OpenBraceToken => ParseCellArrayLiteral(),
TokenKind.ColonToken => Factory.EmptyExpressionSyntax(),
TokenKind.OpenParenthesisToken => ParseParenthesizedExpression(),
_ => Factory.IdentifierNameExpressionSyntax(EatToken(TokenKind.IdentifierToken)),
};
return ParsePostfix(options, expression);
}
@ -599,10 +565,6 @@ namespace Parser.Internal
else
{
lhs = ParseTerm(options);
if (lhs is null)
{
throw new Exception("Left-hand side in subexpression cannot be empty.");
}
}
while (true)
@ -858,8 +820,7 @@ namespace Parser.Internal
private bool TriviaContainsNewLine(GreenNode? trivia)
{
var triviaList = trivia as SyntaxList<SyntaxTrivia>;
if (triviaList is null)
if (trivia is not SyntaxList<SyntaxTrivia> triviaList)
{
return false;
}

View File

@ -121,11 +121,11 @@ namespace Parser.Internal
public override GreenNode? GetSlot(int i)
{
switch (i)
return i switch
{
case 0: return _file;
default: return null;
}
0 => _file,
_ => null,
};
}
public override GreenNode SetDiagnostics(TokenDiagnostic[] diagnostics)

View File

@ -13,7 +13,7 @@ namespace Parser.MFunctions
}
}
public static int Len(MObject? obj)
public static int Len(MObject obj)
{
return obj switch
{

View File

@ -51,7 +51,7 @@ namespace Parser
public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (obj is null) return false;
return obj is SyntaxToken token && Equals(token);
}

View File

@ -58,8 +58,7 @@ namespace Semantics
public static MClass FromTree(FileSyntaxNode tree, string fileName)
{
var classDeclaration = tree.Body.Statements[0].AsNode() as ClassDeclarationSyntaxNode;
if (classDeclaration == null)
if (tree.Body.Statements[0].AsNode() is not ClassDeclarationSyntaxNode classDeclaration)
{
return null;
}

View File

@ -27,7 +27,7 @@ namespace cmi
var child = children[index];
if (child.IsNode)
{
RenderNode(child.AsNode(), indent, index == last);
RenderNode(child.AsNode()!, indent, index == last);
}
else if (child.IsToken)
{