mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-21 22:11:40 +07:00
unresolved qualifiers in ref expressions chain (follow IDEA-CR-24382)
This commit is contained in:
@@ -2779,7 +2779,7 @@ public class HighlightUtil extends HighlightUtilBase {
|
||||
if (outerParent instanceof PsiPackageStatement ||
|
||||
result.isPackagePrefixPackageReference() ||
|
||||
PsiUtil.isInsideJavadocComment(ref) ||
|
||||
parent.resolve() instanceof PsiClass ||
|
||||
parent.resolve() instanceof PsiMember ||
|
||||
outerParent instanceof PsiPackageAccessibilityStatement) {
|
||||
return null;
|
||||
}
|
||||
@@ -2955,6 +2955,22 @@ public class HighlightUtil extends HighlightUtilBase {
|
||||
if (qualifier instanceof PsiReferenceExpression) {
|
||||
PsiElement qualifierResolved = ((PsiReferenceExpression)qualifier).resolve();
|
||||
if (qualifierResolved instanceof PsiClass || qualifierResolved instanceof PsiPackage) return null;
|
||||
|
||||
if (qualifierResolved == null) {
|
||||
PsiReferenceExpression qExpression = (PsiReferenceExpression)qualifier;
|
||||
while (true) {
|
||||
PsiElement qResolve = qExpression.resolve();
|
||||
if (qResolve == null || qResolve instanceof PsiClass || qResolve instanceof PsiPackage) {
|
||||
PsiExpression qualifierExpression = qExpression.getQualifierExpression();
|
||||
if (qualifierExpression == null) return null;
|
||||
if (qualifierExpression instanceof PsiReferenceExpression) {
|
||||
qExpression = (PsiReferenceExpression)qualifierExpression;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
String description = JavaErrorMessages.message("expected.class.or.package");
|
||||
HighlightInfo info =
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
@@ -279,6 +280,16 @@ public class PsiReferenceExpressionImpl extends ExpressionPsiElement implements
|
||||
else if (result.length == 0) {
|
||||
result = resolveToPackage(containingFile);
|
||||
}
|
||||
|
||||
if (result.length == 0 && variable == null) {
|
||||
String qualifiedName = getQualifiedName();
|
||||
PsiClass aClass = qualifiedName != null && !StringUtil.isEmptyOrSpaces(StringUtil.getPackageName(qualifiedName))
|
||||
? JavaPsiFacade.getInstance(getProject()).findClass(qualifiedName, getResolveScope())
|
||||
: null;
|
||||
if (aClass != null) {
|
||||
result = new JavaResolveResult[] {new CandidateInfo(aClass, PsiSubstitutor.EMPTY, this, false)};
|
||||
}
|
||||
}
|
||||
|
||||
return result.length == 0 && variable != null ? variable : result;
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ class E {
|
||||
class opopo {
|
||||
public void main(String[] args) {
|
||||
String java = "bla";
|
||||
java.<error descr="Cannot resolve symbol 'lang'">lang</error>.String.valueOf("");
|
||||
<error descr="Expected class or package">java.lang</error>.String.valueOf("");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ class ImmutableSet<T> {
|
||||
}
|
||||
|
||||
public class Test {
|
||||
private static final Set<String> S = com.google.common.collect.ImmutableSet.of("foo", "bar", "baz");
|
||||
private static final Set<String> S = ImmutableSet.of("foo", "bar", "baz");
|
||||
|
||||
void testOr(String s) {
|
||||
if(S.contains(s)) {
|
||||
|
||||
@@ -2,6 +2,6 @@ import mycompany.File;
|
||||
|
||||
class Test {
|
||||
void foo() throws Exception {
|
||||
File tempFile = mycompany.File.createTempFile("", "", null);
|
||||
File tempFile = File.createTempFile("", "", null);
|
||||
}
|
||||
}
|
||||
@@ -19,13 +19,13 @@ public class RenameCollisions {
|
||||
renameCollisions.StaticInnerClass.snStaticMethod();
|
||||
|
||||
StaticInnerClass staticInnerClass = new StaticInnerClass();
|
||||
int var3 = renameCollisions.RenameCollisions.StaticInnerClass.SN_STATIC_FIELD;
|
||||
renameCollisions.RenameCollisions.StaticInnerClass.snStaticMethod();
|
||||
int var3 = RenameCollisions.StaticInnerClass.SN_STATIC_FIELD;
|
||||
RenameCollisions.StaticInnerClass.snStaticMethod();
|
||||
}
|
||||
|
||||
public static void staticContext() {
|
||||
StaticInnerClass staticInnerClass = new StaticInnerClass();
|
||||
int var2 = renameCollisions.RenameCollisions.StaticInnerClass.SN_STATIC_FIELD;
|
||||
renameCollisions.RenameCollisions.StaticInnerClass.snStaticMethod();
|
||||
int var2 = RenameCollisions.StaticInnerClass.SN_STATIC_FIELD;
|
||||
RenameCollisions.StaticInnerClass.snStaticMethod();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,6 @@ class Main {
|
||||
}
|
||||
}
|
||||
static public void main() {
|
||||
test(e.E.A);
|
||||
test(E.A);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user