Skip to content

Commit b54fa5b

Browse files
committed
Merge branch 'refs/heads/main' into weigl/pckgreworked
* refs/heads/main: Update key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java spotless update oracle for taclet equality test repair soundness of assignment2UpdateRules with checked overflows spotless Changed types in replacement map for WD taclets, since PR #3436 made casting TermSV to ProgramVariable not applicable Fix and test goToNext() Fix goToNextSibling() (thx Tobias) Format Add comments and next() method Remove SVSubstitute Clean up inheritance Implement missing methods Start implementation of traversal Implement cursor Increase Java version API design throw an error if choices used in a taclet are not declared correct inRange(..) predicates for overflow check semantics fix creating of branches for overflow checking
2 parents bc9f258 + ed267fd commit b54fa5b

128 files changed

Lines changed: 939 additions & 320 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

key.core.symbolic_execution/src/main/java/de/uka/ilkd/key/symbolic_execution/strategy/breakpoint/AbstractConditionalBreakpoint.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionSideProofUtil;
3333
import de.uka.ilkd.key.symbolic_execution.util.SymbolicExecutionUtil;
3434

35+
import org.key_project.logic.SyntaxElement;
3536
import org.key_project.util.collection.ImmutableList;
3637
import org.key_project.util.collection.ImmutableSLList;
3738

@@ -76,7 +77,7 @@ public abstract class AbstractConditionalBreakpoint extends AbstractHitCountBrea
7677
* A {@link Map} mapping from relevant variables for the condition to their runtime equivalent
7778
* in KeY
7879
*/
79-
private Map<SVSubstitute, SVSubstitute> variableNamingMap;
80+
private Map<SyntaxElement, SyntaxElement> variableNamingMap;
8081

