Skip to content

Commit ed267fd

Browse files
authored
Realize generic navigation structure (#3472)
2 parents a442cdf + a4de274 commit ed267fd

118 files changed

Lines changed: 786 additions & 241 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)