Skip to content

Commit

Permalink
skip modifier transforming for enum constants
Browse files Browse the repository at this point in the history
added simple test
added changelog
fixed #290
  • Loading branch information
mplushnikov committed Jan 15, 2017
1 parent 1d55f45 commit 35620e4
Show file tree
Hide file tree
Showing 9 changed files with 115 additions and 45 deletions.
Expand Up @@ -3,10 +3,13 @@
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.intellij.psi.PsiAnnotation; import com.intellij.psi.PsiAnnotation;
import com.intellij.psi.PsiClass; import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiEnumConstant;
import com.intellij.psi.PsiField; import com.intellij.psi.PsiField;
import com.intellij.psi.PsiModifier; import com.intellij.psi.PsiModifier;
import com.intellij.psi.PsiModifierList; import com.intellij.psi.PsiModifierList;
import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiTreeUtil;
import de.plushnikov.intellij.plugin.psi.LombokLightFieldBuilder;
import de.plushnikov.intellij.plugin.util.PsiAnnotationSearchUtil; import de.plushnikov.intellij.plugin.util.PsiAnnotationSearchUtil;
import de.plushnikov.intellij.plugin.util.PsiAnnotationUtil; import de.plushnikov.intellij.plugin.util.PsiAnnotationUtil;
import lombok.AccessLevel; import lombok.AccessLevel;
Expand All @@ -27,7 +30,9 @@ public class FieldDefaultsModifierProcessor implements ModifierProcessor {
public boolean isSupported(@NotNull PsiModifierList modifierList) { public boolean isSupported(@NotNull PsiModifierList modifierList) {


// FieldDefaults only change modifiers of class fields // FieldDefaults only change modifiers of class fields
if (!(modifierList.getParent() instanceof PsiField)) { // but nor for enum constants or lombok generated fields
final PsiElement psiElement = modifierList.getParent();
if (!(psiElement instanceof PsiField) || psiElement instanceof PsiEnumConstant || psiElement instanceof LombokLightFieldBuilder) {
return false; return false;
} }


Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/META-INF/plugin.xml
Expand Up @@ -262,7 +262,7 @@
<ul> <ul>
<li>0.15 <li>0.15
<ol> <ol>
<li>Fixed #xxx: </li> <li>Fixed #290: Getter and FieldDefaults with parameter AccessLevel in Enum shows "cannot access"</li>
</ol> </ol>
</li> </li>
<li>0.14 <li>0.14
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/messages/lombokBundle.properties
Expand Up @@ -20,7 +20,7 @@ config.warn.dependency.outdated.message=<br>\


daemon.donate.title=Lombok support plugin updated to v{0} daemon.donate.title=Lombok support plugin updated to v{0}
daemon.donate.content=\ daemon.donate.content=\
- Fixed (<a href="https://github.com/mplushnikov/lombok-intellij-plugin/issues/322">#322</a>): Added support of lombok.experimental.var<br>\ - Fixed (<a href="https://github.com/mplushnikov/lombok-intellij-plugin/issues/290">#290</a>): Getter and FieldDefaults with parameter AccessLevel in Enum shows "cannot access"<br>\
- and other issues...<br>\ - and other issues...<br>\
<br>\ <br>\
<span style="font-size: 140%">If you find my plugin helpful, donate me using \ <span style="font-size: 140%">If you find my plugin helpful, donate me using \
Expand Down
@@ -0,0 +1,20 @@
package de.plushnikov.intellij.plugin.inspection;

import com.intellij.codeInspection.InspectionProfileEntry;

public class FieldDefaultsOnEnumInspectionTest extends LombokInspectionTest {

@Override
protected String getTestDataPath() {
return TEST_DATA_INSPECTION_DIRECTORY + "/fielddefaults";
}

@Override
protected InspectionProfileEntry getInspection() {
return null;
}

public void testEnumClass() throws Exception {
doTest();
}
}
@@ -0,0 +1,42 @@
package de.plushnikov.intellij.plugin.inspection;

import com.intellij.codeInspection.InspectionProfileEntry;
import com.siyeh.ig.style.FieldMayBeFinalInspection;

public class FieldMayBeFinalInspectionTest extends LombokInspectionTest {

@Override
protected String getTestDataPath() {
return TEST_DATA_INSPECTION_DIRECTORY + "/canBeFinalInspection";
}

@Override
protected InspectionProfileEntry getInspection() {
return new FieldMayBeFinalInspection();
}

public void testClassNormal() throws Exception {
doTest();
}

public void testClassWithData() throws Exception {
doTest();
}

public void testClassWithFieldSetter() throws Exception {
doTest();
}

public void testClassWithGetter() throws Exception {
doTest();
}

public void testClassWithSetter() throws Exception {
doTest();
}

public void testClassWithValue() throws Exception {
doTest();
}

}
@@ -1,33 +1,33 @@
package de.plushnikov.intellij.plugin.action.intellij; package de.plushnikov.intellij.plugin.inspection;


import com.intellij.codeInspection.InspectionProfileEntry;
import com.intellij.openapi.module.Module; import com.intellij.openapi.module.Module;
import com.intellij.openapi.projectRoots.JavaSdk; import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ContentEntry; import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.roots.LanguageLevelModuleExtension; import com.intellij.openapi.roots.LanguageLevelModuleExtension;
import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess;
import com.intellij.pom.java.LanguageLevel; import com.intellij.pom.java.LanguageLevel;
import com.intellij.testFramework.LightProjectDescriptor; import com.intellij.testFramework.LightProjectDescriptor;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.testFramework.fixtures.DefaultLightProjectDescriptor; import com.intellij.testFramework.fixtures.DefaultLightProjectDescriptor;
import com.intellij.util.PathUtil;
import com.siyeh.ig.LightInspectionTestCase; import com.siyeh.ig.LightInspectionTestCase;
import com.siyeh.ig.style.FieldMayBeFinalInspection;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;


public class FieldMayBeFinalInspectionTest extends LightInspectionTestCase { import java.io.File;


@Override import static com.intellij.testFramework.LightPlatformTestCase.getModule;
protected String getTestDataPath() {
return "testData/inspection/canBeFinalInspection"; public abstract class LombokInspectionTest extends LightInspectionTestCase {
} static final String TEST_DATA_INSPECTION_DIRECTORY = "testData/inspection";


@Override @Override
public void setUp() throws Exception { public void setUp() throws Exception {
super.setUp(); super.setUp();
myFixture.addClass("package lombok;\npublic @interface Setter { }"); final String lombokLibPath = PathUtil.toSystemIndependentName(new File(TEST_DATA_INSPECTION_DIRECTORY, "lib").getAbsolutePath());
myFixture.addClass("package lombok;\npublic @interface Getter { }"); VfsRootAccess.allowRootAccess(lombokLibPath);
myFixture.addClass("package lombok;\npublic @interface Data { }"); PsiTestUtil.addLibrary(getModule(), "Lombok", lombokLibPath, "lombok.jar");
myFixture.addClass("package lombok;\npublic @interface Value { }");
} }


@NotNull @NotNull
Expand All @@ -45,34 +45,4 @@ public void configureModule(@NotNull Module module, @NotNull ModifiableRootModel
} }
}; };
} }

@Override
protected InspectionProfileEntry getInspection() {
return new FieldMayBeFinalInspection();
}

public void testClassNormal() throws Exception {
doTest();
}

public void testClassWithData() throws Exception {
doTest();
}

public void testClassWithFieldSetter() throws Exception {
doTest();
}

public void testClassWithGetter() throws Exception {
doTest();
}

public void testClassWithSetter() throws Exception {
doTest();
}

public void testClassWithValue() throws Exception {
doTest();
}

} }
@@ -0,0 +1,11 @@
package de.plushnikov.fielddefault.issue290;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.experimental.FieldDefaults;

@Getter
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
public enum EnumClass {
ENUM1, ENUM2
}
@@ -0,0 +1,7 @@
package de.plushnikov.fielddefault.issue290;

public class OtherClass {
public static void main(String[] args) {
System.out.println(EnumClass.ENUM1.name());
}
}
15 changes: 15 additions & 0 deletions testData/inspection/fielddefaults/EnumClass.java
@@ -0,0 +1,15 @@
import lombok.AccessLevel;
import lombok.Getter;
import lombok.experimental.FieldDefaults;

@Getter
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
public enum EnumClass {
ENUM1, ENUM2
}

class SomeOtherClass {
public static void main(String[] args) {
System.out.println(EnumClass.ENUM1.name());
}
}

0 comments on commit 35620e4

Please sign in to comment.