Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The Removal of Recoder #3120

Draft
wants to merge 265 commits into
base: main
Choose a base branch
from
Draft

The Removal of Recoder #3120

wants to merge 265 commits into from

Conversation

wadoon
Copy link
Member

@wadoon wadoon commented Apr 16, 2023

This PR replaces recoder by javaparser, or more precisely by key-javaparser.
The special version has support for ProofJava, SchemaJava and Java 17+, all in one grammar.

Notes on the grammar can be found in the key-docs

This MR requires a complete overhaul of the KeY-Infrastructure.

Status:

  • Migration of KeY/Java transformations from recoder to javaparser
    • Get compile-error free for testing
    • Check JavaInfo for unused methods and delete them
    • Testing (wip)
      • Currently there is one transformation example
      • JavaRedux is parsed and translated.
      • Tests for translation from JP-AST to KeY-AST
  • Reimplementing the old infrastructure on top of Javaparser
  • Tests
    • What to do with TestProofJavaParser and TestSchemaJavaParser?
    • TestKeYRecoderMapping
  • Activate the new implementation.

@wadoon wadoon changed the title Weigl/key javaparser3 The removal of Recoder Apr 18, 2023
@wadoon wadoon added this to the v3.0.0 milestone Apr 18, 2023
@wadoon wadoon added Feature New feature or request Java Parser labels Apr 18, 2023
@github-actions
Copy link

github-actions bot commented Apr 18, 2023

Thank you for your contribution.

The test artifacts are available on Artiweb.
The newest artifact is here.

@wadoon
Copy link
Member Author

wadoon commented Apr 20, 2023

@jwiesler Sources of key-javaparser are now available via maven.

@jwiesler
Copy link
Contributor

jwiesler commented May 10, 2023

About NameInfo: How do we find what is actually needed by KeY from this interface, I've checked a few methods and many of them are just used by Recoder.

Edit: Took a look around and I didn't find any usages outside of the XX2KeY-converters.

@wadoon wadoon requested review from jwiesler and removed request for jwiesler February 3, 2024 02:17
# Conflicts:
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/MethodDeclaration.java
#	key.core/src/test/java/de/uka/ilkd/key/proof/replay/TestCopyingReplayer.java
#	settings.gradle
# By Drodt (57) and others
# Via GitHub (9) and others
* main: (103 commits)
  ColorSettings: drop old configuration file format
  Merge main into extraxt-new-core
  Bump ch.qos.logback:logback-classic from 1.5.0 to 1.5.3
  fixes #1533
  added checkbox to disable example loader directly in dialog
  address reviewer comments:
  set border + spotless + typo
  JML enabled keys indicator for the status line
  add test case for adt taclets
  Fix position info for equality expr errors
  Revert debugging code
  Spotless
  Add ADT Deconstructors
  Moved TestSMTMod to newsmt2
  spotless applied to TestSMTMod
  Added test for Modulo Translation
  Added translation from KeY mod to SMT mod. Soundness derived from translation of KeY div to SMT div
  Document ncore
  Fix merge import errors
  Fix merge errors
  ...

# Conflicts:
#	key.core.proof_references/src/main/java/de/uka/ilkd/key/proof_references/analyst/ClassAxiomAndInvariantProofReferencesAnalyst.java
#	key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/model/impl/ExecutionAuxiliaryContract.java
#	key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/oracle/OracleInvariantTranslator.java
#	key.core/build.gradle
#	key.core/src/main/java/de/uka/ilkd/key/informationflow/po/BlockExecutionPO.java
#	key.core/src/main/java/de/uka/ilkd/key/informationflow/po/InfFlowContractPO.java
#	key.core/src/main/java/de/uka/ilkd/key/informationflow/po/LoopInvExecutionPO.java
#	key.core/src/main/java/de/uka/ilkd/key/informationflow/po/SymbolicExecutionPO.java
#	key.core/src/main/java/de/uka/ilkd/key/informationflow/po/snippet/TwoStateMethodPredicateSnippet.java
#	key.core/src/main/java/de/uka/ilkd/key/informationflow/rule/tacletbuilder/BlockInfFlowUnfoldTacletBuilder.java
#	key.core/src/main/java/de/uka/ilkd/key/informationflow/rule/tacletbuilder/InfFlowBlockContractTacletBuilder.java
#	key.core/src/main/java/de/uka/ilkd/key/informationflow/rule/tacletbuilder/InfFlowLoopInvariantTacletBuilder.java
#	key.core/src/main/java/de/uka/ilkd/key/informationflow/rule/tacletbuilder/LoopInfFlowUnfoldTacletBuilder.java
#	key.core/src/main/java/de/uka/ilkd/key/java/JavaInfo.java
#	key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeY.java
#	key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java
#	key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYTypeConverter.java
#	key.core/src/main/java/de/uka/ilkd/key/java/Services.java
#	key.core/src/main/java/de/uka/ilkd/key/java/TypeConverter.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/abstraction/KeYJavaType.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/literal/Literal.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/DLEmbeddedExpression.java
#	key.core/src/main/java/de/uka/ilkd/key/java/expression/literal/EmptyMapLiteral.java
#	key.core/src/main/java/de/uka/ilkd/key/java/expression/literal/FreeLiteral.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaJavaProgramFactory.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/BooleanLDT.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/CharListLDT.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/DoubleLDT.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/FloatLDT.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/FreeLDT.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/IntegerLDT.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/LDT.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/LocSetLDT.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/MapLDT.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/PermissionLDT.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/RealLDT.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/SeqLDT.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/TermBuilder.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/op/IProgramVariable.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/op/LocationVariable.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramConstant.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramVariable.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/sort/ArraySort.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/sort/ProgramSVSort.java
#	key.core/src/main/java/de/uka/ilkd/key/macros/AbstractBlastingMacro.java
#	key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DeclarationBuilder.java
#	key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DefaultBuilder.java
#	key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java
#	key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java
#	key.core/src/main/java/de/uka/ilkd/key/pp/SelectPrinter.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/NodeInfo.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/TacletIndex.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/DependencyContractPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalBlockContractPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalLoopContractPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/ProblemInitializer.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/replay/AbstractProofReplayer.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/AbstractAuxiliaryContractRule.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/AbstractBlockContractRule.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/AbstractLoopContractRule.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/ObserverToUpdateRule.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/QueryExpand.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/conditions/TypeResolver.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/inst/SVInstantiations.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/merge/MergeRuleBuiltInRuleApp.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ArrayPostDecl.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ConstantValue.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ConstructorCall.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/EnhancedForElimination.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/EnumConstantValue.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/MethodCall.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/MultipleVarDecl.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ObserverEqualityMetaConstruct.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/SpecialConstructorCall.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletGenerator.java
#	key.core/src/main/java/de/uka/ilkd/key/smt/SMTObjTranslator.java
#	key.core/src/main/java/de/uka/ilkd/key/smt/hierarchy/TypeHierarchy.java
#	key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/FieldConstantHandler.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/ClassAxiomImpl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/ClassWellDefinedness.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/ContractAxiom.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/MethodWellDefinedness.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/RepresentsAxiom.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/WellDefinednessCheck.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/njml/JmlTermFactory.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/translation/SLExpression.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/translation/SLMethodResolver.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/translation/SLParameters.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/translation/SLTranslationException.java
#	key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/TacletProofObligationInput.java
#	key.core/src/test/java/de/uka/ilkd/key/java/visitor/TestDeclarationProgramVariableCollector.java
#	key.core/src/test/java/de/uka/ilkd/key/logic/TestTerm.java
#	key.core/src/test/java/de/uka/ilkd/key/logic/TestTermFactory.java
#	key.core/src/test/java/de/uka/ilkd/key/rule/TacletForTests.java
#	key.core/src/test/java/de/uka/ilkd/key/speclang/njml/ClasslevelTranslatorTest.java
#	key.core/src/test/java/de/uka/ilkd/key/speclang/njml/ExpressionTranslatorTest.java
#	key.ui/build.gradle
#	key.ui/src/main/java/de/uka/ilkd/key/gui/ProofManagementDialog.java
* refs/heads/main: (63 commits)
  unified naming of operator to "seq_upd".
  Bump org.ow2.asm:asm from 9.6 to 9.7
  reformat after merge
  fix hashing of set statements and assert statements
  Typo in message in dlsmt.sh
  More logging in run all proofs
  Infrastructure for selection of proof groups
  Update pull_request_template.md
  fix check for cvc5
  exit in error in dlsmt.sh
  fix cvc5
  fix smt solver downloader script for z3
  added references to hard-coded rulesets
  applying spotless
  replacing "\seq_length(x)" by "x.length" in set statements in examples
  fix rap for SetStatmentRule
  fix rap for JmlAssertRule
  repair unit tests
  Update broken link in README.md
  different highlighting for JML statements
  ...

