Skip to content

Logical Infrastructure for final values independent from the heap#3189

Closed
mattulbrich wants to merge 9 commits into
KeYProject:mainfrom
mattulbrich:finalFields
Closed

Logical Infrastructure for final values independent from the heap#3189
mattulbrich wants to merge 9 commits into
KeYProject:mainfrom
mattulbrich:finalFields

Conversation

@mattulbrich
Copy link
Copy Markdown
Member

@mattulbrich mattulbrich commented Jun 29, 2023

This is a copy of Merge Request !318 at gitlab. See also there for an extensive discussion on the subject.

Constructors

This mechanism must not be used when verifying a constructor or if constructors are planned to be inlined. In these cases, final field are writable. We suggest to implement this mechanism with a taclet option such that it can be switched off -- or even switched off automatically if need be.

Example

This file that can be closed automatically with this encoding. It cannot be closed in KeY itself since the final modifier is not considered in KeY.

A.java

Remaining issues

This is work in progress. There may be parts of KeY where this change has unexpected consequences.

  • Make it a taclet option
  • Add documentation to new methods
  • OPTIONAL: Adapt welldefined checking. @mi-ki
  • OPTIONAL: Add a class FinalArray<T> which allows this for arrays too (well ...)

Side note: The variable condition \final has already been implemented by Daniel, but was not used till now. Thanks.

mattulbrich and others added 9 commits August 19, 2020 19:08
although not really elegantly engineered.
The dependency would have to be handed in too deep. I remember
the value of a flag in a thread local variable instead.
* master: (213 commits)
  fix dependencies for gradle 7+
  Add setting to disable load examples dialog window
  Fix KeYProject#1566
  fixed NPE with regroup search filter
  improved and corrected wrapLine specification and implementation
  Fixes issues with displaying syntax errors
  [Fix] Intersection construction of location sets in TemrBuilder
  adding a KeY-proven line wrapping method.
  change jetbrains annotation against jsr305 one.
  fix test cases
  fix loading problems
  Revert "restore old order"
  restore old order
  fix NPE in KeyIO.Loader
  rename lex() to createLexer()
  add comments
  switch back to ImmutableList
  remove if statement
  clean up comments
  added comment to KeYParser.g4 as requested
  ...

# Conflicts:
#	key/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/ruleSetsDeclarations.key
# Conflicts:
#	key/key.core/src/main/java/de/uka/ilkd/key/rule/UseDependencyContractRule.java
#	key/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/JMLSpecExtractor.java
#	key/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLTranslator.java
@mattulbrich mattulbrich added Feature New feature or request Calculus labels Jun 29, 2023
@mattulbrich mattulbrich added this to the v2.12.0 milestone Jun 29, 2023
@mattulbrich mattulbrich self-assigned this Jun 29, 2023
@mattulbrich mattulbrich marked this pull request as draft June 29, 2023 07:29
@wadoon
Copy link
Copy Markdown
Member

wadoon commented Jul 4, 2023

Does this also affect the proof management tool of @WolframPfeifer? Checking whether taclet option was active, while a constructor appeared in a method-frame?

@wadoon wadoon modified the milestones: v2.12.0, v2.14.0 Jul 7, 2023
@wadoon wadoon self-requested a review October 24, 2023 01:27
@wadoon wadoon mentioned this pull request Jul 6, 2024
13 tasks
@mattulbrich mattulbrich added the Wontfix This will not be worked on label Dec 10, 2024
@mattulbrich
Copy link
Copy Markdown
Member Author

This PR has been superseded by #3495 based on the same (but rebased) code changes

@wadoon wadoon modified the milestones: NextMajor, NextMinor Mar 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Calculus Feature New feature or request Wontfix This will not be worked on

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants