From 75d0056122d251effadf8b21e628ea30a9d0ffca Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Mon, 19 Aug 2013 12:23:26 +0400 Subject: [PATCH] IDEA-112141 Access to static import variable exceeds access rights --- .../bugs/GroovyAccessibilityInspection.java | 15 +++++++++------ .../lang/psi/util/GroovyPropertyUtils.java | 9 +++------ .../lang/highlighting/GrInspectionTest.groovy | 16 ++++++++++++++++ 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/bugs/GroovyAccessibilityInspection.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/bugs/GroovyAccessibilityInspection.java index d0a1fb486795..634d32eb9132 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/bugs/GroovyAccessibilityInspection.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/bugs/GroovyAccessibilityInspection.java @@ -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 )); } } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/GroovyPropertyUtils.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/GroovyPropertyUtils.java index 5a1b66d97225..0c8f5ba439b1 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/GroovyPropertyUtils.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/GroovyPropertyUtils.java @@ -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); } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GrInspectionTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GrInspectionTest.groovy index fe0a60429e59..efed43e59ec5 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GrInspectionTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GrInspectionTest.groovy @@ -207,6 +207,22 @@ print foo+barBAR + +print FOO + BAR +''', GroovyAccessibilityInspection) + } + + public void testUntypedAccess() { doTest(new GroovyUntypedAccessInspection()) } public void testMethodMayBeStaticForCategoryClasses() {