# Conflicts:
#	key.core/src/main/java/de/uka/ilkd/key/java/JavaTools.java
#	key.core/src/main/java/de/uka/ilkd/key/java/KeYJavaASTFactory.java
#	key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/adt/SeqPut.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/statement/JmlAssert.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/statement/SetStatement.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/JMLTransformer.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/JmlAssert.java
#	key.core/src/main/java/de/uka/ilkd/key/java/visitor/CreatingASTVisitor.java
#	key.core/src/main/java/de/uka/ilkd/key/java/visitor/ProgVarReplaceVisitor.java
#	key.core/src/main/java/de/uka/ilkd/key/java/visitor/ProgramVariableCollector.java
#	key.core/src/main/java/de/uka/ilkd/key/java/visitor/Visitor.java
#	key.core/src/main/java/de/uka/ilkd/key/ldt/SeqLDT.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/JavaBlock.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/TermImpl.java
#	key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/mgt/SpecificationRepository.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/AuxiliaryContractBuilders.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/JmlAssertRule.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/conditions/FieldTypeToSortCondition.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/conditions/StaticFieldCondition.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/IntroAtPreDefsOp.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/SLEnvInput.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java
#	key.core/src/test/java/de/uka/ilkd/key/java/ProofJavaProgramFactoryTest.java
#	key.core/src/test/java/de/uka/ilkd/key/proof/runallproofs/proofcollection/ProofCollection.java
#	key.ui/src/main/java/de/uka/ilkd/key/gui/IssueDialog.java
@wadoon wadoon force-pushed the weigl/key-javaparser3 branch from b60c3e7 to 4e3b31b Compare April 20, 2024 08:40
wadoon added 14 commits April 20, 2024 12:11
* refs/heads/main: (26 commits)
  applying spotless
  Boyer Moore Majority Vote
  Added test case for the bugfix
  Fixes a StackOverflow when pretty printing a taclet
  updating test case descriptions for error reporting
  cleaning up the test cases
  enabling KeY test cases
  common functionality in new superclass
  improving the feedback of the parsers in KeY
  Fix keyword for message matching for ParseExceptionTest
  better error reporting or JML parsing
  Fix error handling for unknown sorts + test
  Add error message location for faulty equality exprs
  Handle null named program variable as error
  Formatting
  Disable debugging facility
  Fix expected error in delayed_error.key
  Handle InputMismatchExceptions better
  Formatting
  Re-instantiate LL fallback
  ...

# Conflicts:
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/JMLTransformer.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/JMLSpecExtractor.java
#	key.core/src/main/java/de/uka/ilkd/key/util/ExceptionTools.java
#	key.core/src/test/java/de/uka/ilkd/key/speclang/njml/JMLParserExceptionTest.java
# By Florian Lanzinger (25) and others
# Via GitHub (14) and others
* main: (69 commits)
  typo
  Unify type annotation notation
  Apply spotless
  Remove unnecessary warnings and serialization
  key.ncore done
  configure key.ncore
  fix null values
  eisop in ncore
  Fix formatting
  Fix more NoSuchElementExceptions
  Fix NoSuchElementException in JavaInfo
  Remove redundant nullness checks and fix test cases
  Fix proof script
  #equals must allow null values
  jspecify was missing in the compile classpath of tests
  Code style
  Revert JavaRedux Object
  Test case
  Fix merge issues
  reformat files
  ...

