mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -52,6 +52,7 @@ import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.startup.StartupManager;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
@@ -75,6 +76,7 @@ import com.intellij.testFramework.HighlightTestInfo;
|
||||
import com.intellij.testFramework.LightPlatformTestCase;
|
||||
import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.xml.XmlSchemaProvider;
|
||||
import gnu.trove.THashMap;
|
||||
import gnu.trove.TIntArrayList;
|
||||
@@ -284,8 +286,18 @@ public abstract class DaemonAnalyzerTestCase extends CodeInsightTestCase {
|
||||
return doDoTest(checkWarnings, checkInfos, false);
|
||||
}
|
||||
|
||||
protected Collection<HighlightInfo> doDoTest(boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings) {
|
||||
return checkHighlighting(new ExpectedHighlightingData(myEditor.getDocument(),checkWarnings, checkWeakWarnings, checkInfos, myFile));
|
||||
protected Collection<HighlightInfo> doDoTest(final boolean checkWarnings, final boolean checkInfos, final boolean checkWeakWarnings) {
|
||||
return ContainerUtil.filter(
|
||||
checkHighlighting(new ExpectedHighlightingData(myEditor.getDocument(), checkWarnings, checkWeakWarnings, checkInfos, myFile)),
|
||||
new Condition<HighlightInfo>() {
|
||||
@Override
|
||||
public boolean value(HighlightInfo info) {
|
||||
return (info.getSeverity() == HighlightSeverity.INFORMATION) && checkInfos ||
|
||||
(info.getSeverity() == HighlightSeverity.WARNING) && checkWarnings ||
|
||||
(info.getSeverity() == HighlightSeverity.WEAK_WARNING) && checkWeakWarnings ||
|
||||
info.getSeverity().compareTo(HighlightSeverity.WARNING) > 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+6
-4
@@ -395,12 +395,12 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
|
||||
@Override
|
||||
public long checkHighlighting() {
|
||||
return checkHighlighting(true, true, true);
|
||||
return checkHighlighting(true, false, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long testHighlighting(final String... filePaths) {
|
||||
return testHighlighting(true, true, true, filePaths);
|
||||
return testHighlighting(true, false, true, filePaths);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -512,8 +512,10 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
List<HighlightInfo> infos = doHighlighting();
|
||||
ArrayList<IntentionAction> actions = new ArrayList<IntentionAction>();
|
||||
for (HighlightInfo info : infos) {
|
||||
for (Pair<HighlightInfo.IntentionActionDescriptor, TextRange> pair : info.quickFixActionRanges) {
|
||||
actions.add(pair.getFirst().getAction());
|
||||
if (info.quickFixActionRanges != null) {
|
||||
for (Pair<HighlightInfo.IntentionActionDescriptor, TextRange> pair : info.quickFixActionRanges) {
|
||||
actions.add(pair.getFirst().getAction());
|
||||
}
|
||||
}
|
||||
}
|
||||
return actions;
|
||||
|
||||
-20
@@ -53,7 +53,6 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.branch.GrContinueSta
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.branch.GrReturnStatement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.clauses.GrCaseSection;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.*;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrStringInjection;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrCallExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrMethodCallExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameter;
|
||||
@@ -63,7 +62,6 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrEn
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeArgumentList;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.util.GrDeclarationHolder;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.util.GrStatementOwner;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.util.GrVariableDeclarationOwner;
|
||||
|
||||
@@ -84,24 +82,6 @@ public abstract class GroovyRefactoringUtil {
|
||||
|
||||
private static final String[] finalModifiers = new String[]{PsiModifier.FINAL};
|
||||
|
||||
@Nullable
|
||||
public static PsiElement getEnclosingContainer(PsiElement place) {
|
||||
PsiElement parent = place.getParent();
|
||||
while (true) {
|
||||
if (parent == null) {
|
||||
return null;
|
||||
}
|
||||
if (parent instanceof GrDeclarationHolder && !(parent instanceof GrClosableBlock && parent.getParent() instanceof GrStringInjection)) {
|
||||
return parent;
|
||||
}
|
||||
if (parent instanceof GrLoopStatement) {
|
||||
return parent;
|
||||
}
|
||||
|
||||
parent = parent.getParent();
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static <T extends PsiElement> T findElementInRange(final PsiFile file,
|
||||
int startOffset,
|
||||
|
||||
+32
-9
@@ -19,6 +19,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiReference;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.util.ArrayUtilRt;
|
||||
@@ -33,6 +34,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpres
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrStringInjection;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrAccessorMethod;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.util.GrDeclarationHolder;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.util.GrStatementOwner;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil;
|
||||
import org.jetbrains.plugins.groovy.refactoring.GroovyRefactoringUtil;
|
||||
@@ -75,7 +77,7 @@ public class GrIntroduceLocalVariableProcessor {
|
||||
int expressionIndex = ArrayUtilRt.find(myOccurrences, myExpression);
|
||||
final PsiElement[] replaced = processOccurrences();
|
||||
PsiElement replacedExpression = replaced[expressionIndex];
|
||||
GrStatement anchor = getAnchor(replaced, replacedExpression);
|
||||
GrStatement anchor = getAnchor(replaced);
|
||||
|
||||
RefactoringUtil.highlightAllOccurrences(myContext.getProject(), replaced, myContext.getEditor());
|
||||
|
||||
@@ -104,8 +106,6 @@ public class GrIntroduceLocalVariableProcessor {
|
||||
throw new IncorrectOperationException("Expression occurrence to be replaced is not instance of GroovyPsiElement");
|
||||
}
|
||||
|
||||
boolean isOriginal = myExpression == occurrence;
|
||||
|
||||
final GrExpression replaced = ((GrExpression)occurrence).replaceWithExpression(templateRef, true);
|
||||
result.add(replaced);
|
||||
}
|
||||
@@ -174,10 +174,10 @@ public class GrIntroduceLocalVariableProcessor {
|
||||
return variable;
|
||||
}
|
||||
|
||||
private GrVariableDeclaration doInsertDefinition(GrVariableDeclaration declaration,
|
||||
GrStatement anchor,
|
||||
boolean deleteExpression,
|
||||
boolean anchorEqualsExpression) {
|
||||
private static GrVariableDeclaration doInsertDefinition(GrVariableDeclaration declaration,
|
||||
GrStatement anchor,
|
||||
boolean deleteExpression,
|
||||
boolean anchorEqualsExpression) {
|
||||
PsiElement realContainer = anchor.getParent();
|
||||
|
||||
GrStatementOwner block = (GrStatementOwner)realContainer;
|
||||
@@ -206,12 +206,35 @@ public class GrIntroduceLocalVariableProcessor {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private GrStatement getAnchor(PsiElement[] replaced, PsiElement replacedExpression) {
|
||||
PsiElement anchor = GrIntroduceHandlerBase.findAnchor(replaced, GroovyRefactoringUtil.getEnclosingContainer(replacedExpression));
|
||||
private GrStatement getAnchor(PsiElement[] replaced) {
|
||||
PsiElement parent = PsiTreeUtil.findCommonParent(replaced);
|
||||
PsiElement container = getEnclosingContainer(parent);
|
||||
assert container != null;
|
||||
PsiElement anchor = GrIntroduceHandlerBase.findAnchor(replaced, container);
|
||||
|
||||
GrIntroduceHandlerBase.assertStatement(anchor, myOccurrences, myContext.getScope());
|
||||
return (GrStatement)anchor;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static PsiElement getEnclosingContainer(PsiElement place) {
|
||||
PsiElement parent = place;
|
||||
while (true) {
|
||||
if (parent == null) {
|
||||
return null;
|
||||
}
|
||||
if (parent instanceof GrDeclarationHolder && !(parent instanceof GrClosableBlock && parent.getParent() instanceof GrStringInjection)) {
|
||||
return parent;
|
||||
}
|
||||
if (parent instanceof GrLoopStatement) {
|
||||
return parent;
|
||||
}
|
||||
|
||||
parent = parent.getParent();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
private static String getFieldName(@Nullable PsiElement element) {
|
||||
if (element instanceof GrAccessorMethod) element = ((GrAccessorMethod)element).getProperty();
|
||||
|
||||
+23
@@ -96,6 +96,29 @@ print "a" + preved<caret> + "c"
|
||||
''')
|
||||
}
|
||||
|
||||
void testAllUsages() {
|
||||
doTest('''\
|
||||
def foo() {
|
||||
println(123); // (1)
|
||||
println(123); // (2)
|
||||
if (true) {
|
||||
println(<all>123<end>); // (3)
|
||||
println(123); // (4)
|
||||
}
|
||||
}
|
||||
''', '''\
|
||||
def foo() {
|
||||
def preved = 123
|
||||
println(preved); // (1)
|
||||
println(preved); // (2)
|
||||
if (true) {
|
||||
println(preved<caret>); // (3)
|
||||
println(preved); // (4)
|
||||
}
|
||||
}
|
||||
''')
|
||||
}
|
||||
|
||||
protected static final String ALL_MARKER = "<all>"
|
||||
|
||||
private void processFile(String fileText, boolean explicitType) {
|
||||
|
||||
+2
-1
@@ -29,6 +29,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpres
|
||||
import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil;
|
||||
import org.jetbrains.plugins.groovy.refactoring.GroovyRefactoringUtil;
|
||||
import org.jetbrains.plugins.groovy.refactoring.introduce.GrIntroduceContextImpl;
|
||||
import org.jetbrains.plugins.groovy.refactoring.introduce.variable.GrIntroduceLocalVariableProcessor;
|
||||
import org.jetbrains.plugins.groovy.refactoring.introduce.variable.GroovyVariableValidator;
|
||||
import org.jetbrains.plugins.groovy.util.TestUtils;
|
||||
|
||||
@@ -83,7 +84,7 @@ public class IntroduceVariableValidatorTest extends LightCodeInsightFixtureTestC
|
||||
|
||||
Assert.assertNotNull("Selected expression reference points to null", selectedExpr);
|
||||
|
||||
final PsiElement tempContainer = GroovyRefactoringUtil.getEnclosingContainer(selectedExpr);
|
||||
final PsiElement tempContainer = GrIntroduceLocalVariableProcessor.getEnclosingContainer(selectedExpr);
|
||||
Assert.assertTrue(tempContainer instanceof GroovyPsiElement);
|
||||
|
||||
PsiElement[] occurences = GroovyRefactoringUtil.getExpressionOccurrences(PsiUtil.skipParentheses(selectedExpr, false), tempContainer);
|
||||
|
||||
+5
@@ -5,6 +5,7 @@ import com.intellij.codeInsight.actions.ReformatCodeProcessor;
|
||||
import com.intellij.codeInsight.completion.*;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupElementDecorator;
|
||||
import com.intellij.codeInsight.template.TemplateManager;
|
||||
import com.intellij.openapi.editor.CaretModel;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
@@ -31,6 +32,10 @@ public class MavenPomXmlCompletionTagListenerContributor extends CompletionContr
|
||||
|
||||
@Override
|
||||
public void fillCompletionVariants(CompletionParameters parameters, final CompletionResultSet result) {
|
||||
if (TemplateManager.getInstance(parameters.getOriginalFile().getProject()).getActiveTemplate(parameters.getEditor()) != null) {
|
||||
return; // Don't brake the template.
|
||||
}
|
||||
|
||||
PsiFile psiFile = parameters.getOriginalFile();
|
||||
if (!(psiFile instanceof XmlFile)) return;
|
||||
|
||||
|
||||
@@ -26,8 +26,6 @@ import com.intellij.find.findUsages.PsiElement2UsageTargetAdapter;
|
||||
import com.intellij.lang.documentation.DocumentationProvider;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.DataProvider;
|
||||
import com.intellij.openapi.actionSystem.LangDataKeys;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.markup.RangeHighlighter;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
@@ -291,7 +289,7 @@ public abstract class MavenDomTestCase extends MavenImportingTestCase {
|
||||
}
|
||||
|
||||
protected void checkHighlighting(VirtualFile f) throws IOException {
|
||||
checkHighlighting(f, true, true, true);
|
||||
checkHighlighting(f, true, false, true);
|
||||
}
|
||||
|
||||
protected void checkHighlighting(VirtualFile f, boolean checkWarnings, boolean checkInfos, boolean checkWeakWarnings) throws IOException {
|
||||
|
||||
@@ -17,7 +17,6 @@ package com.intellij.codeInsight.daemon.impl.analysis;
|
||||
|
||||
import com.intellij.lang.annotation.AnnotationHolder;
|
||||
import com.intellij.lang.annotation.Annotator;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.editor.XmlHighlighterColors;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiElement;
|
||||
@@ -36,7 +35,6 @@ import java.util.List;
|
||||
public class XmlNsPrefixAnnotator implements Annotator {
|
||||
@Override
|
||||
public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder holder) {
|
||||
if (ApplicationManager.getApplication().isUnitTestMode()) return;
|
||||
if (element instanceof XmlTag || element instanceof XmlAttribute) {
|
||||
List<SchemaPrefixReference> references = ContainerUtil.findAll(element.getReferences(), SchemaPrefixReference.class);
|
||||
for (SchemaPrefixReference reference : references) {
|
||||
|
||||
@@ -1195,10 +1195,10 @@ public class XmlHighlightingTest extends DaemonAnalyzerTestCase {
|
||||
configureByFile(BASE_PATH + "web-app_2_4.xsd");
|
||||
final String testName = getTestName(false);
|
||||
final String actionName = XmlBundle.message(AddXsiSchemaLocationForExtResourceAction.KEY);
|
||||
doTestWithQuickFix(BASE_PATH + testName, actionName, true);
|
||||
doTestWithQuickFix(BASE_PATH + testName + "2", actionName, true);
|
||||
doTestWithQuickFix(BASE_PATH + testName + "3", actionName, true);
|
||||
doTestWithQuickFix(BASE_PATH + testName + "4", actionName, true);
|
||||
doTestWithQuickFix(BASE_PATH + testName, actionName, false);
|
||||
doTestWithQuickFix(BASE_PATH + testName + "2", actionName, false);
|
||||
doTestWithQuickFix(BASE_PATH + testName + "3", actionName, false);
|
||||
doTestWithQuickFix(BASE_PATH + testName + "4", actionName, false);
|
||||
}
|
||||
|
||||
public void testHighlightingWithConditionalSectionsInDtd() throws Exception {
|
||||
@@ -1998,7 +1998,7 @@ public class XmlHighlightingTest extends DaemonAnalyzerTestCase {
|
||||
getVirtualFile(BASE_PATH + "Substitute/test.xml"),
|
||||
getVirtualFile(BASE_PATH + "Substitute/schema-b.xsd"),
|
||||
getVirtualFile(BASE_PATH + "Substitute/schema-a.xsd")
|
||||
}, true, true);
|
||||
}, true, false);
|
||||
}
|
||||
|
||||
public void testDtdWithXsd() throws Exception {
|
||||
|
||||
@@ -68,8 +68,7 @@ public class XMLCatalogManagerTest extends LightPlatformCodeInsightFixtureTestCa
|
||||
myFixture.configureByFile("policy.xml");
|
||||
try {
|
||||
ExternalResourceManagerEx.getInstanceEx().setCatalogPropertiesFile(getTestDataPath() + "catalog.properties");
|
||||
List<HighlightInfo> infos = myFixture.doHighlighting();
|
||||
assertEquals(infos.toString(), 0, infos.size());
|
||||
myFixture.checkHighlighting();
|
||||
}
|
||||
finally {
|
||||
ExternalResourceManagerEx.getInstanceEx().setCatalogPropertiesFile(null);
|
||||
|
||||
Reference in New Issue
Block a user