Lines 597-604
Link Here
|
597 |
|
597 |
|
598 |
public Expression convert(org.eclipse.jdt.internal.compiler.ast.AND_AND_Expression expression) { |
598 |
public Expression convert(org.eclipse.jdt.internal.compiler.ast.AND_AND_Expression expression) { |
599 |
InfixExpression infixExpression = new InfixExpression(this.ast); |
599 |
InfixExpression infixExpression = new InfixExpression(this.ast); |
|
|
600 |
infixExpression.setOperator(InfixExpression.Operator.CONDITIONAL_AND); |
600 |
if (this.resolveBindings) { |
601 |
if (this.resolveBindings) { |
601 |
recordNodes(infixExpression, expression); |
602 |
this.recordNodes(infixExpression, expression); |
|
|
603 |
} |
604 |
final int expressionOperatorID = (expression.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.OperatorMASK) >> org.eclipse.jdt.internal.compiler.ast.ASTNode.OperatorSHIFT; |
605 |
if (expression.left instanceof org.eclipse.jdt.internal.compiler.ast.BinaryExpression |
606 |
&& ((expression.left.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.ParenthesizedMASK) == 0)) { |
607 |
// create an extended string literal equivalent => use the extended operands list |
608 |
infixExpression.extendedOperands().add(convert(expression.right)); |
609 |
org.eclipse.jdt.internal.compiler.ast.Expression leftOperand = expression.left; |
610 |
org.eclipse.jdt.internal.compiler.ast.Expression rightOperand = null; |
611 |
do { |
612 |
rightOperand = ((org.eclipse.jdt.internal.compiler.ast.BinaryExpression) leftOperand).right; |
613 |
if ((((leftOperand.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.OperatorMASK) >> org.eclipse.jdt.internal.compiler.ast.ASTNode.OperatorSHIFT) != expressionOperatorID |
614 |
&& ((leftOperand.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.ParenthesizedMASK) == 0)) |
615 |
|| ((rightOperand instanceof org.eclipse.jdt.internal.compiler.ast.BinaryExpression |
616 |
&& ((rightOperand.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.OperatorMASK) >> org.eclipse.jdt.internal.compiler.ast.ASTNode.OperatorSHIFT) != expressionOperatorID) |
617 |
&& ((rightOperand.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.ParenthesizedMASK) == 0))) { |
618 |
List extendedOperands = infixExpression.extendedOperands(); |
619 |
InfixExpression temp = new InfixExpression(this.ast); |
620 |
if (this.resolveBindings) { |
621 |
this.recordNodes(temp, expression); |
622 |
} |
623 |
temp.setOperator(getOperatorFor(expressionOperatorID)); |
624 |
Expression leftSide = convert(leftOperand); |
625 |
temp.setLeftOperand(leftSide); |
626 |
temp.setSourceRange(leftSide.getStartPosition(), leftSide.getLength()); |
627 |
int size = extendedOperands.size(); |
628 |
for (int i = 0; i < size - 1; i++) { |
629 |
Expression expr = temp; |
630 |
temp = new InfixExpression(this.ast); |
631 |
|
632 |
if (this.resolveBindings) { |
633 |
this.recordNodes(temp, expression); |
634 |
} |
635 |
temp.setLeftOperand(expr); |
636 |
temp.setOperator(getOperatorFor(expressionOperatorID)); |
637 |
temp.setSourceRange(expr.getStartPosition(), expr.getLength()); |
638 |
} |
639 |
infixExpression = temp; |
640 |
for (int i = 0; i < size; i++) { |
641 |
Expression extendedOperand = (Expression) extendedOperands.remove(size - 1 - i); |
642 |
temp.setRightOperand(extendedOperand); |
643 |
int startPosition = temp.getLeftOperand().getStartPosition(); |
644 |
temp.setSourceRange(startPosition, extendedOperand.getStartPosition() + extendedOperand.getLength() - startPosition); |
645 |
if (temp.getLeftOperand().getNodeType() == ASTNode.INFIX_EXPRESSION) { |
646 |
temp = (InfixExpression) temp.getLeftOperand(); |
647 |
} |
648 |
} |
649 |
int startPosition = infixExpression.getLeftOperand().getStartPosition(); |
650 |
infixExpression.setSourceRange(startPosition, expression.sourceEnd - startPosition + 1); |
651 |
if (this.resolveBindings) { |
652 |
this.recordNodes(infixExpression, expression); |
653 |
} |
654 |
return infixExpression; |
655 |
} |
656 |
infixExpression.extendedOperands().add(0, convert(rightOperand)); |
657 |
leftOperand = ((org.eclipse.jdt.internal.compiler.ast.BinaryExpression) leftOperand).left; |
658 |
} while (leftOperand instanceof org.eclipse.jdt.internal.compiler.ast.BinaryExpression && ((leftOperand.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.ParenthesizedMASK) == 0)); |
659 |
Expression leftExpression = convert(leftOperand); |
660 |
infixExpression.setLeftOperand(leftExpression); |
661 |
infixExpression.setRightOperand((Expression)infixExpression.extendedOperands().remove(0)); |
662 |
int startPosition = leftExpression.getStartPosition(); |
663 |
infixExpression.setSourceRange(startPosition, expression.sourceEnd - startPosition + 1); |
664 |
return infixExpression; |
602 |
} |
665 |
} |
603 |
Expression leftExpression = convert(expression.left); |
666 |
Expression leftExpression = convert(expression.left); |
604 |
infixExpression.setLeftOperand(leftExpression); |
667 |
infixExpression.setLeftOperand(leftExpression); |
Lines 607-613
Link Here
|
607 |
int startPosition = leftExpression.getStartPosition(); |
670 |
int startPosition = leftExpression.getStartPosition(); |
608 |
infixExpression.setSourceRange(startPosition, expression.sourceEnd - startPosition + 1); |
671 |
infixExpression.setSourceRange(startPosition, expression.sourceEnd - startPosition + 1); |
609 |
return infixExpression; |
672 |
return infixExpression; |
610 |
|
|
|
611 |
} |
673 |
} |
612 |
|
674 |
|
613 |
public AnnotationTypeDeclaration convertToAnnotationDeclaration(org.eclipse.jdt.internal.compiler.ast.TypeDeclaration typeDeclaration) { |
675 |
public AnnotationTypeDeclaration convertToAnnotationDeclaration(org.eclipse.jdt.internal.compiler.ast.TypeDeclaration typeDeclaration) { |
Lines 2019-2034
Link Here
|
2019 |
} |
2081 |
} |
2020 |
|
2082 |
|
2021 |
public Expression convert(org.eclipse.jdt.internal.compiler.ast.OR_OR_Expression expression) { |
2083 |
public Expression convert(org.eclipse.jdt.internal.compiler.ast.OR_OR_Expression expression) { |
2022 |
final InfixExpression infixExpression = new InfixExpression(this.ast); |
2084 |
InfixExpression infixExpression = new InfixExpression(this.ast); |
|
|
2085 |
infixExpression.setOperator(InfixExpression.Operator.CONDITIONAL_OR); |
2023 |
if (this.resolveBindings) { |
2086 |
if (this.resolveBindings) { |
2024 |
recordNodes(infixExpression, expression); |
2087 |
this.recordNodes(infixExpression, expression); |
|
|
2088 |
} |
2089 |
final int expressionOperatorID = (expression.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.OperatorMASK) >> org.eclipse.jdt.internal.compiler.ast.ASTNode.OperatorSHIFT; |
2090 |
if (expression.left instanceof org.eclipse.jdt.internal.compiler.ast.BinaryExpression |
2091 |
&& ((expression.left.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.ParenthesizedMASK) == 0)) { |
2092 |
// create an extended string literal equivalent => use the extended operands list |
2093 |
infixExpression.extendedOperands().add(convert(expression.right)); |
2094 |
org.eclipse.jdt.internal.compiler.ast.Expression leftOperand = expression.left; |
2095 |
org.eclipse.jdt.internal.compiler.ast.Expression rightOperand = null; |
2096 |
do { |
2097 |
rightOperand = ((org.eclipse.jdt.internal.compiler.ast.BinaryExpression) leftOperand).right; |
2098 |
if ((((leftOperand.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.OperatorMASK) >> org.eclipse.jdt.internal.compiler.ast.ASTNode.OperatorSHIFT) != expressionOperatorID |
2099 |
&& ((leftOperand.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.ParenthesizedMASK) == 0)) |
2100 |
|| ((rightOperand instanceof org.eclipse.jdt.internal.compiler.ast.BinaryExpression |
2101 |
&& ((rightOperand.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.OperatorMASK) >> org.eclipse.jdt.internal.compiler.ast.ASTNode.OperatorSHIFT) != expressionOperatorID) |
2102 |
&& ((rightOperand.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.ParenthesizedMASK) == 0))) { |
2103 |
List extendedOperands = infixExpression.extendedOperands(); |
2104 |
InfixExpression temp = new InfixExpression(this.ast); |
2105 |
if (this.resolveBindings) { |
2106 |
this.recordNodes(temp, expression); |
2107 |
} |
2108 |
temp.setOperator(getOperatorFor(expressionOperatorID)); |
2109 |
Expression leftSide = convert(leftOperand); |
2110 |
temp.setLeftOperand(leftSide); |
2111 |
temp.setSourceRange(leftSide.getStartPosition(), leftSide.getLength()); |
2112 |
int size = extendedOperands.size(); |
2113 |
for (int i = 0; i < size - 1; i++) { |
2114 |
Expression expr = temp; |
2115 |
temp = new InfixExpression(this.ast); |
2116 |
|
2117 |
if (this.resolveBindings) { |
2118 |
this.recordNodes(temp, expression); |
2119 |
} |
2120 |
temp.setLeftOperand(expr); |
2121 |
temp.setOperator(getOperatorFor(expressionOperatorID)); |
2122 |
temp.setSourceRange(expr.getStartPosition(), expr.getLength()); |
2123 |
} |
2124 |
infixExpression = temp; |
2125 |
for (int i = 0; i < size; i++) { |
2126 |
Expression extendedOperand = (Expression) extendedOperands.remove(size - 1 - i); |
2127 |
temp.setRightOperand(extendedOperand); |
2128 |
int startPosition = temp.getLeftOperand().getStartPosition(); |
2129 |
temp.setSourceRange(startPosition, extendedOperand.getStartPosition() + extendedOperand.getLength() - startPosition); |
2130 |
if (temp.getLeftOperand().getNodeType() == ASTNode.INFIX_EXPRESSION) { |
2131 |
temp = (InfixExpression) temp.getLeftOperand(); |
2132 |
} |
2133 |
} |
2134 |
int startPosition = infixExpression.getLeftOperand().getStartPosition(); |
2135 |
infixExpression.setSourceRange(startPosition, expression.sourceEnd - startPosition + 1); |
2136 |
if (this.resolveBindings) { |
2137 |
this.recordNodes(infixExpression, expression); |
2138 |
} |
2139 |
return infixExpression; |
2140 |
} |
2141 |
infixExpression.extendedOperands().add(0, convert(rightOperand)); |
2142 |
leftOperand = ((org.eclipse.jdt.internal.compiler.ast.BinaryExpression) leftOperand).left; |
2143 |
} while (leftOperand instanceof org.eclipse.jdt.internal.compiler.ast.BinaryExpression && ((leftOperand.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.ParenthesizedMASK) == 0)); |
2144 |
Expression leftExpression = convert(leftOperand); |
2145 |
infixExpression.setLeftOperand(leftExpression); |
2146 |
infixExpression.setRightOperand((Expression)infixExpression.extendedOperands().remove(0)); |
2147 |
int startPosition = leftExpression.getStartPosition(); |
2148 |
infixExpression.setSourceRange(startPosition, expression.sourceEnd - startPosition + 1); |
2149 |
return infixExpression; |
2025 |
} |
2150 |
} |
2026 |
Expression leftExpression = convert(expression.left); |
2151 |
Expression leftExpression = convert(expression.left); |
2027 |
infixExpression.setLeftOperand(leftExpression); |
2152 |
infixExpression.setLeftOperand(leftExpression); |
2028 |
infixExpression.setRightOperand(convert(expression.right)); |
2153 |
infixExpression.setRightOperand(convert(expression.right)); |
2029 |
infixExpression.setOperator(InfixExpression.Operator.CONDITIONAL_OR); |
2154 |
infixExpression.setOperator(InfixExpression.Operator.CONDITIONAL_OR); |
2030 |
int sourceStart = leftExpression.getStartPosition(); |
2155 |
int startPosition = leftExpression.getStartPosition(); |
2031 |
infixExpression.setSourceRange(sourceStart, expression.sourceEnd - sourceStart + 1); |
2156 |
infixExpression.setSourceRange(startPosition, expression.sourceEnd - startPosition + 1); |
2032 |
return infixExpression; |
2157 |
return infixExpression; |
2033 |
} |
2158 |
} |
2034 |
|
2159 |
|