do not exclude ';' if selected expression statemet contains it

This commit is contained in:
anna
2009-10-05 21:02:15 +04:00
parent daace000cf
commit c751ade8e3
@@ -24,6 +24,7 @@ import com.intellij.util.FilteredQuery;
import com.intellij.util.Processor;
import com.intellij.util.Query;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
@@ -31,17 +32,20 @@ import java.util.*;
*
*/
public class CodeInsightUtil {
@Nullable
public static PsiExpression findExpressionInRange(PsiFile file, int startOffset, int endOffset) {
if (!file.getViewProvider().getLanguages().contains(StdLanguages.JAVA)) return null;
PsiElement element2 = file.getViewProvider().findElementAt(endOffset - 1, StdLanguages.JAVA);
if (element2 instanceof PsiJavaToken) {
final PsiJavaToken token = (PsiJavaToken)element2;
final IElementType tokenType = token.getTokenType();
if (tokenType.equals(JavaTokenType.SEMICOLON)) {
endOffset = element2.getTextRange().getStartOffset();
PsiExpression expression = findElementInRange(file, startOffset, endOffset, PsiExpression.class);
if (expression == null && findStatementsInRange(file, startOffset, endOffset).length == 0) {
PsiElement element2 = file.getViewProvider().findElementAt(endOffset - 1, StdLanguages.JAVA);
if (element2 instanceof PsiJavaToken) {
final PsiJavaToken token = (PsiJavaToken)element2;
final IElementType tokenType = token.getTokenType();
if (tokenType.equals(JavaTokenType.SEMICOLON)) {
expression = findElementInRange(file, startOffset, element2.getTextRange().getStartOffset(), PsiExpression.class);
}
}
}
final PsiExpression expression = findElementInRange(file, startOffset, endOffset, PsiExpression.class);
if (expression instanceof PsiReferenceExpression && expression.getParent() instanceof PsiMethodCallExpression) return null;
return expression;
}