Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pluscal translator crush (very easy fix) #874

Open
jackmalkovick opened this issue Feb 8, 2024 · 2 comments
Open

Pluscal translator crush (very easy fix) #874

jackmalkovick opened this issue Feb 8, 2024 · 2 comments
Labels
bug error, glitch, fault, flaw, ... Tools The command line tools - TLC, SANY, ...

Comments

@jackmalkovick
Copy link

jackmalkovick commented Feb 8, 2024

Description

When translating my spec from pluscal to tla I've got this exception:

pcal.trans Version 1.11 of 31 December 2020
Labels added.
Parsing completed.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 107 out of bounds for length 107
	at pcal.AST.Indent(AST.java:972)
	at pcal.AST.VectorToSeqString(AST.java:1001)
	at pcal.AST$Assign.toString(AST.java:539)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:626)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:626)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST.VectorOfVectorsToSeqString(AST.java:1041)
	at pcal.AST$Either.toString(AST.java:642)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:626)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST.VectorOfVectorsToSeqString(AST.java:1041)
	at pcal.AST$Either.toString(AST.java:642)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:626)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST.VectorOfVectorsToSeqString(AST.java:1041)
	at pcal.AST$Either.toString(AST.java:642)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:626)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST.VectorOfVectorsToSeqString(AST.java:1041)
	at pcal.AST$Either.toString(AST.java:642)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:626)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:626)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:626)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST.VectorOfVectorsToSeqString(AST.java:1041)
	at pcal.AST$Either.toString(AST.java:642)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:626)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:626)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$If.toString(AST.java:629)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$LabelIf.toString(AST.java:740)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$While.toString(AST.java:524)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$LabeledStmt.toString(AST.java:502)
	at pcal.AST.VectorToSeqString(AST.java:1006)
	at pcal.AST$Uniprocess.toString(AST.java:257)
	at pcal.trans.performTranslation(trans.java:1015)
	at pcal.trans.performTranslation(trans.java:576)
	at pcal.trans.runMe(trans.java:374)
	at pcal.trans.main(trans.java:305)

Expected Behavior

Translation succeeds.

Actual Behavior

Crushes with the given stack trace.

Steps to Reproduce

I've run
java -cp tla2tools.jar pcal.trans mySpec.tla
In Toolbox fails silently.

Steps Taken to Fix

Unfortunately I'm not allowed to share the spec that reproduces the bug.

Possible Fix

The fix is replacing in PlusCal's AST.java the line
public static int[] curIndent = {0, 0, ...}
with something like
public static int[] curIndent = new int[2048];

Your Environment

Both Linux and Windows

@lemmy
Copy link
Member

lemmy commented Feb 8, 2024

Can you provide a PR?

@lemmy lemmy added bug error, glitch, fault, flaw, ... Tools The command line tools - TLC, SANY, ... labels Feb 8, 2024
@jackmalkovick
Copy link
Author

I tried to push a branch in order to make a pull request but
remote: Permission to tlaplus/tlaplus.git denied to jackmalkovick
I'm sure I'm not doing something right

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug error, glitch, fault, flaw, ... Tools The command line tools - TLC, SANY, ...
Development

No branches or pull requests

2 participants