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 — Crash when an override has fewer state refinements than the method it overrides · Issue #462 · liquid-java/liquidjava Open Labels bugSomething isn't workingSomething isn't working DescriptionImpact: the verifier crashes on a valid program when an override has fewer Minimal reproducer @StateSet({"off", "on"}) class A { @StateRefinement(to = "off(this)") A() {} @StateRefinement(from = "off(this)", to = "on(this)") @StateRefinement(from = "on(this)", to = "off(this)") void toggle() {} @StateRefinement(from = "on(this)") void use() {} } class B extends A { @Override @StateRefinement(from = "off(this)", to = "on(this)") void toggle() {} } class Client { static void f() { B b = new B(); b.use(); } } Actual: on main @ 19991d3: That first crash comes from The loop goes over the superclass's state refinements and reads Expected: no crash. A subclass's refinements should be checked against the superclass's as a whole, not pairwise by position: every state the superclass accepts should be accepted by the override, and the override's result should be one the superclass promises. If they are incompatible, the verifier should report the usual FROM/TO subtyping error instead of throwing. Found while working on #456. Activity
MetadataMetadataAssigneesLabelsbugSomething 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. |