From 20600f85dcd994eedaac5135d4fc76dc8d368642 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Wed, 25 May 2016 15:34:23 +0300 Subject: [PATCH] [groovy] @Contract and @Nullable --- java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java | 3 +++ .../lang/psi/impl/statements/expressions/TypesUtil.java | 2 ++ .../lang/psi/typeEnhancers/ClosureParameterEnhancer.java | 5 ++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java index 1482924ce681..314facb12f1d 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java @@ -47,6 +47,7 @@ import com.intellij.util.containers.EmptyIterable; import com.intellij.util.containers.HashMap; import gnu.trove.THashSet; import org.intellij.lang.annotations.MagicConstant; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -1069,12 +1070,14 @@ public final class PsiUtil extends PsiUtilCore { return false; } + @Contract("null, _ -> null") @Nullable public static PsiType extractIterableTypeParameter(@Nullable PsiType psiType, final boolean eraseTypeParameter) { final PsiType type = substituteTypeParameter(psiType, CommonClassNames.JAVA_LANG_ITERABLE, 0, eraseTypeParameter); return type != null ? type : substituteTypeParameter(psiType, CommonClassNames.JAVA_UTIL_COLLECTION, 0, eraseTypeParameter); } + @Contract("null, _, _, _ -> null") @Nullable public static PsiType substituteTypeParameter(@Nullable final PsiType psiType, @NotNull final String superClass, final int typeParamIndex, final boolean eraseTypeParameter) { diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/TypesUtil.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/TypesUtil.java index 0ea7f132ff3e..3b6fadf3a8d2 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/TypesUtil.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/TypesUtil.java @@ -32,6 +32,7 @@ import com.intellij.util.containers.HashMap; import gnu.trove.THashMap; import gnu.trove.TIntObjectHashMap; import gnu.trove.TObjectIntHashMap; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -634,6 +635,7 @@ public class TypesUtil { return type; } + @Contract("null, _ -> false") public static boolean isClassType(@Nullable PsiType type, @NotNull String qName) { return qName.equals(getQualifiedName(type)); } diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/typeEnhancers/ClosureParameterEnhancer.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/typeEnhancers/ClosureParameterEnhancer.java index b48fabeb69d8..85c1e11a1890 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/typeEnhancers/ClosureParameterEnhancer.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/typeEnhancers/ClosureParameterEnhancer.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2016 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,6 +22,7 @@ import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.util.containers.hash.HashMap; import com.intellij.util.containers.hash.HashSet; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult; @@ -286,6 +287,8 @@ public class ClosureParameterEnhancer extends AbstractClosureParameterEnhancer { return PsiImplUtil.normalizeWildcardTypeByPosition(type, qualifier); } + @Contract("null,_ -> null") + @Nullable public static PsiType findTypeForIteration(@Nullable PsiType type, @NotNull PsiElement context) { final PsiManager manager = context.getManager(); final GlobalSearchScope resolveScope = context.getResolveScope();