diff options
| author | ACGNnsj <ootopoo@vip.qq.com> | 2023-03-28 20:59:43 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-28 14:59:43 +0200 |
| commit | 460f96967de6f5cb729ed57baaa4dad2178c8cb6 (patch) | |
| tree | 9cb4ef2daa0e712d3b449572ab018e9fdab74179 /Ryujinx.Horizon.Kernel.Generators/Kernel | |
| parent | 7ca779a26d76a3ad1edd94ba6c1cfd7466d73314 (diff) | |
Slight Code Refactoring (#4373)
* Simplify return statements by using ternary expressions
* Remove a redundant type conversion
* Reduce nesting by inverting "if" statements
* Try to improve code readability by using LINQ and inverting "if" statements
* Try to improve code readability by using LINQ, using ternary expressions, and inverting "if" statements
* Add line breaks to long LINQ
* Add line breaks to long LINQ
Diffstat (limited to 'Ryujinx.Horizon.Kernel.Generators/Kernel')
| -rw-r--r-- | Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallGenerator.cs | 48 | ||||
| -rw-r--r-- | Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallSyntaxReceiver.cs | 45 |
2 files changed, 35 insertions, 58 deletions
diff --git a/Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallGenerator.cs b/Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallGenerator.cs index 8bc0800c..51da2187 100644 --- a/Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallGenerator.cs +++ b/Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallGenerator.cs @@ -4,6 +4,7 @@ using Microsoft.CodeAnalysis.CSharp.Syntax; using System; using System.Collections.Generic; using System.Diagnostics; +using System.Linq; namespace Ryujinx.Horizon.Generators.Kernel { @@ -151,24 +152,15 @@ namespace Ryujinx.Horizon.Generators.Kernel GenerateMethod32(generator, context.Compilation, method); GenerateMethod64(generator, context.Compilation, method); - foreach (var attributeList in method.AttributeLists) + foreach (AttributeSyntax attribute in method.AttributeLists.SelectMany(attributeList => + attributeList.Attributes.Where(attribute => + GetCanonicalTypeName(context.Compilation, attribute) == TypeSvcAttribute))) { - foreach (var attribute in attributeList.Attributes) - { - if (GetCanonicalTypeName(context.Compilation, attribute) != TypeSvcAttribute) - { - continue; - } - - foreach (var attributeArg in attribute.ArgumentList.Arguments) - { - if (attributeArg.Expression.Kind() == SyntaxKind.NumericLiteralExpression) - { - LiteralExpressionSyntax numericLiteral = (LiteralExpressionSyntax)attributeArg.Expression; - syscalls.Add(new SyscallIdAndName((int)numericLiteral.Token.Value, method.Identifier.Text)); - } - } - } + syscalls.AddRange(from attributeArg in attribute.ArgumentList.Arguments + where attributeArg.Expression.Kind() == SyntaxKind.NumericLiteralExpression + select (LiteralExpressionSyntax)attributeArg.Expression + into numericLiteral + select new SyscallIdAndName((int)numericLiteral.Token.Value, method.Identifier.Text)); } } @@ -510,28 +502,14 @@ namespace Ryujinx.Horizon.Generators.Kernel private static string GenerateCastFromUInt64(string value, string canonicalTargetTypeName, string targetTypeName) { - if (canonicalTargetTypeName == TypeSystemBoolean) - { - return $"({value} & 1) != 0"; - } - - return $"({targetTypeName}){value}"; + return canonicalTargetTypeName == TypeSystemBoolean ? $"({value} & 1) != 0" : $"({targetTypeName}){value}"; } private static bool IsPointerSized(Compilation compilation, ParameterSyntax parameterSyntax) { - foreach (var attributeList in parameterSyntax.AttributeLists) - { - foreach (var attribute in attributeList.Attributes) - { - if (GetCanonicalTypeName(compilation, attribute) == TypePointerSizedAttribute) - { - return true; - } - } - } - - return false; + return parameterSyntax.AttributeLists.Any(attributeList => + attributeList.Attributes.Any(attribute => + GetCanonicalTypeName(compilation, attribute) == TypePointerSizedAttribute)); } public void Initialize(GeneratorInitializationContext context) diff --git a/Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallSyntaxReceiver.cs b/Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallSyntaxReceiver.cs index e2e8e1d3..e480a859 100644 --- a/Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallSyntaxReceiver.cs +++ b/Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallSyntaxReceiver.cs @@ -16,38 +16,37 @@ namespace Ryujinx.Horizon.Generators.Kernel public void OnVisitSyntaxNode(SyntaxNode syntaxNode) { - if (syntaxNode is ClassDeclarationSyntax classDeclaration && classDeclaration.AttributeLists.Count != 0) + if (!(syntaxNode is ClassDeclarationSyntax classDeclaration) || classDeclaration.AttributeLists.Count == 0) { - foreach (var attributeList in classDeclaration.AttributeLists) - { - if (attributeList.Attributes.Any(x => x.Name.GetText().ToString() == "SvcImpl")) - { - foreach (var memberDeclaration in classDeclaration.Members) - { - if (memberDeclaration is MethodDeclarationSyntax methodDeclaration) - { - VisitMethod(methodDeclaration); - } - } + return; + } + + if (!classDeclaration.AttributeLists.Any(attributeList => + attributeList.Attributes.Any(x => x.Name.GetText().ToString() == "SvcImpl"))) + { + return; + } - break; - } + foreach (var memberDeclaration in classDeclaration.Members) + { + if (memberDeclaration is MethodDeclarationSyntax methodDeclaration) + { + VisitMethod(methodDeclaration); } } } private void VisitMethod(MethodDeclarationSyntax methodDeclaration) { - if (methodDeclaration.AttributeLists.Count != 0) + if (methodDeclaration.AttributeLists.Count == 0) { - foreach (var attributeList in methodDeclaration.AttributeLists) - { - if (attributeList.Attributes.Any(x => x.Name.GetText().ToString() == "Svc")) - { - SvcImplementations.Add(methodDeclaration); - break; - } - } + return; + } + + if (methodDeclaration.AttributeLists.Any(attributeList => + attributeList.Attributes.Any(x => x.Name.GetText().ToString() == "Svc"))) + { + SvcImplementations.Add(methodDeclaration); } } } |
