Skip to content

Commit b5696da

Browse files
committed
Improvements
1 parent 0a77a00 commit b5696da

File tree

5 files changed

+22
-24
lines changed

5 files changed

+22
-24
lines changed

SecretAPI.CodeGeneration/CodeBuilders/ClassBuilder.cs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,23 @@ internal class ClassBuilder : CodeBuilder<ClassBuilder>
44
{
55
private NamespaceDeclarationSyntax _namespaceDeclaration;
66
private ClassDeclarationSyntax _classDeclaration;
7-
private string _className;
87

98
private readonly List<UsingDirectiveSyntax> _usings = new();
109
private readonly List<MethodDeclarationSyntax> _methods = new();
1110

12-
private ClassBuilder(string @namespace, string className)
11+
private ClassBuilder(NamespaceDeclarationSyntax namespaceDeclaration, ClassDeclarationSyntax classDeclaration)
1312
{
14-
_namespaceDeclaration = NamespaceDeclaration(ParseName(@namespace));
15-
_className = className;
16-
_classDeclaration = ClassDeclaration(className);
13+
_namespaceDeclaration = namespaceDeclaration;
14+
_classDeclaration = classDeclaration;
1715

1816
AddUsingStatements("System.CodeDom.Compiler");
1917
}
20-
21-
internal static ClassBuilder CreateBuilder(string @namespace, string className)
22-
=> new(@namespace, className);
2318

2419
internal static ClassBuilder CreateBuilder(INamedTypeSymbol namedClass)
25-
=> new(namedClass.ContainingNamespace.ToDisplayString(), namedClass.Name);
20+
=> CreateBuilder(NamespaceDeclaration(ParseName(namedClass.ContainingNamespace.ToDisplayString())), ClassDeclaration(namedClass.Name));
21+
22+
internal static ClassBuilder CreateBuilder(NamespaceDeclarationSyntax namespaceDeclaration, ClassDeclarationSyntax classDeclaration)
23+
=> new(namespaceDeclaration, classDeclaration);
2624

2725
internal ClassBuilder AddUsingStatements(params string[] usingStatements)
2826
{
@@ -36,7 +34,8 @@ internal ClassBuilder AddUsingStatements(params string[] usingStatements)
3634
return this;
3735
}
3836

39-
internal MethodBuilder StartMethodCreation(string methodName, string returnType) => new(this, methodName, returnType);
37+
internal MethodBuilder StartMethodCreation(string methodName, TypeSyntax returnType) => new(this, methodName, returnType);
38+
internal MethodBuilder StartMethodCreation(string methodName, SyntaxKind returnType) => StartMethodCreation(methodName, GetPredefinedTypeSyntax(returnType));
4039

4140
internal void AddMethodDefinition(MethodDeclarationSyntax method) => _methods.Add(method);
4241

SecretAPI.CodeGeneration/CodeBuilders/MethodBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ internal class MethodBuilder : CodeBuilder<MethodBuilder>
66
private readonly List<ParameterSyntax> _parameters = new();
77
private readonly List<StatementSyntax> _statements = new();
88
private readonly string _methodName;
9-
private readonly string _returnType;
9+
private readonly TypeSyntax _returnType;
1010

11-
internal MethodBuilder(ClassBuilder classBuilder, string methodName, string returnType)
11+
internal MethodBuilder(ClassBuilder classBuilder, string methodName, TypeSyntax returnType)
1212
{
1313
_classBuilder = classBuilder;
1414
_methodName = methodName;
@@ -33,7 +33,7 @@ internal ClassBuilder FinishMethodBuild()
3333
{
3434
BlockSyntax body = _statements.Any() ? Block(_statements) : Block();
3535

36-
MethodDeclarationSyntax methodDeclaration = MethodDeclaration(ParseTypeName(_returnType), _methodName)
36+
MethodDeclarationSyntax methodDeclaration = MethodDeclaration(_returnType, _methodName)
3737
.AddModifiers(_modifiers.ToArray())
3838
.AddParameterListParameters(_parameters.ToArray())
3939
.WithBody(body);

SecretAPI.CodeGeneration/Generators/CallOnLoadGenerator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,16 @@ private static void Generate(
106106
CompilationUnitSyntax compilation = ClassBuilder.CreateBuilder(pluginClassSymbol)
107107
.AddUsingStatements("System")
108108
.AddModifiers(SyntaxKind.PartialKeyword)
109-
.StartMethodCreation("OnLoad", "void")
109+
.StartMethodCreation("OnLoad", SyntaxKind.VoidKeyword)
110110
.AddModifiers(SyntaxKind.PublicKeyword)
111111
.AddStatements(MethodCallStatements(loadCalls))
112112
.FinishMethodBuild()
113-
.StartMethodCreation("OnUnload", "void")
113+
.StartMethodCreation("OnUnload", SyntaxKind.VoidKeyword)
114114
.AddModifiers(SyntaxKind.PublicKeyword)
115115
.AddStatements(MethodCallStatements(unloadCalls))
116116
.FinishMethodBuild()
117117
.Build();
118-
118+
119119
context.AddSource($"{pluginClassSymbol.Name}.g.cs", compilation.ToFullString());
120120
}
121121
}

SecretAPI.CodeGeneration/Generators/CustomCommandGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ private static void Generate(
9292
.AddUsingStatements("System", "System.Collections.Generic")
9393
.AddUsingStatements("CommandSystem")
9494
.AddModifiers(SyntaxKind.PartialKeyword)
95-
.StartMethodCreation(ExecuteMethodName, "bool")
95+
.StartMethodCreation(ExecuteMethodName, SyntaxKind.BoolKeyword)
9696
.AddModifiers(SyntaxKind.PublicKeyword, SyntaxKind.OverrideKeyword)
9797
.AddParameters(ArgumentsParam, SenderParam, ResponseParam)
9898
.FinishMethodBuild()

SecretAPI.CodeGeneration/Utils/MethodUtils.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,19 @@
22

33
internal static class MethodUtils
44
{
5-
internal static StatementSyntax MethodCallStatement(string typeName, string methodName)
5+
internal static StatementSyntax MethodCallStatement(string typeName, string methodName) =>
6+
MethodCallStatement(ParseTypeName(typeName), IdentifierName(methodName));
7+
8+
internal static StatementSyntax MethodCallStatement(TypeSyntax type, IdentifierNameSyntax method)
69
=> ExpressionStatement(
710
InvocationExpression(
811
MemberAccessExpression(
912
SyntaxKind.SimpleMemberAccessExpression,
10-
ParseTypeName(typeName), IdentifierName(methodName))));
13+
type, method)));
1114

1215
internal static StatementSyntax[] MethodCallStatements(IMethodSymbol[] methodCalls)
1316
{
14-
List<StatementSyntax> statements = new();
15-
16-
foreach (IMethodSymbol method in methodCalls)
17-
statements.Add(MethodCallStatement(method.ContainingType.ToDisplayString(), method.Name));
18-
17+
IEnumerable<StatementSyntax> statements = methodCalls.Select(s => MethodCallStatement(s.ContainingType.ToDisplayString(), s.Name));
1918
return statements.ToArray();
2019
}
2120
}

0 commit comments

Comments
 (0)