forked from paulirwin/JavaToCSharp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAssertStatementVisitor.cs
More file actions
37 lines (31 loc) · 1.54 KB
/
Copy pathAssertStatementVisitor.cs
File metadata and controls
37 lines (31 loc) · 1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using com.github.javaparser.ast.stmt;
using JavaToCSharp.Expressions;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
namespace JavaToCSharp.Statements
{
public class AssertStatementVisitor : StatementVisitor<AssertStmt>
{
public override StatementSyntax Visit(ConversionContext context, AssertStmt assertStmt)
{
if (!context.Options.UseDebugAssertForAsserts)
return null;
var check = assertStmt.getCheck();
var checkSyntax = ExpressionVisitor.VisitExpression(context, check);
var message = assertStmt.getMessage();
if (message == null)
return SyntaxFactory.ExpressionStatement(
SyntaxFactory.InvocationExpression(
SyntaxFactory.IdentifierName("Debug.Assert"),
SyntaxFactory.ArgumentList(SyntaxFactory.SeparatedList(new[]
{
SyntaxFactory.Argument(checkSyntax)
}))));
var messageSyntax = ExpressionVisitor.VisitExpression(context, message);
return SyntaxFactory.ExpressionStatement(
SyntaxFactory.InvocationExpression(
SyntaxFactory.IdentifierName("Debug.Assert"),
SyntaxFactory.ArgumentList(SyntaxFactory.SeparatedList(new[] { SyntaxFactory.Argument(checkSyntax), SyntaxFactory.Argument(messageSyntax) }, new[] { SyntaxFactory.Token(SyntaxKind.CommaToken) }))));
}
}
}