3 Commits

Author SHA1 Message Date
Ruben
fbf8704af6 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	Clients/VisualStudioCode/JavaTXLanguageServer-1.0-SNAPSHOT-jar-with-dependencies.jar
2025-02-12 17:03:05 +01:00
Ruben
dc896a453d feat: add Generic ResultSet in DTO 2025-02-12 17:02:52 +01:00
Ruben
5d41a19705 feat: add Generic ResultSet in DTO 2025-02-12 17:00:52 +01:00
4 changed files with 47 additions and 6 deletions

View File

@@ -406,7 +406,8 @@ public class JavaTXCompiler {
unify.unifyParallel(unifyCons.getUndConstraints(), oderConstraints, finiteClosure, logFile, log, urm, usedTasks);
logFile.write("RES_FINAL: " + li.getResults().toString() + "\n");
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 */
else {
@@ -433,7 +434,8 @@ public class JavaTXCompiler {
}
} 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 {

View File

@@ -1,21 +1,29 @@
package de.dhbw.compiler.languageServerInterface;
import de.dhbw.compiler.syntaxtree.SourceFile;
import de.dhbw.compiler.target.generate.GenericsResult;
import de.dhbw.compiler.typeinference.result.ResultSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class LanguageServerTransferObject {
List<ResultSet> resultSets;
SourceFile Ast;
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.Ast = Ast;
this.printedAst = printedAst;
this.generatedGenerics = generatedGenerics;
}
public List<ResultSet> getResultSets() {return resultSets;}
public SourceFile getAst() {return Ast;}
public String getPrintedAst() {return printedAst;}
public Map<SourceFile, List<GenericsResult>> getGeneratedGenerics() {return generatedGenerics;}
}

View File

@@ -13,9 +13,8 @@ public class CompilerInterfaceTest {
LanguageServerInterface languageServer = new LanguageServerInterface();
var res = languageServer.getResultSetAndAbstractSyntax("import java.lang.Integer; public class test{\n" +
" \n" +
" public main( test){\n" +
" Integer i = test; " +
" return i;\n" +
" public main(testa){\n" +
" return testa;\n" +
" }\n" +
"}");
@@ -27,6 +26,23 @@ public class CompilerInterfaceTest {
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
public void testTypeFinder() throws IOException, ClassNotFoundException {
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
public void testTypeFinderParameter() throws IOException, ClassNotFoundException {
TypeResolver typeResolver = new TypeResolver();