From 15e27559b3428554b8ebd6d99b654dfdf5c66dc4 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 17 Sep 2018 14:07:22 +0200 Subject: [PATCH] java mad testing: skip some scenarios --- .../codeInsight/daemon/impl/analysis/HighlightUtil.java | 2 +- .../java/propertyBased/JavaCompletionPolicy.java | 6 ++++-- .../testFramework/propertyBased/CompletionPolicy.java | 9 +++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index 4c208ec1befb..ba9568110f84 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -796,7 +796,7 @@ public class HighlightUtil extends HighlightUtilBase { } @Nullable - static HighlightInfo checkIllegalModifierCombination(@NotNull PsiKeyword keyword, @NotNull PsiModifierList modifierList) { + public static HighlightInfo checkIllegalModifierCombination(@NotNull PsiKeyword keyword, @NotNull PsiModifierList modifierList) { @PsiModifier.ModifierConstant String modifier = keyword.getText(); String incompatible = getIncompatibleModifier(modifier, modifierList); if (incompatible != null) { diff --git a/java/java-tests/testSrc/com/intellij/java/propertyBased/JavaCompletionPolicy.java b/java/java-tests/testSrc/com/intellij/java/propertyBased/JavaCompletionPolicy.java index ce45ef549c5e..e961bcbae8e6 100644 --- a/java/java-tests/testSrc/com/intellij/java/propertyBased/JavaCompletionPolicy.java +++ b/java/java-tests/testSrc/com/intellij/java/propertyBased/JavaCompletionPolicy.java @@ -15,6 +15,7 @@ */ package com.intellij.java.propertyBased; +import com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil; import com.intellij.lang.ASTNode; import com.intellij.lang.java.lexer.JavaLexer; import com.intellij.openapi.editor.Editor; @@ -44,7 +45,7 @@ class JavaCompletionPolicy extends CompletionPolicy { // a language where there are bugs in completion which maintainers of this Java-specific test can't or don't want to fix private static boolean isBuggyInjection(@NotNull PsiFile file) { - return Arrays.asList("XML", "HTML", "PointcutExpression").contains(file.getLanguage().getID()); + return Arrays.asList("XML", "HTML", "PointcutExpression", "HQL").contains(file.getLanguage().getID()); } @Override @@ -156,7 +157,8 @@ class JavaCompletionPolicy extends CompletionPolicy { return false; } if (parent instanceof PsiModifierList) { - if (Arrays.stream(parent.getNode().getChildren(null)).filter(e -> leaf.textMatches(e.getText())).count() > 1) { + if (Arrays.stream(parent.getNode().getChildren(null)).filter(e -> leaf.textMatches(e.getText())).count() > 1 || + HighlightUtil.checkIllegalModifierCombination((PsiKeyword)leaf, (PsiModifierList)parent) != null) { return false; } if (parent.getParent() instanceof PsiModifierListOwner && PsiTreeUtil.getParentOfType(parent.getParent(), PsiCodeBlock.class, true, PsiClass.class) != null) { diff --git a/platform/testFramework/src/com/intellij/testFramework/propertyBased/CompletionPolicy.java b/platform/testFramework/src/com/intellij/testFramework/propertyBased/CompletionPolicy.java index f2b33cb317e6..6c532c7fc39d 100644 --- a/platform/testFramework/src/com/intellij/testFramework/propertyBased/CompletionPolicy.java +++ b/platform/testFramework/src/com/intellij/testFramework/propertyBased/CompletionPolicy.java @@ -59,7 +59,7 @@ public class CompletionPolicy { return null; } - if (isDeclarationName(editor, file, leaf)) return null; + if (isDeclarationName(editor, file, leaf, ref)) return null; if (ref != null) { PsiElement target = getValidResolveResult(ref); @@ -99,12 +99,13 @@ public class CompletionPolicy { return ref.resolve(); } - private static boolean isDeclarationName(Editor editor, PsiFile file, PsiElement leaf) { + private static boolean isDeclarationName(Editor editor, PsiFile file, PsiElement leaf, @Nullable PsiReference ref) { PsiElement target = TargetElementUtil.findTargetElement(editor, TargetElementUtil.ELEMENT_NAME_ACCEPTED | TargetElementUtil.REFERENCED_ELEMENT_ACCEPTED); if (target != null) target = target.getNavigationElement(); PsiFile targetFile = target != null ? target.getContainingFile() : null; - return targetFile != null && targetFile.getViewProvider() == file.getViewProvider() && - target.getTextOffset() == leaf.getTextRange().getStartOffset(); + return targetFile != null && targetFile.getViewProvider() == file.getViewProvider() && + (target.getTextOffset() == leaf.getTextRange().getStartOffset() || + ref != null && target.getTextOffset() == ref.getElement().getTextRange().getStartOffset() + ref.getRangeInElement().getStartOffset()); } protected boolean shouldSuggestNonReferenceLeafText(@NotNull PsiElement leaf) {