From 628df7e2fa3b89245cca3b8c3929747ea387c9b3 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 30 Aug 2010 19:36:49 +0100 Subject: [PATCH] faster reference providers initialization --- .../reference/ReferenceProvidersRegistry.java | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/ReferenceProvidersRegistry.java b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/ReferenceProvidersRegistry.java index d41c92a1525f..f1340e1f5a72 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/ReferenceProvidersRegistry.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/ReferenceProvidersRegistry.java @@ -124,11 +124,7 @@ public class ReferenceProvidersRegistry extends PsiReferenceRegistrar { ContainerUtil.findInstance(nameCondition.getNamePattern().getCondition().getConditions(), ValuePatternCondition.class); if (valueCondition != null) { final Collection strings = valueCondition.getValues(); - registerNamedReferenceProvider(ArrayUtil.toStringArray(strings), new NamedObjectProviderBinding() { - protected String getName(final PsiElement position) { - return nameCondition.getPropertyValue(position); - } - }, scope, true, provider, priority, pattern); + registerNamedReferenceProvider(ArrayUtil.toStringArray(strings), nameCondition, scope, true, provider, priority, pattern); return; } @@ -136,12 +132,7 @@ public class ReferenceProvidersRegistry extends PsiReferenceRegistrar { ContainerUtil .findInstance(nameCondition.getNamePattern().getCondition().getConditions(), CaseInsensitiveValuePatternCondition.class); if (ciCondition != null) { - registerNamedReferenceProvider(ciCondition.getValues(), new NamedObjectProviderBinding() { - @Nullable - protected String getName(final PsiElement position) { - return nameCondition.getPropertyValue(position); - } - }, scope, false, provider, priority, pattern); + registerNamedReferenceProvider(ciCondition.getValues(), nameCondition, scope, false, provider, priority, pattern); return; } } @@ -179,14 +170,18 @@ public class ReferenceProvidersRegistry extends PsiReferenceRegistrar { } - private void registerNamedReferenceProvider(final String[] names, final NamedObjectProviderBinding binding, + private void registerNamedReferenceProvider(final String[] names, final PsiNamePatternCondition nameCondition, final Class scopeClass, final boolean caseSensitive, final PsiReferenceProvider provider, final double priority, final ElementPattern pattern) { NamedObjectProviderBinding providerBinding = myNamedBindingsMap.get(scopeClass); if (providerBinding == null) { - providerBinding = ConcurrencyUtil.cacheOrGet(myNamedBindingsMap, scopeClass, binding); + providerBinding = ConcurrencyUtil.cacheOrGet(myNamedBindingsMap, scopeClass, new NamedObjectProviderBinding() { + protected String getName(final PsiElement position) { + return nameCondition.getPropertyValue(position); + } + }); } providerBinding.registerProvider(names, pattern, caseSensitive, provider, priority);