# Conflicts:
#	key.core/src/main/java/de/uka/ilkd/key/java/ParseExceptionInFile.java
#	key.core/src/main/java/de/uka/ilkd/key/java/PosConvertException.java
#	key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeY.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/operator/Subtype.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/RecoderModelTransformer.java
#	key.core/src/main/java/de/uka/ilkd/key/macros/scripts/ScriptException.java
#	key.core/src/main/java/de/uka/ilkd/key/nparser/builder/AbstractBuilder.java
#	key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java
#	key.core/src/main/java/de/uka/ilkd/key/pp/PrettyPrinter.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/Proof.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/SVInstantiationExceptionWithPosition.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/io/KeYFile.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/njml/Translator.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/translation/SLTranslationException.java
#	key.core/src/main/java/de/uka/ilkd/key/util/ExceptionTools.java
#	key.core/src/main/java/de/uka/ilkd/key/util/RecognitionException.java
#	key.core/src/main/java/de/uka/ilkd/key/util/parsing/BuildingException.java
#	key.core/src/main/java/de/uka/ilkd/key/util/parsing/LocatableException.java
#	key.core/src/main/java/recoder/service/KeYCrossReferenceSourceInfo.java
#	key.util/src/main/java/org/key_project/util/ExtList.java
#	key.util/src/main/java/org/key_project/util/collection/ImmutableList.java
#	settings.gradle
* refs/heads/main: (40 commits)
  Fix comment
  Fix checkstyle workflow
  reformat with spotless
  Fix checkstyle workflow
  Fix merge conflicts & spotless
  fix error in the legacy compat part of the proof obligation loading
  revert some changes of Mattias in the Configuration
  fix compile error and reformat
  Configuration: correcting typos, making implementation consistent
  address reviewers comments
  Remove todo
  Spotless
  Fix? resolving error
  Move ParsableVariable to ncore
  Spotless
  Spotless
  Rename AbstractSV to OperatorSV
  Beautified code
  Fix settings test for SE
  Spotless fixes
  ...

# Conflicts:
#	key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodPO.java
#	key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/po/ProgramMethodSubsetPO.java
#	key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/AbstractConditionalBreakpoint.java
#	key.core/src/main/java/de/uka/ilkd/key/informationflow/po/InfFlowContractPO.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/CatchSVWrapper.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/CcatchSVWrapper.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/ExecCtxtSVWrapper.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/ExpressionSVWrapper.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/JumpLabelSVWrapper.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/LabelSVWrapper.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/MethodSignatureSVWrapper.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/ProgramVariableSVWrapper.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SVWrapper.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/SchemaJavaProgramFactory.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/StatementSVWrapper.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/TypeSVWrapper.java
#	key.core/src/main/java/de/uka/ilkd/key/java/visitor/ProgVarReplaceVisitor.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/TermBuilder.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/op/ModalOperatorSV.java
#	key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/DependencyContractPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalBlockContractPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalLoopContractPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalOperationContractPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/IPersistablePO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/WellDefinednessPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/io/AbstractProblemLoader.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/io/IntermediateProofReplayer.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/AuxiliaryContractBuilders.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/TacletApp.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/WhileInvariantRule.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/conditions/IsThisReference.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/inst/GenericSortInstantiations.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/inst/SVInstantiations.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/inst/TermInstantiation.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/match/legacy/ElementMatcher.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/match/legacy/LegacyTacletMatcher.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/MatchModalOperatorSVInstruction.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletGenerator.java
#	key.core/src/main/java/de/uka/ilkd/key/settings/Configuration.java
#	key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/SMTTacletTranslator.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/DependencyContractImpl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/FunctionalOperationContractImpl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/MethodWellDefinedness.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/QueryAxiom.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/StatementWellDefinedness.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/WellDefinednessCheck.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/Context.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLResolverManager.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/njml/JmlTermFactory.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/translation/SLResolverManager.java
#	key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/DefaultLemmaGenerator.java
#	key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/TacletProofObligationInput.java
#	key.core/src/main/java/de/uka/ilkd/key/util/MiscTools.java
#	key.core/src/test/java/de/uka/ilkd/key/parser/TestDeclParser.java
#	key.core/src/test/java/de/uka/ilkd/key/proof/proverules/ProveRulesTest.java
#	key.core/src/test/java/de/uka/ilkd/key/rule/match/legacy/TestLegacyTacletMatch.java
#	key.core/src/test/java/de/uka/ilkd/key/speclang/SetStatementTest.java
#	key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/TacletDescriber.java
#	keyext.proofmanagement/src/main/java/org/key_project/proofmanagement/check/KeYFacade.java
* refs/heads/main:
  fixing double artifact upload, forbidden in new version
  Bump the github-actions-deps group with 11 updates
  update recoder test cases to JUnit 5
  removal of JUnit4 deps
