Skip to content

Commit e2b710c

Browse files
committed
Fix nullable reference types warnings
1 parent 5cb76fb commit e2b710c

File tree

54 files changed

+452
-242
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+452
-242
lines changed

JavaToCSharp.Tests/ConvertInterfaceTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public void registerEquivalentType(ResolvedType type) {
2020
}
2121
";
2222
var options = new JavaConversionOptions();
23-
options.WarningEncountered += (sender, eventArgs)
23+
options.WarningEncountered += (_, eventArgs)
2424
=> Console.WriteLine("Line {0}: {1}", eventArgs.JavaLineNumber, eventArgs.Message);
2525
var parsed = JavaToCSharpConverter.ConvertText(javaCode, options);
2626

JavaToCSharp.Tests/ConvertTypeTests.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
using JavaToCSharp;
21
using Xunit;
32

4-
namespace TypeHelperTests
3+
namespace JavaToCSharp.Tests
54
{
65
public class ConvertTypeTests
76
{

JavaToCSharp.Tests/IntegrationTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class IntegrationTests
1111
public void TestCommentsCanBeConverted(string filePath)
1212
{
1313
var options = new JavaConversionOptions();
14-
options.WarningEncountered += (sender, eventArgs)
14+
options.WarningEncountered += (_, eventArgs)
1515
=> Console.WriteLine("Line {0}: {1}", eventArgs.JavaLineNumber, eventArgs.Message);
1616
var parsed = JavaToCSharpConverter.ConvertText(System.IO.File.ReadAllText(filePath), options);
1717
Assert.NotNull(parsed);

JavaToCSharp.Tests/VisitLiteralExpressionTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using JavaToCSharp.Expressions;
33
using Xunit;
44

5-
namespace LiteralExpressionTests
5+
namespace JavaToCSharp.Tests
66
{
77
public class VisitLiteralExpressionTests
88
{

JavaToCSharp/CommentsHelper.cs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ private enum CommentPosition
3333
["@throws"] = "exception"
3434
};
3535

36-
public static TSyntax? AddCommentsTrivias<TSyntax>(TSyntax? syntax, JavaAst.Node node, string commentEnding) where TSyntax : SyntaxNode
36+
public static TSyntax? AddCommentsTrivias<TSyntax>(TSyntax? syntax, JavaAst.Node? node, string? commentEnding) where TSyntax : SyntaxNode
3737
{
3838
if (syntax is null)
3939
{
@@ -74,7 +74,9 @@ private enum CommentPosition
7474
return syntax;
7575
}
7676

77-
private static (SyntaxKind kind, string pre, string post) GetCommentInfo(JavaComments.Comment comment, string commentEnding)
77+
private static (SyntaxKind kind, string? pre, string? post) GetCommentInfo(
78+
JavaComments.Comment comment,
79+
string? commentEnding)
7880
{
7981
return comment switch
8082
{
@@ -84,7 +86,7 @@ private static (SyntaxKind kind, string pre, string post) GetCommentInfo(JavaCom
8486
};
8587
}
8688

87-
private static List<(JavaComments.Comment c, CommentPosition pos)> GatherComments(JavaAst.Node node)
89+
private static List<(JavaComments.Comment c, CommentPosition pos)> GatherComments(JavaAst.Node? node)
8890
{
8991
var result = new List<(JavaComments.Comment c, CommentPosition pos)>();
9092
if (node == null) return result;
@@ -165,7 +167,7 @@ private static bool HasNextSibling(JavaAst.Node parentNode, JavaParser.Position
165167
.Select(c => (c, CommentPosition.Leading));
166168
}
167169

168-
private static JavaAst.Node GetPreviousSibling(JavaAst.Node parentNode, JavaParser.Position nodeBegin)
170+
private static JavaAst.Node? GetPreviousSibling(JavaAst.Node parentNode, JavaParser.Position nodeBegin)
169171
{
170172
return parentNode.getChildrenNodes()
171173
.OfType<JavaAst.Node>()
@@ -212,13 +214,13 @@ public static IEnumerable<SyntaxTrivia> ConvertToComment(IEnumerable<JavaAst.Nod
212214
}
213215
}
214216

215-
private static IEnumerable<SyntaxTrivia> ConvertDocComment(JavaComments.Comment comment, string post)
217+
private static IEnumerable<SyntaxTrivia> ConvertDocComment(JavaComments.Comment comment, string? post)
216218
{
217219
string[] input = comment.getContent().Split(new[] { "\r\n" }, StringSplitOptions.None);
218220
var output = new List<string>();
219221
var remarks = new List<string>(); // For Java tags unknown in C#
220222
var currentOutput = output;
221-
string tag = null;
223+
string? tag = null;
222224
foreach (string inputLine in input)
223225
{
224226
var match = _analyzeDocString.Match(inputLine);
@@ -282,7 +284,7 @@ private static void AppendRemarks(List<string> output, IList<string> remarks)
282284
output.AddRange(remarks);
283285
}
284286

285-
private static void CloseSection(IList<string> output, string tag)
287+
private static void CloseSection(IList<string> output, string? tag)
286288
{
287289
if (output.Count > 0 && tag != "remarks")
288290
{
@@ -380,7 +382,7 @@ static SyntaxNode InsertEmptyLineBeforeComment(SyntaxNode node)
380382
var index = leading.IndexOf(SyntaxKind.SingleLineCommentTrivia);
381383
if (index >= 0)
382384
{
383-
if (index > 0 && leading[index - 1].Kind() == SyntaxKind.WhitespaceTrivia)
385+
if (index > 0 && leading[index - 1].IsKind(SyntaxKind.WhitespaceTrivia))
384386
{
385387
index--;
386388
}
@@ -402,7 +404,7 @@ private static SyntaxNode AdjustBlockCommentIndentation(SyntaxNode node)
402404
for (int i = 0; i < leading.Count; i++)
403405
{
404406
var t = leading[i];
405-
if (t.Kind() == SyntaxKind.MultiLineCommentTrivia)
407+
if (t.IsKind(SyntaxKind.MultiLineCommentTrivia))
406408
{
407409
int indentation = GetIndentation(leading, i) + 1; // Add one to align stars.
408410
string[] lines = t.ToFullString().Split(new[] { "\r\n" }, StringSplitOptions.None);
@@ -423,12 +425,12 @@ private static SyntaxNode AdjustBlockCommentIndentation(SyntaxNode node)
423425
private static int GetIndentation(SyntaxTriviaList leading, int commentIndex)
424426
{
425427
SyntaxTrivia whiteSpaceTrivia;
426-
if (commentIndex > 0 && leading[commentIndex - 1].Kind() == SyntaxKind.WhitespaceTrivia)
428+
if (commentIndex > 0 && leading[commentIndex - 1].IsKind(SyntaxKind.WhitespaceTrivia))
427429
{
428430
// Try to get the indentation from the whitespace leading the comment.
429431
whiteSpaceTrivia = leading[commentIndex - 1];
430432
}
431-
else if (leading.Last().Kind() == SyntaxKind.WhitespaceTrivia)
433+
else if (leading.Last().IsKind(SyntaxKind.WhitespaceTrivia))
432434
{
433435
// Try to get the indentation of the node from the last leading trivia.
434436
whiteSpaceTrivia = leading.Last();

JavaToCSharp/ConversionContext.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ public ConversionContext(JavaConversionOptions options)
1818

1919
public JavaConversionOptions Options { get; }
2020

21-
public string RootTypeName { get; set; }
21+
public string? RootTypeName { get; set; }
2222

23-
public string LastTypeName { get; set; }
23+
public string? LastTypeName { get; set; }
2424
}
2525
}

JavaToCSharp/Declarations/AnnotationDeclarationVisitor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ namespace JavaToCSharp.Declarations
66
{
77
public class AnnotationDeclarationVisitor : BodyDeclarationVisitor<AnnotationDeclaration>
88
{
9-
public override MemberDeclarationSyntax VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax,
10-
AnnotationDeclaration declaration)
9+
public override MemberDeclarationSyntax? VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax,
10+
AnnotationDeclaration declaration)
1111
{
1212
context.Options.Warning("Declaring an annotation inside a class NotImplemented.",
1313
declaration.getBegin().line);

JavaToCSharp/Declarations/BodyDeclarationVisitor.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ namespace JavaToCSharp.Declarations
88
public abstract class BodyDeclarationVisitor<T> : BodyDeclarationVisitor
99
where T : BodyDeclaration
1010
{
11-
public abstract MemberDeclarationSyntax VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax, T declaration);
11+
public abstract MemberDeclarationSyntax? VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax, T declaration);
1212

13-
public abstract MemberDeclarationSyntax VisitForInterface(ConversionContext context, InterfaceDeclarationSyntax interfaceSyntax, T declaration);
13+
public abstract MemberDeclarationSyntax? VisitForInterface(ConversionContext context, InterfaceDeclarationSyntax interfaceSyntax, T declaration);
1414

15-
protected sealed override MemberDeclarationSyntax VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax, BodyDeclaration declaration)
15+
protected sealed override MemberDeclarationSyntax? VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax, BodyDeclaration declaration)
1616
{
1717
return VisitForClass(context, classSyntax, (T)declaration);
1818
}
1919

20-
protected sealed override MemberDeclarationSyntax VisitForInterface(ConversionContext context, InterfaceDeclarationSyntax interfaceSyntax, BodyDeclaration declaration)
20+
protected sealed override MemberDeclarationSyntax? VisitForInterface(ConversionContext context, InterfaceDeclarationSyntax interfaceSyntax, BodyDeclaration declaration)
2121
{
2222
return VisitForInterface(context, interfaceSyntax, (T)declaration);
2323
}
@@ -42,11 +42,11 @@ static BodyDeclarationVisitor()
4242
};
4343
}
4444

45-
protected abstract MemberDeclarationSyntax VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax, BodyDeclaration declaration);
45+
protected abstract MemberDeclarationSyntax? VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax, BodyDeclaration declaration);
4646

47-
protected abstract MemberDeclarationSyntax VisitForInterface(ConversionContext context, InterfaceDeclarationSyntax interfaceSyntax, BodyDeclaration declaration);
47+
protected abstract MemberDeclarationSyntax? VisitForInterface(ConversionContext context, InterfaceDeclarationSyntax interfaceSyntax, BodyDeclaration declaration);
4848

49-
public static MemberDeclarationSyntax VisitBodyDeclarationForClass(ConversionContext context, ClassDeclarationSyntax classSyntax, BodyDeclaration declaration)
49+
public static MemberDeclarationSyntax? VisitBodyDeclarationForClass(ConversionContext context, ClassDeclarationSyntax classSyntax, BodyDeclaration declaration)
5050
{
5151
if (!_visitors.TryGetValue(declaration.GetType(), out var visitor))
5252
{
@@ -58,7 +58,7 @@ public static MemberDeclarationSyntax VisitBodyDeclarationForClass(ConversionCon
5858
.WithJavaComments(declaration);
5959
}
6060

61-
public static MemberDeclarationSyntax VisitBodyDeclarationForInterface(ConversionContext context, InterfaceDeclarationSyntax interfaceSyntax, BodyDeclaration declaration)
61+
public static MemberDeclarationSyntax? VisitBodyDeclarationForInterface(ConversionContext context, InterfaceDeclarationSyntax interfaceSyntax, BodyDeclaration declaration)
6262
{
6363
if (!_visitors.TryGetValue(declaration.GetType(), out var visitor))
6464
{

JavaToCSharp/Declarations/ClassOrInterfaceDeclarationVisitor.cs

Lines changed: 48 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,20 @@ namespace JavaToCSharp.Declarations
99
{
1010
public class ClassOrInterfaceDeclarationVisitor : BodyDeclarationVisitor<ClassOrInterfaceDeclaration>
1111
{
12-
public override MemberDeclarationSyntax VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax,
13-
ClassOrInterfaceDeclaration declaration)
12+
public override MemberDeclarationSyntax? VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax,
13+
ClassOrInterfaceDeclaration declaration)
1414
{
1515
return VisitClassDeclaration(context, declaration);
1616
}
1717

1818

19-
public override MemberDeclarationSyntax VisitForInterface(ConversionContext context, InterfaceDeclarationSyntax interfaceSyntax,
20-
ClassOrInterfaceDeclaration declaration)
19+
public override MemberDeclarationSyntax? VisitForInterface(ConversionContext context, InterfaceDeclarationSyntax interfaceSyntax,
20+
ClassOrInterfaceDeclaration declaration)
2121
{
2222
return VisitClassDeclaration(context, declaration);
2323
}
2424

25-
public static InterfaceDeclarationSyntax VisitInterfaceDeclaration(ConversionContext context, ClassOrInterfaceDeclaration javai, bool isNested = false)
25+
public static InterfaceDeclarationSyntax? VisitInterfaceDeclaration(ConversionContext context, ClassOrInterfaceDeclaration javai, bool isNested = false)
2626
{
2727
string originalTypeName = javai.getName();
2828
string newTypeName = $"I{originalTypeName}";
@@ -63,18 +63,23 @@ public static InterfaceDeclarationSyntax VisitInterfaceDeclaration(ConversionCon
6363
}
6464
}
6565

66-
var members = javai.getMembers().ToList<BodyDeclaration>();
66+
var members = javai.getMembers()?.ToList<BodyDeclaration>();
6767

68-
foreach (var member in members)
69-
{
70-
var syntax = VisitBodyDeclarationForInterface(context, classSyntax, member);
71-
if (syntax != null) classSyntax = classSyntax.AddMembers(syntax.WithJavaComments(member));
72-
}
68+
if (members is not null)
69+
foreach (var member in members)
70+
{
71+
var syntax = VisitBodyDeclarationForInterface(context, classSyntax, member);
72+
var memberWithComments = syntax?.WithJavaComments(member);
73+
if (memberWithComments != null)
74+
{
75+
classSyntax = classSyntax.AddMembers(memberWithComments);
76+
}
77+
}
7378

7479
return classSyntax.WithJavaComments(javai);
7580
}
7681

77-
public static ClassDeclarationSyntax VisitClassDeclaration(ConversionContext context, ClassOrInterfaceDeclaration javac, bool isNested = false)
82+
public static ClassDeclarationSyntax? VisitClassDeclaration(ConversionContext context, ClassOrInterfaceDeclaration javac, bool isNested = false)
7883
{
7984
string name = javac.getName();
8085

@@ -125,37 +130,46 @@ public static ClassDeclarationSyntax VisitClassDeclaration(ConversionContext con
125130
}
126131
}
127132

128-
var members = javac.getMembers().ToList<BodyDeclaration>();
133+
var members = javac.getMembers()?.ToList<BodyDeclaration>();
129134

130-
foreach (var member in members)
131-
{
132-
if (member is ClassOrInterfaceDeclaration childType)
135+
if (members is not null)
136+
foreach (var member in members)
133137
{
134-
if (childType.isInterface())
138+
if (member is ClassOrInterfaceDeclaration childType)
135139
{
136-
var childInt = VisitInterfaceDeclaration(context, childType, true);
137-
138-
classSyntax = classSyntax.AddMembers(childInt);
140+
if (childType.isInterface())
141+
{
142+
var childInt = VisitInterfaceDeclaration(context, childType, true);
143+
if (childInt is not null)
144+
{
145+
classSyntax = classSyntax.AddMembers(childInt);
146+
}
147+
}
148+
else
149+
{
150+
var childClass = VisitClassDeclaration(context, childType, true);
151+
if (childClass is not null)
152+
{
153+
classSyntax = classSyntax.AddMembers(childClass);
154+
}
155+
}
139156
}
140157
else
141158
{
142-
var childClass = VisitClassDeclaration(context, childType, true);
143-
144-
classSyntax = classSyntax.AddMembers(childClass);
159+
var syntax = VisitBodyDeclarationForClass(context, classSyntax, member);
160+
var withJavaComments = syntax?.WithJavaComments(member);
161+
if (withJavaComments != null)
162+
{
163+
classSyntax = classSyntax.AddMembers(withJavaComments);
164+
}
145165
}
146-
}
147-
else
148-
{
149-
var syntax = VisitBodyDeclarationForClass(context, classSyntax, member);
150-
if (syntax != null) classSyntax = classSyntax.AddMembers(syntax.WithJavaComments(member));
151-
}
152166

153-
while (context.PendingAnonymousTypes.Count > 0)
154-
{
155-
var anon = context.PendingAnonymousTypes.Dequeue();
156-
classSyntax = classSyntax.AddMembers(anon);
167+
while (context.PendingAnonymousTypes.Count > 0)
168+
{
169+
var anon = context.PendingAnonymousTypes.Dequeue();
170+
classSyntax = classSyntax.AddMembers(anon);
171+
}
157172
}
158-
}
159173

160174
return classSyntax.WithJavaComments(javac);
161175
}

JavaToCSharp/Declarations/ConstructorDeclarationVisitor.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,16 @@ namespace JavaToCSharp.Declarations
1212
{
1313
public class ConstructorDeclarationVisitor : BodyDeclarationVisitor<ConstructorDeclaration>
1414
{
15-
public override MemberDeclarationSyntax VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax, ConstructorDeclaration ctorDecl)
15+
public override MemberDeclarationSyntax? VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax, ConstructorDeclaration ctorDecl)
1616
{
17-
var ctorSyntax = SyntaxFactory.ConstructorDeclaration(classSyntax.Identifier.Value.ToString())
18-
.WithLeadingTrivia(SyntaxFactory.CarriageReturnLineFeed);
17+
string? identifier = classSyntax.Identifier.Value?.ToString();
18+
if (identifier is null)
19+
{
20+
return null;
21+
}
22+
23+
var ctorSyntax = SyntaxFactory.ConstructorDeclaration(identifier)
24+
.WithLeadingTrivia(SyntaxFactory.CarriageReturnLineFeed);
1925

2026
var mods = ctorDecl.getModifiers();
2127

@@ -62,7 +68,7 @@ public override MemberDeclarationSyntax VisitForClass(ConversionContext context,
6268
var ctorInvStmt = (ExplicitConstructorInvocationStmt)statements[0];
6369
statements.RemoveAt(0);
6470

65-
ArgumentListSyntax argsSyntax = null;
71+
ArgumentListSyntax? argsSyntax = null;
6672

6773
var initArgs = ctorInvStmt.getArgs();
6874
if (initArgs != null && initArgs.size() > 0)

0 commit comments

Comments
 (0)