Commit bb0dcf0
committed
Fix broken proof tree after information flow auto pilot (#3713)
The Full Information Flow Auto Pilot broke the proof tree view with
'IllegalStateException: abstract tree node without parent: Proof Tree'.
Root cause: when the macro creates its auxiliary side proof, the
StartSideProofMacro handling in macroFinished re-froze the interface via
initiateAutoMode(sideProof), which also broadcasts autoModeStarted for
the side proof (with no matching autoModeStopped ever following). The
ProofTreeView listener trusted any event source and overwrote its
modifiedSubtrees bookkeeping with the side proof's goal nodes. At the
final autoModeStopped, those foreign (by then disposed) nodes were fed
into the tree model of the displayed proof, where the lazily created
parent branch node for the foreign root has no parent and a disposed
proof has no root() anymore, defeating the existing root check.
The fix prevents the poisoning at both ends:
- macroFinished only freezes the interface (stopInterface +
setInteractive) instead of broadcasting a spurious autoModeStarted
for the side proof,
- ProofTreeView ignores auto mode events for proofs it does not display
and skips foreign nodes when refreshing modified subtrees.
GUIAbstractTreeNode.getParent() keeps failing fast on parent-less
nodes so that bookkeeping bugs of this kind surface; the previously
unexplained root-instance escape ('why can there be another instance
of the root node?') is now documented - it stems from stale instances
after cache invalidation and from exactly this kind of foreign-node
walk. A regression test pins the fail-fast contract.
Created with AI tooling1 parent d3de45c commit bb0dcf0
3 files changed
Lines changed: 79 additions & 3 deletions
File tree
- key.ui/src
- main/java/de/uka/ilkd/key
- gui/prooftree
- ui
- test/java/de/uka/ilkd/key/gui/prooftree
Lines changed: 11 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1066 | 1066 | | |
1067 | 1067 | | |
1068 | 1068 | | |
| 1069 | + | |
| 1070 | + | |
| 1071 | + | |
| 1072 | + | |
| 1073 | + | |
| 1074 | + | |
| 1075 | + | |
1069 | 1076 | | |
1070 | 1077 | | |
1071 | 1078 | | |
| |||
1088 | 1095 | | |
1089 | 1096 | | |
1090 | 1097 | | |
1091 | | - | |
| 1098 | + | |
| 1099 | + | |
| 1100 | + | |
| 1101 | + | |
1092 | 1102 | | |
1093 | 1103 | | |
1094 | 1104 | | |
| |||
Lines changed: 3 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
172 | 172 | | |
173 | 173 | | |
174 | 174 | | |
175 | | - | |
| 175 | + | |
176 | 176 | | |
177 | | - | |
| 177 | + | |
| 178 | + | |
178 | 179 | | |
179 | 180 | | |
180 | 181 | | |
| |||
Lines changed: 65 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
0 commit comments