8182
/**
8283
* The list of parameter variables of the method that contains the associated breakpoint
@@ -162,14 +163,14 @@ private void putValuesFromGlobalVars(ProgramVariable varForCondition, Node node,
162163
*
163164
* @return the cloned map
164165
*/
165-
private Map<SVSubstitute, SVSubstitute> getOldMap() {
166-
Map<SVSubstitute, SVSubstitute> oldMap = new HashMap<>();
167-
for (Entry<SVSubstitute, SVSubstitute> svSubstituteSVSubstituteEntry : getVariableNamingMap()
166+
private Map<SyntaxElement, SyntaxElement> getOldMap() {
167+
Map<SyntaxElement, SyntaxElement> oldMap = new HashMap<>();
168+
for (Entry<SyntaxElement, SyntaxElement> svSubstituteSVSubstituteEntry : getVariableNamingMap()
168169
.entrySet()) {
169170
Entry<?, ?> oldEntry = svSubstituteSVSubstituteEntry;
170-
if (oldEntry.getKey() instanceof SVSubstitute
171-
&& oldEntry.getValue() instanceof SVSubstitute) {
172-
oldMap.put((SVSubstitute) oldEntry.getKey(), (SVSubstitute) oldEntry.getValue());
171+
if (oldEntry.getKey() instanceof SyntaxElement
172+
&& oldEntry.getValue() instanceof SyntaxElement) {
173+
oldMap.put((SyntaxElement) oldEntry.getKey(), (SyntaxElement) oldEntry.getValue());
173174
}
174175
}
175176
return oldMap;
@@ -200,7 +201,7 @@ private void freeVariablesAfterReturn(Node node, RuleApp ruleApp, boolean inScop
200201
* @param oldMap the oldMap variableNamings
201202
*/
202203
private void putValuesFromRenamings(ProgramVariable varForCondition, Node node, boolean inScope,
203-
Map<SVSubstitute, SVSubstitute> oldMap, RuleApp ruleApp) {
204+
Map<SyntaxElement, SyntaxElement> oldMap, RuleApp ruleApp) {
204205
// look for renamings KeY did
205206
boolean found = false;
206207
// get current renaming tables
@@ -215,7 +216,7 @@ private void putValuesFromRenamings(ProgramVariable varForCondition, Node node,
215216
.getHashMap().entrySet()) {
216217
Entry<?, ?> entry = value;
217218
if (entry.getKey() instanceof LocationVariable
218-
&& entry.getValue() instanceof SVSubstitute) {
219+
&& entry.getValue() instanceof SyntaxElement) {
219220
if ((VariableNamer.getBasename(((LocationVariable) entry.getKey()).name()))
220221
.equals(varForCondition.name())
221222
&& ((LocationVariable) entry.getKey()).name().toString()
@@ -229,7 +230,7 @@ private void putValuesFromRenamings(ProgramVariable varForCondition, Node node,
229230
// add new value
230231
toKeep.add((LocationVariable) entry.getValue());
231232
getVariableNamingMap().put(varForCondition,
232-
(SVSubstitute) entry.getValue());
233+
(SyntaxElement) entry.getValue());
233234
found = true;
234235
break;
235236
} else if (inScope && ((LocationVariable) entry.getKey()).name()
@@ -242,7 +243,7 @@ private void putValuesFromRenamings(ProgramVariable varForCondition, Node node,
242243
// add new value
243244
toKeep.add((LocationVariable) entry.getValue());
244245
getVariableNamingMap().put(varForCondition,
245-
(SVSubstitute) entry.getValue());
246+
(SyntaxElement) entry.getValue());
246247
found = true;
247248
break;
248249
}
@@ -263,7 +264,7 @@ private void putValuesFromRenamings(ProgramVariable varForCondition, Node node,
263264
protected void refreshVarMaps(RuleApp ruleApp, Node node) {
264265
boolean inScope = isInScope(node);
265266
// collect old values
266-
Map<SVSubstitute, SVSubstitute> oldMap = getOldMap();
267+
Map<SyntaxElement, SyntaxElement> oldMap = getOldMap();
267268
// put values into map which have to be replaced
268269
for (ProgramVariable varForCondition : getVarsForCondition()) {
269270
// put global variables only done when a variable is instantiated by
@@ -498,14 +499,14 @@ public Set<LocationVariable> getToKeep() {
498499
/**
499500
* @return the variableNamingMap
500501
*/
501-
public Map<SVSubstitute, SVSubstitute> getVariableNamingMap() {
502+
public Map<SyntaxElement, SyntaxElement> getVariableNamingMap() {
502503
return variableNamingMap;
503504
}
504505

505506
/**
506507
* @param variableNamingMap the variableNamingMap to set
507508
*/
508-
public void setVariableNamingMap(Map<SVSubstitute, SVSubstitute> variableNamingMap) {
509+
public void setVariableNamingMap(Map<SyntaxElement, SyntaxElement> variableNamingMap) {
509510
this.variableNamingMap = variableNamingMap;
510511
}
511512

key.core/src/main/java/de/uka/ilkd/key/java/Comment.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
import de.uka.ilkd.key.java.visitor.Visitor;
77

8+
import org.key_project.logic.SyntaxElement;
9+
810
/**
911
* Comment element of Java source code.
1012
*/
@@ -71,4 +73,14 @@ public boolean equals(Object o) {
7173
}
7274
return (getText().equals(cmp.getText()));
7375
}
76+
77+
@Override
78+
public int getChildCount() {
79+
return 0;
80+
}
81+
82+
@Override
83+
public SyntaxElement getChild(int n) {
84+
throw new IndexOutOfBoundsException("Comment has no children");
85+
}
7486
}

key.core/src/main/java/de/uka/ilkd/key/java/NonTerminalProgramElement.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
* SPDX-License-Identifier: GPL-2.0-only */
44
package de.uka.ilkd.key.java;
55

6+
import org.key_project.logic.SyntaxElement;
7+
68
/**
79
* Non terminal program element. taken from COMPOST and changed to achieve an immutable structure
810
*/
@@ -25,4 +27,8 @@ public interface NonTerminalProgramElement extends ProgramElement {
2527
*/
2628
ProgramElement getChildAt(int index);
2729

30+
@Override
31+
default SyntaxElement getChild(int n) {
32+
return getChildAt(n);
33+
}
2834
}

key.core/src/main/java/de/uka/ilkd/key/java/SourceElement.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@
44
package de.uka.ilkd.key.java;
55

66
import de.uka.ilkd.key.java.visitor.Visitor;
7-
import de.uka.ilkd.key.logic.op.SVSubstitute;
7+
8+
import org.key_project.logic.SyntaxElement;
89

910
/**
1011
* A source element is a piece of syntax. It does not necessarily have a semantics, at least none
1112
* that is machinable, for instance a {@link recoder.java.Comment}. taken from RECODER and changed
1213
* to achieve an immutable structure
1314
*/
1415

15-
public interface SourceElement extends SVSubstitute {
16+
public interface SourceElement extends SyntaxElement {
1617

1718

1819
/**

key.core/src/main/java/de/uka/ilkd/key/java/TerminalProgramElement.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
* SPDX-License-Identifier: GPL-2.0-only */
44
package de.uka.ilkd.key.java;
55

6+
import org.key_project.logic.TerminalSyntaxElement;
7+
68
/**
79
* Terminal program element. taken from COMPOST and changed to achieve an immutable structure
810
*/
911

10-
public interface TerminalProgramElement extends ProgramElement {
12+
public interface TerminalProgramElement extends ProgramElement, TerminalSyntaxElement {
13+
1114
}

key.core/src/main/java/de/uka/ilkd/key/java/declaration/MethodDeclaration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ public SourceElement getFirstElement() {
163163

164164
@Override
165165
public SourceElement getLastElement() {
166-
return getChildAt(getChildCount() - 1).getLastElement();
166+
return getChildAt(this.getChildCount() - 1).getLastElement();
167167
}
168168

169169

key.core/src/main/java/de/uka/ilkd/key/java/declaration/Modifier.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44
package de.uka.ilkd.key.java.declaration;
55

66
import de.uka.ilkd.key.java.JavaProgramElement;
7-
import de.uka.ilkd.key.java.TerminalProgramElement;
87
import de.uka.ilkd.key.java.visitor.Visitor;
98

9+
import org.key_project.logic.SyntaxElement;
1010
import org.key_project.util.ExtList;
1111

1212
/**
1313
* Modifier. taken from COMPOST and changed to achieve an immutable structure
1414
*/
1515

16-
public abstract class Modifier extends JavaProgramElement implements TerminalProgramElement {
16+
public abstract class Modifier extends JavaProgramElement {
1717

1818
/**
1919
* Modifier.
@@ -56,4 +56,14 @@ public String getText() {
5656
public void visit(Visitor v) {
5757
v.performActionOnModifier(this);
5858
}
59+
60+
@Override
61+
public int getChildCount() {
62+
return 0;
63+
}
64+
65+
@Override
66+
public SyntaxElement getChild(int n) {
67+
throw new IndexOutOfBoundsException(getClass() + " " + this + " has no children");
68+
}
5969
}

key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/Instanceof.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ public class Instanceof extends TypeOperator {
3131

3232
public Instanceof(ExtList children) {
3333
super(children);
34-
assert getChildCount() == 2 : "not 2 children but " + getChildCount();
34+
assert this.getChildCount() == 2 : "not 2 children but " + this.getChildCount();
3535
}
3636

3737

3838
public Instanceof(Expression unaryChild, TypeReference typeref) {
3939
super(unaryChild, typeref);
40-
assert getChildCount() == 2 : "not 2 children but " + getChildCount();
40+
assert this.getChildCount() == 2 : "not 2 children but " + this.getChildCount();
4141
}
4242

4343
/**

key.core/src/main/java/de/uka/ilkd/key/java/expression/operator/New.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public SourceElement getFirstElementIncludingBlocks() {
9999

100100
@Override
101101
public SourceElement getLastElement() {
102-
return getChildAt(getChildCount() - 1).getLastElement();
102+
return getChildAt(this.getChildCount() - 1).getLastElement();
103103
}
104104

105105

0 commit comments

Comments
 (0)