Compare commits
3 Commits
ae2461b99d
...
fbf8704af6
Author | SHA1 | Date | |
---|---|---|---|
|
fbf8704af6 | ||
|
dc896a453d | ||
|
5d41a19705 |
Binary file not shown.
@@ -406,7 +406,8 @@ public class JavaTXCompiler {
|
|||||||
unify.unifyParallel(unifyCons.getUndConstraints(), oderConstraints, finiteClosure, logFile, log, urm, usedTasks);
|
unify.unifyParallel(unifyCons.getUndConstraints(), oderConstraints, finiteClosure, logFile, log, urm, usedTasks);
|
||||||
logFile.write("RES_FINAL: " + li.getResults().toString() + "\n");
|
logFile.write("RES_FINAL: " + li.getResults().toString() + "\n");
|
||||||
logFile.flush();
|
logFile.flush();
|
||||||
return new LanguageServerTransferObject(li.getResults(), sf, ASTTypePrinter.print(sf));
|
generateBytecode(sf, li.getResults());
|
||||||
|
return new LanguageServerTransferObject(li.getResults(), sf, ASTTypePrinter.print(sf), generatedGenerics);
|
||||||
}
|
}
|
||||||
/* UnifyResultModel End */
|
/* UnifyResultModel End */
|
||||||
else {
|
else {
|
||||||
@@ -433,7 +434,8 @@ public class JavaTXCompiler {
|
|||||||
}
|
}
|
||||||
} catch (IOException | ClassNotFoundException e) {
|
} catch (IOException | ClassNotFoundException e) {
|
||||||
}
|
}
|
||||||
return new LanguageServerTransferObject(results.stream().map((unifyPairs -> new ResultSet(UnifyTypeFactory.convert(unifyPairs, Pair.generateTPHMap(cons))))).collect(Collectors.toList()), sf, ASTTypePrinter.print(sf));
|
generateBytecode(sf, results.stream().map((unifyPairs -> new ResultSet(UnifyTypeFactory.convert(unifyPairs, Pair.generateTPHMap(cons))))).collect(Collectors.toList()));
|
||||||
|
return new LanguageServerTransferObject(results.stream().map((unifyPairs -> new ResultSet(UnifyTypeFactory.convert(unifyPairs, Pair.generateTPHMap(cons))))).collect(Collectors.toList()), sf, ASTTypePrinter.print(sf), generatedGenerics);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ResultSet> typeInference(File file) throws ClassNotFoundException, IOException {
|
public List<ResultSet> typeInference(File file) throws ClassNotFoundException, IOException {
|
||||||
|
@@ -1,21 +1,29 @@
|
|||||||
package de.dhbw.compiler.languageServerInterface;
|
package de.dhbw.compiler.languageServerInterface;
|
||||||
|
|
||||||
import de.dhbw.compiler.syntaxtree.SourceFile;
|
import de.dhbw.compiler.syntaxtree.SourceFile;
|
||||||
|
import de.dhbw.compiler.target.generate.GenericsResult;
|
||||||
import de.dhbw.compiler.typeinference.result.ResultSet;
|
import de.dhbw.compiler.typeinference.result.ResultSet;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class LanguageServerTransferObject {
|
public class LanguageServerTransferObject {
|
||||||
List<ResultSet> resultSets;
|
List<ResultSet> resultSets;
|
||||||
SourceFile Ast;
|
SourceFile Ast;
|
||||||
String printedAst;
|
String printedAst;
|
||||||
public LanguageServerTransferObject(List<ResultSet> resultSets, SourceFile Ast, String printedAst) {
|
Map<SourceFile, List<GenericsResult>> generatedGenerics = new HashMap<>();
|
||||||
|
|
||||||
|
|
||||||
|
public LanguageServerTransferObject(List<ResultSet> resultSets, SourceFile Ast, String printedAst, Map<SourceFile, List<GenericsResult>> generatedGenerics) {
|
||||||
this.resultSets = resultSets;
|
this.resultSets = resultSets;
|
||||||
this.Ast = Ast;
|
this.Ast = Ast;
|
||||||
this.printedAst = printedAst;
|
this.printedAst = printedAst;
|
||||||
|
this.generatedGenerics = generatedGenerics;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ResultSet> getResultSets() {return resultSets;}
|
public List<ResultSet> getResultSets() {return resultSets;}
|
||||||
public SourceFile getAst() {return Ast;}
|
public SourceFile getAst() {return Ast;}
|
||||||
public String getPrintedAst() {return printedAst;}
|
public String getPrintedAst() {return printedAst;}
|
||||||
|
public Map<SourceFile, List<GenericsResult>> getGeneratedGenerics() {return generatedGenerics;}
|
||||||
}
|
}
|
||||||
|
@@ -13,9 +13,8 @@ public class CompilerInterfaceTest {
|
|||||||
LanguageServerInterface languageServer = new LanguageServerInterface();
|
LanguageServerInterface languageServer = new LanguageServerInterface();
|
||||||
var res = languageServer.getResultSetAndAbstractSyntax("import java.lang.Integer; public class test{\n" +
|
var res = languageServer.getResultSetAndAbstractSyntax("import java.lang.Integer; public class test{\n" +
|
||||||
" \n" +
|
" \n" +
|
||||||
" public main( test){\n" +
|
" public main(testa){\n" +
|
||||||
" Integer i = test; " +
|
" return testa;\n" +
|
||||||
" return i;\n" +
|
|
||||||
" }\n" +
|
" }\n" +
|
||||||
"}");
|
"}");
|
||||||
|
|
||||||
@@ -27,6 +26,23 @@ public class CompilerInterfaceTest {
|
|||||||
System.out.println(res.getPrintedAst());
|
System.out.println(res.getPrintedAst());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConstraintTypes() throws IOException, ClassNotFoundException {
|
||||||
|
LanguageServerInterface languageServer = new LanguageServerInterface();
|
||||||
|
TypeResolver typeResolver = new TypeResolver();
|
||||||
|
|
||||||
|
|
||||||
|
var res = typeResolver.infereMethodsWithParameters("import java.lang.Boolean; import java.lang.Integer; public class test{\n" +
|
||||||
|
" \n" +
|
||||||
|
" public main(testa, testa2, testa3){\n" +
|
||||||
|
" if(testa3){\n" +
|
||||||
|
"return testa2;}" +
|
||||||
|
" return testa;\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}");
|
||||||
|
res.forEach(el -> System.out.println(el.getName() + ": " + el.getPossibleTypes() + " | " + el.getLine() + " " + el.getCharPosition()));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTypeFinder() throws IOException, ClassNotFoundException {
|
public void testTypeFinder() throws IOException, ClassNotFoundException {
|
||||||
TypeResolver typeResolver = new TypeResolver();
|
TypeResolver typeResolver = new TypeResolver();
|
||||||
@@ -46,6 +62,21 @@ public class CompilerInterfaceTest {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGenericTypes() throws IOException, ClassNotFoundException {
|
||||||
|
TypeResolver typeResolver = new TypeResolver();
|
||||||
|
var inferedMethods = typeResolver.infereMethodsWithParameters("import java.lang.Integer; public class test{\n" +
|
||||||
|
" \n" +
|
||||||
|
" public main(testa){\n" +
|
||||||
|
" return testa;\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}"
|
||||||
|
);
|
||||||
|
|
||||||
|
inferedMethods.forEach(el -> System.out.println(el.getName() + ": " + el.getPossibleTypes() + " | " + el.getLine() + " " + el.getCharPosition()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTypeFinderParameter() throws IOException, ClassNotFoundException {
|
public void testTypeFinderParameter() throws IOException, ClassNotFoundException {
|
||||||
TypeResolver typeResolver = new TypeResolver();
|
TypeResolver typeResolver = new TypeResolver();
|
||||||
|
Reference in New Issue
Block a user