Use bounded wildcards in statics/constructors/final methods in internal API to make it more conventional, flexible and documented

This commit is contained in:
Alexey Kudravtsev
2018-10-05 18:01:46 +03:00
parent e69b29f56e
commit e408b9856a
2 changed files with 4 additions and 4 deletions
@@ -27,8 +27,8 @@ import java.util.Collection;
*/
public interface SemRegistrar {
<T extends SemElement, V extends PsiElement> void registerSemElementProvider(SemKey<T> key, ElementPattern<? extends V> place, NullableFunction<V, T> provider);
<T extends SemElement, V extends PsiElement> void registerSemElementProvider(SemKey<T> key, ElementPattern<? extends V> place, NullableFunction<? super V, ? extends T> provider);
<T extends SemElement, V extends PsiElement> void registerRepeatableSemElementProvider(SemKey<T> key, ElementPattern<? extends V> place, NullableFunction<V, Collection<T>> provider);
<T extends SemElement, V extends PsiElement> void registerRepeatableSemElementProvider(SemKey<T> key, ElementPattern<? extends V> place, NullableFunction<? super V, ? extends Collection<T>> provider);
}
@@ -87,7 +87,7 @@ public class SemServiceImpl extends SemService{
@Override
public <T extends SemElement, V extends PsiElement> void registerSemElementProvider(SemKey<T> key,
final ElementPattern<? extends V> place,
final NullableFunction<V, T> provider) {
final NullableFunction<? super V, ? extends T> provider) {
map.putValue(key, element -> {
if (place.accepts(element)) {
return Collections.singleton(provider.fun((V)element));
@@ -99,7 +99,7 @@ public class SemServiceImpl extends SemService{
@Override
public <T extends SemElement, V extends PsiElement> void registerRepeatableSemElementProvider(SemKey<T> key,
ElementPattern<? extends V> place,
NullableFunction<V, Collection<T>> provider) {
NullableFunction<? super V, ? extends Collection<T>> provider) {
map.putValue(key, element -> {
if (place.accepts(element)) {
return provider.fun((V)element);