Skip to content

Can't convert int constant using binary representation #128

@davidgiga1993

Description

@davidgiga1993

Issue

When converting a java file which contains the following the conversion fails:

static final int FLAG_LONG_FRAME = 0b10;
static final int FLAG_COMMAND_FRAME = 0b100;
System.FormatException: Additional non-parsable characters are at the end of the string.
   at System.ParseNumbers.StringToInt(ReadOnlySpan`1 s, Int32 radix, Int32 flags, Int32& currPos)
   at System.Convert.ToInt32(String value, Int32 fromBase)
   at JavaToCSharp.Expressions.IntegerLiteralExpressionVisitor.Visit(ConversionContext context, IntegerLiteralExpr expr) in /Users/paulirwin/git/JavaToCSharp/JavaToCSharp/Expressions/IntegerLiteralExpressionVisitor.cs:line 20
   at JavaToCSharp.Expressions.ExpressionVisitor`1.Visit(ConversionContext context, Expression expr) in /Users/paulirwin/git/JavaToCSharp/JavaToCSharp/Expressions/ExpressionVisitor.cs:line 13
   at JavaToCSharp.Expressions.ExpressionVisitor.VisitExpression(ConversionContext context, Expression expr) in /Users/paulirwin/git/JavaToCSharp/JavaToCSharp/Expressions/ExpressionVisitor.cs:line 70
   at JavaToCSharp.Declarations.FieldDeclarationVisitor.VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax, FieldDeclaration fieldDecl, IReadOnlyList`1 extends, IReadOnlyList`1 implements) in /Users/paulirwin/git/JavaToCSharp/JavaToCSharp/Declarations/FieldDeclarationVisitor.cs:line 45
   at JavaToCSharp.Declarations.BodyDeclarationVisitor`1.VisitForClass(ConversionContext context, ClassDeclarationSyntax classSyntax, BodyDeclaration declaration, IReadOnlyList`1 extends, IReadOnlyList`1 implements) in /Users/paulirwin/git/JavaToCSharp/JavaToCSharp/Declarations/BodyDeclarationVisitor.cs:line 28
   at JavaToCSharp.Declarations.BodyDeclarationVisitor.VisitBodyDeclarationForClass(ConversionContext context, ClassDeclarationSyntax classSyntax, BodyDeclaration declaration, IReadOnlyList`1 extends, IReadOnlyList`1 implements) in /Users/paulirwin/git/JavaToCSharp/JavaToCSharp/Declarations/BodyDeclarationVisitor.cs:line 75
   at JavaToCSharp.Declarations.ClassOrInterfaceDeclarationVisitor.VisitClassDeclaration(ConversionContext context, ClassOrInterfaceDeclaration javac, Boolean isNested) in /Users/paulirwin/git/JavaToCSharp/JavaToCSharp/Declarations/ClassOrInterfaceDeclarationVisitor.cs:line 169
   at JavaToCSharp.JavaToCSharpConverter.ConvertText(String javaText, JavaConversionOptions options) in /Users/paulirwin/git/JavaToCSharp/JavaToCSharp/JavaToCSharpConverter.cs:line 97
   at JavaToCSharpCli.Program.ConvertToCSharpFile(FileSystemInfo inputFile, FileSystemInfo outputFile, JavaConversionOptions options, Boolean overwrite) in /Users/paulirwin/git/JavaToCSharp/JavaToCSharpCli/Program.cs:line 226

Changing the constants in the java class to regular decimal representation ( = 1;) fixes the issue

Version

.\JavaToCSharpCli.exe --version
3.0.0+5d8ee4f819f777ef74af5dd19b1c39a25f7c418a

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions