diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/concurrencyAnnotations/JCiPUtil.java b/java/java-analysis-impl/src/com/intellij/codeInspection/concurrencyAnnotations/JCiPUtil.java index 9300b954c488..624659f1c90a 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/concurrencyAnnotations/JCiPUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/concurrencyAnnotations/JCiPUtil.java @@ -26,7 +26,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -class JCiPUtil { +public class JCiPUtil { static boolean isJCiPAnnotation(String ref) { return "Immutable".equals(ref) || "GuardedBy".equals(ref) || "ThreadSafe".equals(ref) || "NotThreadSafe".equals(ref); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ClassUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ClassUtils.java index 0ded3aae25b1..a361fd33eb93 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ClassUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ClassUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2014 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2016 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. @@ -15,6 +15,7 @@ */ package com.siyeh.ig.psiutils; +import com.intellij.codeInspection.concurrencyAnnotations.JCiPUtil; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.TypeConversionUtil; @@ -68,14 +69,22 @@ public class ClassUtils { immutableTypes.add(CommonClassNames.JAVA_LANG_BYTE); immutableTypes.add(CommonClassNames.JAVA_LANG_STRING); immutableTypes.add("java.awt.Font"); + immutableTypes.add("java.awt.BasicStroke"); immutableTypes.add("java.awt.Color"); + immutableTypes.add("java.awt.Cursor"); immutableTypes.add("java.math.BigDecimal"); immutableTypes.add("java.math.BigInteger"); immutableTypes.add("java.math.MathContext"); immutableTypes.add("java.nio.channels.FileLock"); immutableTypes.add("java.nio.charset.Charset"); immutableTypes.add("java.io.File"); + immutableTypes.add("java.net.Inet4Address"); + immutableTypes.add("java.net.Inet6Address"); + immutableTypes.add("java.net.InetSocketAddress"); immutableTypes.add("java.net.URI"); + immutableTypes.add("java.net.URL"); + immutableTypes.add("java.util.Locale"); + immutableTypes.add("java.util.UUID"); immutableTypes.add("java.util.regex.Pattern"); } @@ -107,8 +116,14 @@ public class ClassUtils { return false; } final PsiClassType classType = (PsiClassType)type; - final String className = classType.getCanonicalText(); - return immutableTypes.contains(className); + final PsiClass aClass = classType.resolve(); + if (aClass == null) { + return false; + } + if (immutableTypes.contains(aClass.getQualifiedName())) { + return true; + } + return JCiPUtil.isImmutable(aClass); } public static boolean inSamePackage(@Nullable PsiElement element1,