Skip to content

Can't convert int constant using binary representation #128

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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