Skip to content

Commit c3a6418

Browse files
authored
Add support for var variable declarations (#3821)
2 parents 7f05734 + c6baf8e commit c3a6418

5 files changed

Lines changed: 40 additions & 1 deletion

File tree

key.core/src/main/java/de/uka/ilkd/key/java/loader/JP2KeYConverter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2158,7 +2158,8 @@ public Object visit(ReceiverParameter n, Void arg) {
21582158

21592159
@Override
21602160
public Object visit(VarType n, Void arg) {
2161-
return getKeYJavaType(n.resolve());
2161+
var kjt = getKeYJavaType(n.resolve());
2162+
return new TypeRef(kjt);
21622163
}
21632164

21642165
@Override

key.core/src/main/java/de/uka/ilkd/key/java/loader/JavaParserFactory.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@
1616
import com.github.javaparser.JavaParser;
1717
import com.github.javaparser.ParseResult;
1818
import com.github.javaparser.ParserConfiguration;
19+
import com.github.javaparser.Processor;
1920
import com.github.javaparser.ast.CompilationUnit;
21+
import com.github.javaparser.ast.Node;
2022
import com.github.javaparser.ast.body.TypeDeclaration;
2123
import com.github.javaparser.ast.key.sv.KeyContextStatementBlock;
2224
import com.github.javaparser.ast.stmt.BlockStmt;
25+
import com.github.javaparser.ast.validator.postprocessors.Java10PostProcessor;
2326
import com.github.javaparser.resolution.Navigator;
2427
import com.github.javaparser.resolution.TypeSolver;
2528
import com.github.javaparser.resolution.declarations.ResolvedReferenceTypeDeclaration;
@@ -95,6 +98,14 @@ private ParserConfiguration getConfiguration() {
9598
config.setStoreTokens(true);
9699
}
97100
config.setLanguageLevel(ParserConfiguration.LanguageLevel.RAW);
101+
config.getProcessors().add(() -> new Processor() {
102+
@Override
103+
public void postProcess(ParseResult<? extends Node> result,
104+
ParserConfiguration configuration) {
105+
var pp = new Java10PostProcessor();
106+
pp.postProcess(result, configuration);
107+
}
108+
});
98109
config.setSymbolResolver(getSymbolSolver());
99110
return config;
100111
}

key.core/src/test/java/de/uka/ilkd/key/proof/runallproofs/ProofCollections.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,7 @@ public static ProofCollection automaticJavaDL() throws IOException {
652652
g.provable("../../key.core/src/test/resources/testcase/classpath/classpath.key");
653653
g.notprovable("heap/inconsistent_represents/MyClass_m.key");
654654
g.notprovable("heap/inconsistent_represents/MyClass_n.key");
655+
g.provable("standard_key/java_dl/typeInference.key");
655656

656657

657658
g = c.group("FOL");
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
\settings {
2+
"Strategy": {
3+
"options" : {
4+
"QUERYAXIOM_OPTIONS_KEY" : "QUERYAXIOM_ON",
5+
"QUERY_NEW_OPTIONS_KEY" : "QUERY_ON"
6+
}
7+
}
8+
}
9+
10+
\javaSource "typeInference_java/";
11+
12+
\programVariables {
13+
int _a;
14+
int _b;
15+
}
16+
17+
\problem {
18+
_a + _b + 3 = TypeInference.m(_a, _b)
19+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class TypeInference {
2+
static int m(int a, int b) {
3+
var x = a + 1;
4+
final var y = b + 2;
5+
return x + y;
6+
}
7+
}

0 commit comments

Comments
 (0)