aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Horizon.Kernel.Generators/Kernel
diff options
context:
space:
mode:
authorACGNnsj <ootopoo@vip.qq.com>2023-03-28 20:59:43 +0800
committerGitHub <noreply@github.com>2023-03-28 14:59:43 +0200
commit460f96967de6f5cb729ed57baaa4dad2178c8cb6 (patch)
tree9cb4ef2daa0e712d3b449572ab018e9fdab74179 /Ryujinx.Horizon.Kernel.Generators/Kernel
parent7ca779a26d76a3ad1edd94ba6c1cfd7466d73314 (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.cs48
-rw-r--r--Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallSyntaxReceiver.cs45
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);
}
}
}