GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — Soundness: try/catch is checked as if the catch block always runs · Issue #364 · liquid-java/liquidjava Open Labels bugSomething isn't workingSomething isn't working DescriptionImpact: a real bug passes verification (false negative). Description The verifier checks Also, an exception can be thrown at any point in the Minimal reproducer import liquidjava.specification.ExternalRefinementsFor; import liquidjava.specification.StateRefinement; import liquidjava.specification.StateSet; @ExternalRefinementsFor("java.lang.Throwable") @StateSet({"withThrowable", "noThrowable"}) interface ThrowableRefinements { @StateRefinement(to = "noThrowable(this)") void Throwable(String message); @StateRefinement(to = "withThrowable(this)") void Throwable(String message, Throwable cause); @StateRefinement(from = "noThrowable(this)", to = "withThrowable(this)") Throwable initCause(Throwable cause); } public class Repro { static void load() throws Exception { throw new Exception("x"); } static void m() { Throwable t = new Throwable("start"); try { load(); t = new Throwable("try", new RuntimeException()); // withThrowable } catch (Exception e) { t = new Throwable("catch"); // noThrowable } t.initCause(new RuntimeException()); // not reported, but t is withThrowable if load() returns } } Expected: a State Refinement Error on Actual: Same bug with value refinements static void m() { int y = 0; try { load(); y = -5; } catch (Exception e) { y = 7; } @Refinement("_ > 0") int z = y; // not reported, but y == -5 if load() returns } Actual: ActivityMetadataMetadataAssigneesLabelsbugSomething isn't workingSomething isn't working TypeProjectsMilestoneRelationshipsDevelopmentIssue actions |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |