From c70e94d166dcc0f961858f918848217bc37e7304 Mon Sep 17 00:00:00 2001 From: Alexander Luzgarev Date: Fri, 24 Jul 2020 10:00:48 +0200 Subject: [PATCH] Style fixes --- Parser/Binding/Binder.cs | 10 +++-- Parser/Internal/MLexerGreen.cs | 72 +++++++++++++++------------------ Parser/Internal/MParserGreen.cs | 63 ++++++----------------------- Parser/Internal/SyntaxNode.cs | 8 ++-- Parser/MFunctions/MHelpers.cs | 2 +- Parser/SyntaxToken.cs | 2 +- Semantics/GetClass.cs | 3 +- cmi/TreeRenderer.cs | 2 +- 8 files changed, 60 insertions(+), 102 deletions(-) diff --git a/Parser/Binding/Binder.cs b/Parser/Binding/Binder.cs index 8adb0a0..1fd69a8 100644 --- a/Parser/Binding/Binder.cs +++ b/Parser/Binding/Binder.cs @@ -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); diff --git a/Parser/Internal/MLexerGreen.cs b/Parser/Internal/MLexerGreen.cs index a1f592c..3442f46 100644 --- a/Parser/Internal/MLexerGreen.cs +++ b/Parser/Internal/MLexerGreen.cs @@ -858,46 +858,40 @@ namespace Parser.Internal List leadingTrivia, List trailingTrivia) { - switch (tokenInfo.Kind) + return tokenInfo.Kind switch { - case TokenKind.IdentifierToken: - return TokenFactory.CreateIdentifier( - tokenInfo.Text, - leadingTrivia, - trailingTrivia); - case TokenKind.UnquotedStringLiteralToken: - return TokenFactory.CreateUnquotedStringLiteral( - tokenInfo.Text, - tokenInfo.StringValue, - leadingTrivia, - trailingTrivia); - case TokenKind.NumberLiteralToken: - return TokenFactory.CreateTokenWithValueAndTrivia( - tokenInfo.Kind, - tokenInfo.Text, - tokenInfo.DoubleValue, - leadingTrivia, - trailingTrivia); - case TokenKind.StringLiteralToken: - return TokenFactory.CreateTokenWithValueAndTrivia( - tokenInfo.Kind, - tokenInfo.Text, - tokenInfo.StringValue, - leadingTrivia, - trailingTrivia); - case TokenKind.DoubleQuotedStringLiteralToken: - return TokenFactory.CreateTokenWithValueAndTrivia( - tokenInfo.Kind, - tokenInfo.Text, - tokenInfo.StringValue, - leadingTrivia, - trailingTrivia); - default: - return TokenFactory.CreateTokenWithTrivia( - tokenInfo.Kind, - leadingTrivia, - trailingTrivia); - } + TokenKind.IdentifierToken => TokenFactory.CreateIdentifier( + tokenInfo.Text, + leadingTrivia, + trailingTrivia), + TokenKind.UnquotedStringLiteralToken => TokenFactory.CreateUnquotedStringLiteral( + tokenInfo.Text, + tokenInfo.StringValue, + leadingTrivia, + trailingTrivia), + TokenKind.NumberLiteralToken => TokenFactory.CreateTokenWithValueAndTrivia( + tokenInfo.Kind, + tokenInfo.Text, + tokenInfo.DoubleValue, + leadingTrivia, + trailingTrivia), + TokenKind.StringLiteralToken => TokenFactory.CreateTokenWithValueAndTrivia( + tokenInfo.Kind, + tokenInfo.Text, + tokenInfo.StringValue, + leadingTrivia, + trailingTrivia), + TokenKind.DoubleQuotedStringLiteralToken => TokenFactory.CreateTokenWithValueAndTrivia( + tokenInfo.Kind, + tokenInfo.Text, + tokenInfo.StringValue, + leadingTrivia, + trailingTrivia), + _ => TokenFactory.CreateTokenWithTrivia( + tokenInfo.Kind, + leadingTrivia, + trailingTrivia), + }; } public List<(SyntaxToken, Position)> ParseAll() diff --git a/Parser/Internal/MParserGreen.cs b/Parser/Internal/MParserGreen.cs index 79df93a..920575c 100644 --- a/Parser/Internal/MParserGreen.cs +++ b/Parser/Internal/MParserGreen.cs @@ -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; - if (triviaList is null) + if (trivia is not SyntaxList triviaList) { return false; } diff --git a/Parser/Internal/SyntaxNode.cs b/Parser/Internal/SyntaxNode.cs index 999f06d..9486928 100644 --- a/Parser/Internal/SyntaxNode.cs +++ b/Parser/Internal/SyntaxNode.cs @@ -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) diff --git a/Parser/MFunctions/MHelpers.cs b/Parser/MFunctions/MHelpers.cs index d4fa446..ee13028 100644 --- a/Parser/MFunctions/MHelpers.cs +++ b/Parser/MFunctions/MHelpers.cs @@ -13,7 +13,7 @@ namespace Parser.MFunctions } } - public static int Len(MObject? obj) + public static int Len(MObject obj) { return obj switch { diff --git a/Parser/SyntaxToken.cs b/Parser/SyntaxToken.cs index 33844d7..f3c8a9b 100644 --- a/Parser/SyntaxToken.cs +++ b/Parser/SyntaxToken.cs @@ -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); } diff --git a/Semantics/GetClass.cs b/Semantics/GetClass.cs index 4d74ddf..73ff533 100644 --- a/Semantics/GetClass.cs +++ b/Semantics/GetClass.cs @@ -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; } diff --git a/cmi/TreeRenderer.cs b/cmi/TreeRenderer.cs index e0d6871..5219465 100644 --- a/cmi/TreeRenderer.cs +++ b/cmi/TreeRenderer.cs @@ -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) {