* refs/heads/main: (40 commits)
  spotlessing ...
  making RuleCommand work if already fully instantiated
  RuleCommand can now deal with rules that have schema variables for logical variables.
  Fix loading of taclet proof obligations (issue #3477) * This commit fixes an NPE when loading * This commit fixes missing or inconsistent selection of loaded proof   obligation
  Code clean up (remove unused method)
  Fix loading of closed proofs (GUI threw error)
  Spotless fixes
  Fixed small typo in merge fixes.
  fix \locset() with empty args
  adding test cases for empty seq and locset.
  allow "\seq()" and "\locset()" in JML
  Bump the gradle-deps group with 6 updates
  Bump the github-actions-deps group with 4 updates
  Code formatting
  Adapted those qodana suggestions that are not false positives.
  Removed eclipse project file
  Also fixes for testcases
  Applied spotless
  Towards desired renaming on JML level
  Again spotless
  ...

# Conflicts:
#	key.core/src/main/java/de/uka/ilkd/key/java/JavaInfo.java
#	key.core/src/main/java/de/uka/ilkd/key/java/recoderext/JMLTransformer.java
#	key.core/src/main/java/de/uka/ilkd/key/java/visitor/ProgramVariableCollector.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/AbstractOperationPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/DependencyContractPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalBlockContractPO.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/init/FunctionalLoopContractPO.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/AbstractLoopInvariantRule.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/AuxiliaryContractBuilders.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/BlockContractInternalRule.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/LoopContractExternalRule.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/LoopContractInternalRule.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/UseDependencyContractApp.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/UseOperationContractRule.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/WhileInvariantRule.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/CreateFrameCond.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/CreateHeapAnonUpdate.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/IntroAtPreDefsOp.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/AbstractAuxiliaryContractImpl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/AuxiliaryContract.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/BlockContract.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/BlockContractImpl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/ContractFactory.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/FunctionalOperationContractImpl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/InformationFlowContractImpl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/LoopContract.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/LoopContractImpl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/LoopSpecImpl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/LoopSpecification.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/MethodWellDefinedness.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/OperationContract.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/QueryAxiom.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/RepresentsAxiom.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/WellDefinednessCheck.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/dl/translation/DLSpecFactory.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/JMLInfoExtractor.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/pretranslation/TextualJMLClassAxiom.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/pretranslation/TextualJMLClassInv.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/pretranslation/TextualJMLConstruct.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/pretranslation/TextualJMLDepends.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/pretranslation/TextualJMLFieldDecl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/pretranslation/TextualJMLInitially.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/pretranslation/TextualJMLMergePointDecl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/pretranslation/TextualJMLMethodDecl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/pretranslation/TextualJMLRepresents.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/pretranslation/TextualJMLSetStatement.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/pretranslation/TextualJMLSpecCase.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/njml/JmlTermFactory.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/translation/SLMethodResolver.java
#	key.core/src/test/java/de/uka/ilkd/key/speclang/ContractFactoryTest.java
#	key.core/src/test/resources/testcase/proofBundle/complexBundleGeneration/a/lang/String.key
#	key.ui/src/main/java/de/uka/ilkd/key/gui/actions/LemmaGenerationAction.java
# Conflicts:
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/JavaNonTerminalProgramElement.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/JavaProgramElement.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/NonTerminalProgramElement.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/StatementBlock.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/Modifier.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/declaration/VariableSpecification.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/literal/AbstractIntegerLiteral.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/literal/BooleanLiteral.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/literal/DoubleLiteral.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/literal/EmptyMapLiteral.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/literal/EmptySeqLiteral.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/literal/EmptySetLiteral.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/literal/FloatLiteral.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/literal/NullLiteral.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/expression/literal/RealLiteral.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/reference/PackageReference.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/statement/IForUpdates.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/statement/ILoopInit.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/statement/LabeledStatement.java
#	key.core/src/main/java/de/uka/ilkd/key/java/ast/statement/TransactionStatement.java
#	key.core/src/main/java/de/uka/ilkd/key/java/expression/literal/FreeLiteral.java
#	key.core/src/main/java/de/uka/ilkd/key/java/expression/literal/StringLiteral.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/BoundVariableTools.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/ProgramElementName.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/TermImpl.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/equality/IrrelevantTermLabelsProperty.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/equality/ProofIrrelevancyProperty.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/equality/RenamingTermProperty.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/equality/TermEqualsModProperty.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/equality/TermLabelsProperty.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/equality/TermProperty.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/label/BlockContractValidityTermLabel.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/label/SymbolicExecutionTermLabel.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/label/TermLabel.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/op/ProgramMethod.java
#	key.core/src/main/java/de/uka/ilkd/key/logic/op/SortDependingFunction.java
#	key.core/src/main/java/de/uka/ilkd/key/macros/scripts/InstantiateCommand.java
#	key.core/src/main/java/de/uka/ilkd/key/macros/scripts/RewriteCommand.java
#	key.core/src/main/java/de/uka/ilkd/key/macros/scripts/SelectCommand.java
#	key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/OpReplacer.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/conditions/EnumTypeCondition.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/conditions/TypeComparisonCondition.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/conditions/TypeResolver.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/inst/ProgramList.java
#	key.core/src/main/java/de/uka/ilkd/key/smt/AbstractSMTTranslator.java
#	key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/SeqDefHandler.java
#	key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/SumProdHandler.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/DependencyContractImpl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/SLEnvInput.java
#	key.core/src/main/java/de/uka/ilkd/key/strategy/quantifierHeuristics/EqualityConstraint.java
#	key.core/src/main/java/de/uka/ilkd/key/strategy/quantifierHeuristics/PredictCostProver.java
#	key.core/src/main/java/de/uka/ilkd/key/util/mergerule/MergeRuleUtils.java
#	key.core/src/test/java/de/uka/ilkd/key/parser/TestTermParser.java
#	key.core/src/test/java/de/uka/ilkd/key/rule/TestApplyTaclet.java
#	key.core/src/test/java/de/uka/ilkd/key/rule/conditions/TestApplyUpdateOnRigidCondition.java
#	key.ui/src/main/java/de/uka/ilkd/key/gui/plugins/javac/JavaCompilerCheckFacade.java
# By Mattias Ulbrich (15) and others
# Via GitHub (22) and others
* origin/main: (37 commits)
  Bump the github-actions-deps group with 2 updates
  Bump the gradle-deps group with 5 updates
  formatting
  Bump the github-actions-deps group with 2 updates
  Bump the gradle-deps group with 8 updates
  spotless
  generating ProofTree tooltips lazily, options to disable them completely
  fix for visual bug with overlapping/unreadable text in color settings
  Fox copyright year
  Bump the gradle-deps group with 6 updates
  improving code for heatmap activation
  applied spotless
  Missed nonnullness of map keys.
  type annotations for test cases
  repairing a nullness type error
  some more NonNull annotations
  Adding a test case for immutable maps.
  extending the nonnull type system to the immutable maps
  repairing type annotations in key.util ... it compiles again.
  repairing heatmap updates for inner nodes
  ...

# Conflicts:
#	key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DeclarationBuilder.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/LoopSpecImpl.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/LoopSpecification.java
#	key.core/src/main/java/de/uka/ilkd/key/util/KeYConstants.java
#	key.ui/src/main/java/de/uka/ilkd/key/gui/actions/ShowActiveTactletOptionsAction.java
#	key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/MainFrame.java
#	key.ui/src/main/java/de/uka/ilkd/key/gui/nodeviews/SequentView.java
#	key.ui/src/main/java/de/uka/ilkd/key/gui/settings/TacletOptionsSettings.java
#	key.util/src/main/java/org/key_project/util/collection/DefaultImmutableMap.java
#	key.util/src/main/java/org/key_project/util/collection/ImmutableArray.java
* origin/main:
  spotless update
  removed default implementations for AbstractExternalSolverRuleApp around RULE field
  small formatting change
  Bump the gradle-deps group with 6 updates
  Bump JetBrains/qodana-action in the github-actions-deps group
  set version to 2.12.4-dev
  increase java version to 21
  added missing conversion rules from javaUnaryMinusFloat/Double to negFloat/Double
  add AbstractExternalSolverRuleApp to allow other external solvers to close goals
  fixes NullPointerException, when using compareTo with locations that dont have a URI or position
* main: (26 commits)
  resolve reviewer requests
  applied formatting style
  disable automatic formatting of Java code blocks in comments/JavaDoc
  removed formatter version lock and added new keys (via new styleMerge tool)
  added small utility to merge xml formatter style files
  add javadoc
  add javadoc
  reformat fix finalize() deprecation
  fix error in expecting proof script if there is none
  fix compile errors due to merging
  forgot ProofScriptEntry
  fix compile errors
  Removal of the Triple class
  Removal of Quadruple.java
  fix auto merger in github workflow
  reenable sonarqube, disable the crappy things
  missing project description for two sub-modules
  Update TacletEq tests
  Separate SVs for decls and updates
  clean up taclet builder
  ...

# Conflicts:
#	build.gradle
#	gradle/keyCodeStyle.xml
#	key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/util/SymbolicExecutionSideProofUtil.java
#	key.core/src/main/java/de/uka/ilkd/key/java/visitor/ProgramReplaceVisitor.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/io/AbstractProblemLoader.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/io/IntermediateProofReplayer.java
#	key.core/src/main/java/de/uka/ilkd/key/proof/mgt/SpecificationRepository.java
#	key.core/src/main/java/de/uka/ilkd/key/rule/merge/MergeRule.java
#	key.core/src/main/java/de/uka/ilkd/key/speclang/njml/JmlIO.java
#	key.core/src/main/java/de/uka/ilkd/key/util/Quadruple.java
#	key.core/src/main/java/de/uka/ilkd/key/util/Triple.java
#	key.core/src/main/java/de/uka/ilkd/key/util/mergerule/SymbolicExecutionStateWithProgCnt.java
#	key.core/src/main/java/recoder/service/KeYCrossReferenceSourceInfo.java
#	key.ui/src/main/java/de/uka/ilkd/key/gui/WindowUserInterfaceControl.java
#	key.ui/src/main/java/de/uka/ilkd/key/gui/actions/SendFeedbackAction.java
#	key.ui/src/main/java/de/uka/ilkd/key/gui/sourceview/JavaDocument.java
#	keyext.slicing/src/main/java/org/key_project/slicing/analysis/DependencyAnalyzer.java
#	keyext.slicing/src/main/java/org/key_project/slicing/graph/DependencyGraph.java
Copy link

sonarqubecloud bot commented Dec 9, 2024

Quality Gate Failed Quality Gate failed

Failed conditions
3.0% Duplication on New Code (required ≤ 3%)
503 New Major Issues (required ≤ 0)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

* main:
  Minor refactoring to remove duplicate code
  fixing the broken automode
@wadoon
Copy link
Member Author

wadoon commented Dec 25, 2024

@unp1

Current problem: The correct rule is found: assignment_read_attribute but rule application does not lead to a new goal, where the assignment is consumed.

image

I can break down the problem to HeapLDT::getFieldSymbolName in which the field name is only length but something with "ABC::length" is expected:

image

What is expected at this point?

Exception is the following when I return length.

[04:07:56.526] WARN  ApplyStrategy - doWork exceptionorg.key_project.logic.TermCreationException: Building a term failed. Normally there is an arity mismatch or one of the subterms' sorts is not compatible (e.g. like the '2' in "true & 2")
The top level operator was length(Sort: int); its expected arg sorts were:
1.) sort: java.lang.Object, sort hash: 264117886

The subterms were:

	at org.key_project.logic.op.AbstractOperator.validTopLevelException(AbstractOperator.java:95)
	at de.uka.ilkd.key.logic.op.JFunction.validTopLevelException(JFunction.java:126)

current problem:
  * PrettyPrinting: Unbalanced...Exception
  * `assignment_read_attribute` with `length` results into wrong term
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature New feature or request Java Parser
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants