forked from JavaTX/JavaCompilerCore
Use signature in methodcall
This commit is contained in:
parent
04508a85f1
commit
a9f69ead5c
@ -9,10 +9,7 @@ import de.dhbwstuttgart.syntaxtree.statement.*;
|
|||||||
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||||
import de.dhbwstuttgart.target.tree.MethodParameter;
|
import de.dhbwstuttgart.target.tree.MethodParameter;
|
||||||
import de.dhbwstuttgart.target.tree.expression.*;
|
import de.dhbwstuttgart.target.tree.expression.*;
|
||||||
import de.dhbwstuttgart.target.tree.type.TargetFunNType;
|
import de.dhbwstuttgart.target.tree.type.*;
|
||||||
import de.dhbwstuttgart.target.tree.type.TargetRefType;
|
|
||||||
import de.dhbwstuttgart.target.tree.type.TargetSpecializedType;
|
|
||||||
import de.dhbwstuttgart.target.tree.type.TargetType;
|
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -172,7 +169,7 @@ public class StatementToTargetExpression implements StatementVisitor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static boolean convertsTo(TargetType from, TargetType to) {
|
static boolean convertsTo(TargetType from, TargetType to) {
|
||||||
if (to.equals(TargetType.Object)) return true; // TODO Consider type coercion and suptyping
|
if (to.equals(TargetType.Object)) return true; // TODO Consider type coercion and subtyping
|
||||||
return to.equals(from);
|
return to.equals(from);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -213,9 +210,10 @@ public class StatementToTargetExpression implements StatementVisitor {
|
|||||||
public void visit(MethodCall methodCall) {
|
public void visit(MethodCall methodCall) {
|
||||||
var receiverType = converter.convert(methodCall.receiver.getType());
|
var receiverType = converter.convert(methodCall.receiver.getType());
|
||||||
var isFunNType = receiverType instanceof TargetFunNType;
|
var isFunNType = receiverType instanceof TargetFunNType;
|
||||||
var returnType = isFunNType ? TargetType.Object : converter.convert(methodCall.getType());
|
var returnType = isFunNType ? TargetType.Object : converter.convert(methodCall.signature.get(methodCall.signature.size() - 1));
|
||||||
var receiverName = new JavaClassName(converter.convert(methodCall.receiver.getType()).name());
|
var receiverName = new JavaClassName(converter.convert(methodCall.receiver.getType()).name());
|
||||||
var argList = methodCall.arglist.getArguments().stream().map(expr -> converter.convert(expr.getType())).toList();
|
var argList = methodCall.signature.stream().map(converter::convert).toList();
|
||||||
|
argList = argList.subList(0, argList.size() - 1);
|
||||||
|
|
||||||
Method foundMethod = null;
|
Method foundMethod = null;
|
||||||
if (methodCall.receiver instanceof ExpressionReceiver expressionReceiver && expressionReceiver.expr instanceof This) {
|
if (methodCall.receiver instanceof ExpressionReceiver expressionReceiver && expressionReceiver.expr instanceof This) {
|
||||||
|
Loading…
Reference in New Issue
Block a user