From cd4d4eda94dadc1505e1723fd01a14ef5b2af2b9 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Wed, 20 Mar 2019 21:48:40 +0100 Subject: [PATCH] IG: don't warn about unqualified static usage inside enum switch case (IDEA-209226) --- .../UnqualifiedStaticUsageInspection.java | 29 +++++++---------- .../UnqualifiedStaticUsage.java | 17 ++++++++++ .../UnqualifiedStaticUsageInspectionTest.java | 32 +++++++++++++++++++ 3 files changed, 61 insertions(+), 17 deletions(-) create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igtest/style/unqualified_static_usage/UnqualifiedStaticUsage.java create mode 100644 plugins/InspectionGadgets/testsrc/com/siyeh/ig/style/UnqualifiedStaticUsageInspectionTest.java diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnqualifiedStaticUsageInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnqualifiedStaticUsageInspection.java index 6e6f796d565c..898ca02bb333 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnqualifiedStaticUsageInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnqualifiedStaticUsageInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2018 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2019 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -179,26 +179,19 @@ public class UnqualifiedStaticUsageInspection extends BaseInspection implements registerError(expression, expression); } - private boolean isUnqualifiedStaticAccess( - PsiReferenceExpression expression) { + private boolean isUnqualifiedStaticAccess(PsiReferenceExpression expression) { if (m_ignoreStaticAccessFromStaticContext) { - final PsiMember member = - PsiTreeUtil.getParentOfType(expression, - PsiMember.class); - if (member != null && - member.hasModifierProperty(PsiModifier.STATIC)) { + final PsiMember member = PsiTreeUtil.getParentOfType(expression, PsiMember.class); + if (member != null && member.hasModifierProperty(PsiModifier.STATIC)) { return false; } } - final PsiExpression qualifierExpression = - expression.getQualifierExpression(); + final PsiExpression qualifierExpression = expression.getQualifierExpression(); if (qualifierExpression != null) { return false; } - final JavaResolveResult resolveResult = - expression.advancedResolve(false); - final PsiElement currentFileResolveScope = - resolveResult.getCurrentFileResolveScope(); + final JavaResolveResult resolveResult = expression.advancedResolve(false); + final PsiElement currentFileResolveScope = resolveResult.getCurrentFileResolveScope(); if (currentFileResolveScope instanceof PsiImportStaticStatement) { return false; } @@ -208,9 +201,11 @@ public class UnqualifiedStaticUsageInspection extends BaseInspection implements return false; } final PsiMember member = (PsiMember)element; - if (member instanceof PsiEnumConstant && - expression.getParent() instanceof PsiSwitchLabelStatement) { - return false; + if (member instanceof PsiEnumConstant) { + PsiElement parent = expression.getParent(); + if (parent instanceof PsiExpressionList && parent.getParent() instanceof PsiSwitchLabelStatementBase) { + return false; + } } return member.hasModifierProperty(PsiModifier.STATIC); } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unqualified_static_usage/UnqualifiedStaticUsage.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unqualified_static_usage/UnqualifiedStaticUsage.java new file mode 100644 index 000000000000..d695dce244f9 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unqualified_static_usage/UnqualifiedStaticUsage.java @@ -0,0 +1,17 @@ +enum UnqualifiedStaticUsage { + RED, BLUE; + + int switches(UnqualifiedStaticUsage c) { + System.out.println(RED); + System.out.println(UnqualifiedStaticUsage.BLUE); + switch (c) { + case RED: break; + case BLUE: break; + } + return switch (c) { + case RED -> 1; + case BLUE -> 2; + }; + } +} + diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/style/UnqualifiedStaticUsageInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/style/UnqualifiedStaticUsageInspectionTest.java new file mode 100644 index 000000000000..cc954b9b1c39 --- /dev/null +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/style/UnqualifiedStaticUsageInspectionTest.java @@ -0,0 +1,32 @@ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.siyeh.ig.style; + +import com.intellij.codeInspection.InspectionProfileEntry; +import com.intellij.testFramework.LightPlatformCodeInsightTestCase; +import com.intellij.testFramework.LightProjectDescriptor; +import com.siyeh.ig.LightInspectionTestCase; +import junit.framework.TestCase; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * @author Bas Leijdekkers + */ +public class UnqualifiedStaticUsageInspectionTest extends LightInspectionTestCase { + + public void testUnqualifiedStaticUsage() { + doTest(); + } + + @Nullable + @Override + protected InspectionProfileEntry getInspection() { + return new UnqualifiedStaticUsageInspection(); + } + + @NotNull + @Override + protected LightProjectDescriptor getProjectDescriptor() { + return JAVA_12; + } +} \ No newline at end of file