mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-112141 Access to static import variable exceeds access rights
This commit is contained in:
+9
-6
@@ -19,6 +19,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiFormatUtil;
|
||||
import com.intellij.psi.util.PsiFormatUtilBase;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
@@ -64,6 +65,7 @@ public class GroovyAccessibilityInspection extends BaseInspection {
|
||||
setter != null && PsiUtil.isAccessible(place, setter);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected BaseInspectionVisitor buildVisitor() {
|
||||
return new MyVisitor();
|
||||
@@ -89,7 +91,7 @@ public class GroovyAccessibilityInspection extends BaseInspection {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected GroovyFix[] buildFixes(PsiElement location) {
|
||||
protected GroovyFix[] buildFixes(@NotNull PsiElement location) {
|
||||
if (!(location instanceof GrReferenceElement || location instanceof GrConstructorCall)) {
|
||||
location = location.getParent();
|
||||
}
|
||||
@@ -116,6 +118,7 @@ public class GroovyAccessibilityInspection extends BaseInspection {
|
||||
Project project = refElement.getProject();
|
||||
JavaPsiFacade facade = JavaPsiFacade.getInstance(project);
|
||||
PsiModifierList modifierListCopy = facade.getElementFactory().createFieldFromText("int a;", null).getModifierList();
|
||||
assert modifierListCopy != null;
|
||||
modifierListCopy.setModifierProperty(PsiModifier.STATIC, modifierList.hasModifierProperty(PsiModifier.STATIC));
|
||||
String minModifier = PsiModifier.PROTECTED;
|
||||
if (refElement.hasModifierProperty(PsiModifier.PROTECTED)) {
|
||||
@@ -188,11 +191,11 @@ public class GroovyAccessibilityInspection extends BaseInspection {
|
||||
|
||||
registerError(refElement,
|
||||
PsiFormatUtil.formatMethod((PsiMethod)constructor, PsiSubstitutor.EMPTY,
|
||||
PsiFormatUtil.SHOW_NAME |
|
||||
PsiFormatUtil.SHOW_TYPE |
|
||||
PsiFormatUtil.TYPE_AFTER |
|
||||
PsiFormatUtil.SHOW_PARAMETERS,
|
||||
PsiFormatUtil.SHOW_TYPE
|
||||
PsiFormatUtilBase.SHOW_NAME |
|
||||
PsiFormatUtilBase.SHOW_TYPE |
|
||||
PsiFormatUtilBase.TYPE_AFTER |
|
||||
PsiFormatUtilBase.SHOW_PARAMETERS,
|
||||
PsiFormatUtilBase.SHOW_TYPE
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
+3
-6
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2013 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -22,7 +22,6 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.VariableKind;
|
||||
import com.intellij.psi.util.PropertyUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
@@ -74,8 +73,7 @@ public class GroovyPropertyUtils {
|
||||
@Nullable
|
||||
public static PsiMethod findSetterForField(PsiField field) {
|
||||
final PsiClass containingClass = field.getContainingClass();
|
||||
final Project project = field.getProject();
|
||||
final String propertyName = PropertyUtil.suggestPropertyName(project, field);
|
||||
final String propertyName = field.getName();
|
||||
final boolean isStatic = field.hasModifierProperty(PsiModifier.STATIC);
|
||||
return findPropertySetter(containingClass, propertyName, isStatic, true);
|
||||
}
|
||||
@@ -83,8 +81,7 @@ public class GroovyPropertyUtils {
|
||||
@Nullable
|
||||
public static PsiMethod findGetterForField(PsiField field) {
|
||||
final PsiClass containingClass = field.getContainingClass();
|
||||
final Project project = field.getProject();
|
||||
final String propertyName = PropertyUtil.suggestPropertyName(project, field);
|
||||
final String propertyName = field.getName();
|
||||
final boolean isStatic = field.hasModifierProperty(PsiModifier.STATIC);
|
||||
return findPropertyGetter(containingClass, propertyName, isStatic, true);
|
||||
}
|
||||
|
||||
+16
@@ -207,6 +207,22 @@ print foo+<warning descr="Access to 'bar' exceeds its access rights">bar</warnin
|
||||
''', GroovyAccessibilityInspection)
|
||||
}
|
||||
|
||||
public void testStaticImportCapsProperty() {
|
||||
myFixture.addFileToProject('Foo.groovy', '''\
|
||||
class Foo {
|
||||
static def FOO = 2
|
||||
private static def BAR = 2
|
||||
}
|
||||
''')
|
||||
testHighlighting('''\
|
||||
import static Foo.FOO
|
||||
import static Foo.<warning descr="Access to 'BAR' exceeds its access rights">BAR</warning>
|
||||
|
||||
print FOO + <warning descr="Access to 'BAR' exceeds its access rights">BAR</warning>
|
||||
''', GroovyAccessibilityInspection)
|
||||
}
|
||||
|
||||
|
||||
public void testUntypedAccess() { doTest(new GroovyUntypedAccessInspection()) }
|
||||
|
||||
public void testMethodMayBeStaticForCategoryClasses() {
|
||||
|
||||
Reference in New Issue
Block a user