@Override public PType caseANotEqualBinaryExp(ANotEqualBinaryExp node,
TypeCheckInfo question) throws AnalysisException
{
node.getLeft().apply(THIS, question.newConstraint(null));
node.getRight().apply(THIS, question.newConstraint(null));
if (question.assistantFactory.createPTypeAssistant().isUnion(node.getLeft().getType()))
{
IQuestion<TypeCheckInfo> mEqC = question.assistantFactory.getMultipleEqualityChecker();
node.getLeft().getType().apply(mEqC,question);
}
if (question.assistantFactory.createPTypeAssistant().isUnion(node.getRight().getType()))
{
IQuestion<TypeCheckInfo> mEqC = question.assistantFactory.getMultipleEqualityChecker();
node.getRight().apply(mEqC,question);
}
if (!question.assistantFactory.getTypeComparator().compatible(node.getLeft().getType(), node.getRight().getType()))
{
TypeCheckerErrors.report(3136, "Left and right of '<>' different types", node.getLocation(), node);
TypeCheckerErrors.detail2("Left", node.getLeft().getType(), "Right", node.getRight().getType());
}
node.setType(AstFactory.newABooleanBasicType(node.getLocation()));
return question.assistantFactory.createPTypeAssistant().checkConstraint(question.constraint, node.getType(), node.getLocation());
}