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
38 lines (32 loc) · 1.41 KB
/
Copy pathAssertStatementVisitor.cs
File metadata and controls
38 lines (32 loc) · 1.41 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
38
using japa.parser.ast.stmt;
using JavaToCSharp.Expressions;
using Roslyn.Compilers.CSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Syntax.ExpressionStatement(
Syntax.InvocationExpression(
Syntax.IdentifierName("Debug.Assert"),
Syntax.ArgumentList(Syntax.SeparatedList(Syntax.Argument(checkSyntax)))));
var messageSyntax = ExpressionVisitor.VisitExpression(context, message);
return Syntax.ExpressionStatement(
Syntax.InvocationExpression(
Syntax.IdentifierName("Debug.Assert"),
Syntax.ArgumentList(Syntax.SeparatedList(new[] { Syntax.Argument(checkSyntax), Syntax.Argument(messageSyntax) }, new[] { Syntax.Token(SyntaxKind.CommaToken) }))));
}
}
}