Skip to content

当给一个int变量赋值超过 INT_MAX 的数时,编译器崩溃 #47

Description

@771835

版本

1.0.2
git commit: a0ab9386e47379fd2eb4772930ff73aee749596c

复现代码

func test(){
    var i = 2147483648;
}

期望输出

编译器合理的报错,不抛出堆栈信息

实际输出

$ java -jar MCFPP-1.0.2-SNAPSHOT.jar p.json 
[INFO/MCFPPKt.main](22:34:18,415): Tips: 今天的编译器也很可爱呢w
[DEBUG/Project.readConfig](22:47:43,821): Reading project from file "p.json"
[INFO/Project.readProject](22:47:43,923): Reading lib file at: datapack/bin.mclib
[DEBUG/Project.indexType](22:47:44,194): Generate Type Index...
[DEBUG/Project.resolveField](22:47:44,325): Generate Function Index...
[DEBUG/Project.runAnnotation](22:47:44,333): Run Annotation...
[DEBUG/Project.compile](22:47:44,338): Compiling mcfpp code in "C:\Users\debug\Desktop\mcfpp-test\main.mcfpp"
[ERROR/MCFPPExprVisitor.visitNbtValue](22:47:44,364): Error while compiling C:\Users\debug\Desktop\mcfpp-test\main.mcfpp>>
Fatal error. Caused by:
2 |     var i = 2147483648;
  |             ^~~~~~~~~~

java.lang.NumberFormatException: For input string: "2147483648"
        at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
        at java.base/java.lang.Integer.parseInt(Integer.java:666)
        at java.base/java.lang.Integer.parseInt(Integer.java:778)
        at top.mcfpp.antlr.MCFPPExprVisitor.visitNbtValue(MCFPPExprVisitor.kt:662)
        at top.mcfpp.antlr.MCFPPExprVisitor.visitNbtValue(MCFPPExprVisitor.kt:40)
        at top.mcfpp.antlr.mcfppParser$NbtValueContext.accept(mcfppParser.java:12241)
        at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:18)
        at top.mcfpp.antlr.MCFPPExprVisitor.visitValue(MCFPPExprVisitor.kt:603)
        at top.mcfpp.antlr.MCFPPExprVisitor.visitPrimary(MCFPPExprVisitor.kt:335)
        at top.mcfpp.antlr.MCFPPExprVisitor.visitExpression(MCFPPExprVisitor.kt:59)
        at top.mcfpp.antlr.MCFPPImVisitor.visitFieldDeclaration(MCFPPImVisitor.kt:123)
        at top.mcfpp.antlr.mcfppParser$FieldDeclarationContext.accept(mcfppParser.java:4913)
        at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
        at top.mcfpp.antlr.mcfppParserBaseVisitor.visitStatement(mcfppParserBaseVisitor.java:546)
        at top.mcfpp.antlr.MCFPPImVisitor.visitStatement(MCFPPImVisitor.kt:790)
        at top.mcfpp.antlr.MCFPPImVisitor.visitCurlBlock(MCFPPImVisitor.kt:89)
        at top.mcfpp.antlr.mcfppParser$CurlBlockContext.accept(mcfppParser.java:10018)
        at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
        at top.mcfpp.antlr.mcfppParserBaseVisitor.visitFunctionDeclaration(mcfppParserBaseVisitor.java:245)
        at top.mcfpp.antlr.MCFPPImVisitor.visitFunctionDeclaration(MCFPPImVisitor.kt:59)
        at top.mcfpp.antlr.mcfppParser$FunctionDeclarationContext.accept(mcfppParser.java:3976)
        at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
        at top.mcfpp.antlr.mcfppParserBaseVisitor.visitDeclarations(mcfppParserBaseVisitor.java:77)
        at top.mcfpp.antlr.mcfppParser$DeclarationsContext.accept(mcfppParser.java:1132)
        at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
        at top.mcfpp.antlr.mcfppParserBaseVisitor.visitTypeDeclaration(mcfppParserBaseVisitor.java:70)
        at top.mcfpp.antlr.mcfppParser$TypeDeclarationContext.accept(mcfppParser.java:1032)
        at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
        at top.mcfpp.antlr.mcfppParserBaseVisitor.visitCompilationUnit(mcfppParserBaseVisitor.java:21)
        at top.mcfpp.antlr.mcfppParser$CompilationUnitContext.accept(mcfppParser.java:291)
        at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:18)
        at top.mcfpp.io.MCFPPFile.compile(MCFPPFile.kt:185)
        at top.mcfpp.Project.compile(Project.kt:548)
        at top.mcfpp.MCFPPKt.compile(MCFPP.kt:54)
        at top.mcfpp.MCFPPKt.main(MCFPP.kt:38)

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions