Skip to content

Commit 25083a4

Browse files
Merge pull request #34 from Velociraptor45/fix/#33
#33: Fix colon in class declaration without base class
2 parents a39a0d8 + c8324a1 commit 25083a4

5 files changed

Lines changed: 54 additions & 22 deletions

File tree

RefleCS/RefleCS.Tests/Converters/CsFileConverterTestData.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public IEnumerator<object[]> GetEnumerator()
1111
yield return WithRecord();
1212
yield return WithClass();
1313
yield return WithClass_EmptyFieldInitializer();
14+
yield return WithClass_NoBaseClass();
1415
}
1516

1617
private object[] WithRecord()
@@ -149,6 +150,33 @@ private object[] WithClass_EmptyFieldInitializer()
149150
];
150151
}
151152

153+
private object[] WithClass_NoBaseClass()
154+
{
155+
return
156+
[
157+
new CsFile(
158+
new List<Using>
159+
{
160+
new("System"),
161+
new("System.Linq")
162+
},
163+
new Namespace(
164+
"MyApp",
165+
new List<Class>
166+
{
167+
new(
168+
new List<ClassModifier> { ClassModifier.Private },
169+
"MyClass",
170+
new List<Constructor>(),
171+
new List<Field>(),
172+
new List<Property>(),
173+
new List<Method>(),
174+
new List<BaseType>())
175+
},
176+
[]))
177+
];
178+
}
179+
152180
IEnumerator IEnumerable.GetEnumerator()
153181
{
154182
return GetEnumerator();

RefleCS/RefleCS/Converters/ClassConverter.cs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,20 +46,24 @@ public IEnumerable<Class> ToClass(IEnumerable<ClassDeclarationSyntax> classDecla
4646

4747
public ClassDeclarationSyntax ToNode(Class cls)
4848
{
49-
var ctors = _constructorConverter.ToNode(cls.Constructors);
50-
var fields = _fieldConverter.ToNode(cls.Fields);
51-
var properties = _propertyConverter.ToNode(cls.Properties);
49+
var ctors = _constructorConverter.ToNode(cls.Constructors).ToArray<MemberDeclarationSyntax>();
50+
var fields = _fieldConverter.ToNode(cls.Fields).ToArray<MemberDeclarationSyntax>();
51+
var properties = _propertyConverter.ToNode(cls.Properties).ToArray<MemberDeclarationSyntax>();
5252
var modifiers = _modifierConverter.ToNode(cls.Modifiers);
53-
var methods = _methodConverter.ToNode(cls.Methods);
54-
var baseTypes = _baseTypeConverter.ToNode(cls.BaseTypes);
53+
var methods = _methodConverter.ToNode(cls.Methods).ToArray<MemberDeclarationSyntax>();
54+
var baseTypes = _baseTypeConverter.ToNode(cls.BaseTypes).ToArray();
5555

56-
return SyntaxFactory.ClassDeclaration(cls.Name)
57-
.AddBaseListTypes(baseTypes.ToArray())
56+
var classDeclaration = SyntaxFactory.ClassDeclaration(cls.Name)
5857
.AddModifiers(modifiers.ToArray())
59-
.AddMembers(fields.ToArray())
60-
.AddMembers(ctors.ToArray())
61-
.AddMembers(properties.ToArray())
62-
.AddMembers(methods.ToArray());
58+
.AddMembers(fields)
59+
.AddMembers(ctors)
60+
.AddMembers(properties)
61+
.AddMembers(methods);
62+
63+
if (baseTypes.Any())
64+
classDeclaration = classDeclaration.AddBaseListTypes(baseTypes);
65+
66+
return classDeclaration;
6367
}
6468

6569
public IEnumerable<ClassDeclarationSyntax> ToNode(IEnumerable<Class> classes)

RefleCS/RefleCS/Converters/NamespaceConverter.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ public Namespace ToNamespace(FileScopedNamespaceDeclarationSyntax nmsp)
2121

2222
public FileScopedNamespaceDeclarationSyntax ToNode(Namespace nmsp)
2323
{
24-
var classes = _classConverter.ToNode(nmsp.Classes);
25-
var records = _recordConverter.ToNode(nmsp.Records);
24+
var classes = _classConverter.ToNode(nmsp.Classes).ToArray<MemberDeclarationSyntax>();
25+
var records = _recordConverter.ToNode(nmsp.Records).ToArray<MemberDeclarationSyntax>();
2626

2727
return SyntaxFactory.FileScopedNamespaceDeclaration(SyntaxFactory.IdentifierName(nmsp.Name))
28-
.AddMembers(classes.ToArray())
29-
.AddMembers(records.ToArray());
28+
.AddMembers(classes)
29+
.AddMembers(records);
3030
}
3131
}

RefleCS/RefleCS/Converters/RecordConverter.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ public IEnumerable<Record> ToRecord(IEnumerable<RecordDeclarationSyntax> classDe
4848

4949
public RecordDeclarationSyntax ToNode(Record recrd)
5050
{
51-
var ctors = _constructorConverter.ToNode(recrd.Constructors);
52-
var properties = _propertyConverter.ToNode(recrd.Properties);
51+
var ctors = _constructorConverter.ToNode(recrd.Constructors).ToArray<MemberDeclarationSyntax>();
52+
var properties = _propertyConverter.ToNode(recrd.Properties).ToArray<MemberDeclarationSyntax>();
5353
var modifiers = _modifierConverter.ToNode(recrd.Modifiers);
54-
var methods = _methodConverter.ToNode(recrd.Methods);
54+
var methods = _methodConverter.ToNode(recrd.Methods).ToArray<MemberDeclarationSyntax>();
5555
var baseTypes = _baseTypeConverter.ToNode(recrd.BaseTypes).ToArray();
5656
var parameters = _parameterConverter.ToNode(recrd.Parameters);
5757

@@ -64,9 +64,9 @@ public RecordDeclarationSyntax ToNode(Record recrd)
6464
.WithCloseBraceToken(closeBraceToken)
6565
.AddModifiers(modifiers.ToArray())
6666
.AddParameterListParameters(parameters.ToArray())
67-
.AddMembers(ctors.ToArray())
68-
.AddMembers(properties.ToArray())
69-
.AddMembers(methods.ToArray());
67+
.AddMembers(ctors)
68+
.AddMembers(properties)
69+
.AddMembers(methods);
7070

7171
if (baseTypes.Any())
7272
node = node.AddBaseListTypes(baseTypes.ToArray());

RefleCS/RefleCS/RefleCS.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<PackageProjectUrl></PackageProjectUrl>
1010
<PackageReadmeFile>README.md</PackageReadmeFile>
1111
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
12-
<Version>0.3.0-alpha.1</Version>
12+
<Version>0.3.0-alpha.2</Version>
1313
<RepositoryUrl>https://github.com/Velociraptor45/RefleCS</RepositoryUrl>
1414
<PackageLicenseExpression>MIT</PackageLicenseExpression>
1515
<GenerateDocumentationFile>True</GenerateDocumentationFile>

0 commit comments

Comments
 (0)