missing thisclass
This commit is contained in:
parent
51240806b9
commit
3a8b9ea9cd
1
pom.xml
1
pom.xml
@ -26,6 +26,7 @@
|
|||||||
<mainClass>Compiler</mainClass>
|
<mainClass>Compiler</mainClass>
|
||||||
</manifest>
|
</manifest>
|
||||||
</archive>
|
</archive>
|
||||||
|
<finalName>NichtHaskellCompiler</finalName>
|
||||||
<descriptorRefs>
|
<descriptorRefs>
|
||||||
<descriptorRef>jar-with-dependencies</descriptorRef>
|
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||||
</descriptorRefs>
|
</descriptorRefs>
|
||||||
|
@ -15,8 +15,9 @@ import java.util.Objects;
|
|||||||
public class BinaryExpression extends AbstractType implements IExpression{
|
public class BinaryExpression extends AbstractType implements IExpression{
|
||||||
|
|
||||||
public String operator;
|
public String operator;
|
||||||
public IExpression left; // This needs TypeCheckResult
|
public IExpression left;
|
||||||
public IExpression right;
|
public IExpression right;
|
||||||
|
public String thisClass;
|
||||||
|
|
||||||
public BinaryExpression(String operator, IExpression left, IExpression right) {
|
public BinaryExpression(String operator, IExpression left, IExpression right) {
|
||||||
this.operator = operator;
|
this.operator = operator;
|
||||||
@ -28,6 +29,10 @@ public class BinaryExpression extends AbstractType implements IExpression{
|
|||||||
public TypeCheckResult typeCheck(HashMap<String, HashMap<String, HashMap<String, ParameterList>>> methodContext, HashMap<String, HashMap<String, String>> typeContext, HashMap<String, String> localVars) throws TypeCheckException {
|
public TypeCheckResult typeCheck(HashMap<String, HashMap<String, HashMap<String, ParameterList>>> methodContext, HashMap<String, HashMap<String, String>> typeContext, HashMap<String, String> localVars) throws TypeCheckException {
|
||||||
TypeCheckResult result = new TypeCheckResult();
|
TypeCheckResult result = new TypeCheckResult();
|
||||||
|
|
||||||
|
if(left instanceof LocalVarIdentifier localVarIdentifier)
|
||||||
|
localVarIdentifier.thisClass = this.thisClass;
|
||||||
|
if(right instanceof LocalVarIdentifier localVarIdentifier)
|
||||||
|
localVarIdentifier.thisClass = this.thisClass;
|
||||||
TypeCheckResult leftType = left.typeCheck(methodContext, typeContext, localVars);
|
TypeCheckResult leftType = left.typeCheck(methodContext, typeContext, localVars);
|
||||||
TypeCheckResult rightType = right.typeCheck(methodContext, typeContext, localVars);
|
TypeCheckResult rightType = right.typeCheck(methodContext, typeContext, localVars);
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import TypeCheck.AbstractType;
|
|||||||
import TypeCheck.TypeCheckException;
|
import TypeCheck.TypeCheckException;
|
||||||
import TypeCheck.TypeCheckHelper;
|
import TypeCheck.TypeCheckHelper;
|
||||||
import TypeCheck.TypeCheckResult;
|
import TypeCheck.TypeCheckResult;
|
||||||
|
import abstractSyntaxTree.Expression.BinaryExpression;
|
||||||
import abstractSyntaxTree.Expression.IExpression;
|
import abstractSyntaxTree.Expression.IExpression;
|
||||||
import abstractSyntaxTree.Expression.InstVarExpression;
|
import abstractSyntaxTree.Expression.InstVarExpression;
|
||||||
import abstractSyntaxTree.Expression.LocalVarIdentifier;
|
import abstractSyntaxTree.Expression.LocalVarIdentifier;
|
||||||
@ -54,6 +55,8 @@ public class AssignStatementExpression extends AbstractType implements IExpressi
|
|||||||
methodCallStatementExpression.thisClass = this.thisClass;
|
methodCallStatementExpression.thisClass = this.thisClass;
|
||||||
if(right instanceof LocalVarIdentifier localVarIdentifierRight)
|
if(right instanceof LocalVarIdentifier localVarIdentifierRight)
|
||||||
localVarIdentifierRight.thisClass = this.thisClass;
|
localVarIdentifierRight.thisClass = this.thisClass;
|
||||||
|
if(right instanceof BinaryExpression binaryExpression)
|
||||||
|
binaryExpression.thisClass = this.thisClass;
|
||||||
|
|
||||||
TypeCheckResult rightType = right.typeCheck(methodContext, typeContext, localVars);
|
TypeCheckResult rightType = right.typeCheck(methodContext, typeContext, localVars);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user