@Override protected BinaryOperatorLogicalOrNode copy() { return new BinaryOperatorLogicalOrNode(this); }
@Override public ITypeDefinition resolveType(ICompilerProject project) { return resolveLogicalType(project); }
@Override public ITypeDefinition resolveTypeOfRValue(ICompilerProject project) { // Use superclass to determine type of a || b. return super.resolveType(project); } }
/** * @param node */ private void foldLazyRHSOperandsForLogicalOperators(IASNode node) { if (node instanceof BinaryOperatorLogicalAndNode || node instanceof BinaryOperatorLogicalAndAssignmentNode) { BinaryOperatorLogicalAndNode opNode = ((BinaryOperatorLogicalAndNode) node); opNode.setRightOperandNode(fold(opNode.getRightOperandNode())); foldLazyRHSOperandsForLogicalOperators(opNode.getLeftOperandNode()); } else if (node instanceof BinaryOperatorLogicalOrNode || node instanceof BinaryOperatorLogicalOrAssignmentNode) { BinaryOperatorLogicalOrNode opNode = ((BinaryOperatorLogicalOrNode) node); opNode.setRightOperandNode(fold(opNode.getRightOperandNode())); foldLazyRHSOperandsForLogicalOperators(opNode.getLeftOperandNode()); } else { int chCount = node.getChildCount(); for (int i = 0; i < chCount; i++) { IASNode childNode = node.getChild(i); foldLazyRHSOperandsForLogicalOperators(childNode); } } }
@Override protected BinaryOperatorLogicalOrNode copy() { return new BinaryOperatorLogicalOrNode(this); }
@Override public ITypeDefinition resolveType(ICompilerProject project) { return resolveLogicalType(project); }
@Override public ITypeDefinition resolveTypeOfRValue(ICompilerProject project) { // Use superclass to determine type of a || b. return super.resolveType(project); } }
return new BinaryOperatorLogicalOrNode(operatorToken, leftOperand, rightOperand);
return new BinaryOperatorLogicalOrNode(operatorToken, leftOperand, rightOperand);