Skip to content

Fixes for minor regressions on main#3844

Merged
unp1 merged 3 commits into
mainfrom
bubel/minor-regression-fixes
Jun 19, 2026
Merged

Fixes for minor regressions on main#3844
unp1 merged 3 commits into
mainfrom
bubel/minor-regression-fixes

Conversation

@unp1

@unp1 unp1 commented Jun 18, 2026

Copy link
Copy Markdown
Member

Intended Change

Three small, independent fixes for minor regressions on main.

  • Robustly read numeric settings stored as Integer or Long. Fixes:
    Startup crash if SMT solver timeout is increased (Integer cannot be cast to class Long) #3833
  • Don't crash reloading a recent file with no stored profile. A recent-file
    entry whose profile name was never set had the null value as the string
    "null"; reloading it then tried to resolve a profile named "null", failed.
    A missing profile name is now treated as "use the default profile" on
    load, and the "null" placeholder is no longer written on save.
  • Show a proof macro's aggregate statistics in the status line. After a
    compound macro finished, the status line kept the partial count from the macro's
    last internal strategy pass instead of the macro's own aggregate. The
    ProofMacroFinishedInfo aggregate is now displayed when a macro completes.

Type of pull request

  • Bug fix (non-breaking change which fixes an issue)
  • There are changes to the (Java) code

Ensuring quality

  • Added a regression test for the settings converter
    (AbstractPropertiesSettingsTest).
  • Compiles and passes spotless; the touched modules' unit tests pass.
  • Each fix is an independent commit, easy to review or revert in isolation.

Additional information and contact(s)

These fixes were separated out of the multithreading work
(#3842) as standalone,
cherry-pickable commits so they can land on main independently.

This PR has been done with AI tooling support.

The contributions within this pull request are licensed under GPLv2 (only) for inclusion in KeY.

unp1 added 3 commits June 18, 2026 23:39
A stored settings value may deserialize as Integer or Long depending on its
magnitude and the format, but the numeric property converters assumed a fixed
boxed type and threw a ClassCastException on the other -- which could crash KeY
on startup while loading the settings. Accept any Number instead.
A recent-file entry whose profile name was never set serialized the null value as
the string "null"; reloading it then tried to resolve a profile named "null",
failed, and showed an error dialog instead of opening the file. Treat a missing
profile name (null or the legacy "null" string) as "use the default profile" on
load, and stop writing the "null" placeholder when saving.
After a compound macro finished, the status line kept the partial count from the
macro's last internal strategy pass (e.g. "Applied 2 rules, 1 goal" even though
the macro had closed thousands) instead of the macro's own aggregate. Display the
ProofMacroFinishedInfo's aggregate result when a macro completes.
@unp1 unp1 added the 🐞 Bug label Jun 18, 2026
@unp1 unp1 added this to the v3.0.0 milestone Jun 18, 2026
@unp1 unp1 self-assigned this Jun 18, 2026
@unp1 unp1 marked this pull request as ready for review June 18, 2026 21:51
@unp1 unp1 enabled auto-merge June 18, 2026 21:51
@unp1 unp1 mentioned this pull request Jun 18, 2026
8 tasks

@Drodt Drodt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks

@unp1 unp1 added this pull request to the merge queue Jun 19, 2026
Merged via the queue into main with commit 0655e80 Jun 19, 2026
36 checks passed
@unp1 unp1 deleted the bubel/minor-regression-fixes branch June 19, 2026 08:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Startup crash if SMT solver timeout is increased (Integer cannot be cast to class Long)

2 participants