From d0dafd570449a4e65a5cc06e75927381387dd3a1 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Tue, 26 Mar 2013 22:21:28 +0400 Subject: [PATCH] SQL quoted identifiers handling reworked & IDEA-103850 --- .../rename/inplace/InplaceRefactoring.java | 6 +++++- .../fixtures/CodeInsightTestFixture.java | 4 +++- .../fixtures/impl/CodeInsightTestFixtureImpl.java | 12 +++++++++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java index b93d6ea3b8fb..f604e897333a 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java @@ -270,7 +270,7 @@ public abstract class InplaceRefactoring { boolean subrefOnPrimaryElement = false; for (PsiReference ref : refs) { - if (nameIdentifier != null && ref.getElement() == nameIdentifier.getParent()) { + if (isReferenceAtCaret(nameIdentifier, ref)) { builder.replaceElement(ref, PRIMARY_VARIABLE_NAME, createLookupExpression(), true); subrefOnPrimaryElement = true; continue; @@ -327,6 +327,10 @@ public abstract class InplaceRefactoring { return true; } + protected boolean isReferenceAtCaret(PsiElement nameIdentifier, PsiReference ref) { + return nameIdentifier != null && ref.getElement() == nameIdentifier.getParent(); + } + protected void beforeTemplateStart() { myCaretRangeMarker = myEditor.getDocument() .createRangeMarker(new TextRange(myEditor.getCaretModel().getOffset(), myEditor.getCaretModel().getOffset())); diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java index b30927a91748..dcccfa42bbf8 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java @@ -19,6 +19,7 @@ package com.intellij.testFramework.fixtures; import com.intellij.codeInsight.completion.CompletionType; import com.intellij.codeInsight.daemon.impl.HighlightInfo; import com.intellij.codeInsight.intention.IntentionAction; +import com.intellij.codeInsight.lookup.Lookup; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupEx; import com.intellij.codeInspection.InspectionProfileEntry; @@ -42,6 +43,7 @@ import com.intellij.testFramework.HighlightTestInfo; import com.intellij.testFramework.TestDataFile; import com.intellij.usageView.UsageInfo; import com.intellij.util.Consumer; +import org.intellij.lang.annotations.MagicConstant; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -452,7 +454,7 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture { @Nullable List getLookupElementStrings(); - void finishLookup(); + void finishLookup(@MagicConstant(valuesFromClass = Lookup.class) char completionChar); LookupEx getLookup(); diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index 5454bcab2f14..d30faef1628e 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -113,6 +113,7 @@ import com.intellij.util.indexing.FileBasedIndex; import com.intellij.util.ui.UIUtil; import gnu.trove.THashMap; import junit.framework.Assert; +import junit.framework.ComparisonFailure; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -638,11 +639,11 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig } @Override - public void finishLookup() { + public void finishLookup(final char completionChar) { CommandProcessor.getInstance().executeCommand(getProject(), new Runnable() { @Override public void run() { - ((LookupImpl)LookupManager.getActiveLookup(getEditor())).finishLookup(Lookup.NORMAL_SELECT_CHAR); + ((LookupImpl)LookupManager.getActiveLookup(getEditor())).finishLookup(completionChar); } }, null, null); } @@ -1685,7 +1686,12 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig actualText = StringUtil.convertLineSeparators(actualText); if (!Comparing.equal(newFileText1, actualText)) { - throw new FileComparisonFailure(expectedFile, newFileText1, actualText, loader.filePath); + if (loader.filePath != null) { + throw new FileComparisonFailure(expectedFile, newFileText1, actualText, loader.filePath); + } + else { + throw new ComparisonFailure(expectedFile, newFileText1, actualText); + } } if (loader.caretMarker != null) {