package me.tomassetti.turin.parser.ast.expressions; import me.tomassetti.turin.definitions.TypeDefinition; import me.tomassetti.turin.resolvers.SymbolResolver; import me.tomassetti.turin.parser.ast.Node; import me.tomassetti.turin.parser.ast.TurinTypeDefinition; import me.tomassetti.turin.typesystem.ReferenceTypeUsage; import java.util.Collections; public class ThisExpression extends Expression { public ThisExpression() { } @Override public String toString() { return "ThisExpression{}"; } @Override public Iterable<Node> getChildren() { return Collections.emptyList(); } @Override public ReferenceTypeUsage calcType() { TurinTypeDefinition turinTypeDefinition = getParentOfType(TurinTypeDefinition.class); return new ReferenceTypeUsage(turinTypeDefinition); } @Override public boolean canFieldBeAssigned(String field, SymbolResolver resolver) { TypeDefinition typeDefinition = calcType().getTypeDefinition(); return typeDefinition.canFieldBeAssigned(field); } }