Minor: remove warnings and refactoring

This commit is contained in:
Nikolay Krasko
2016-08-24 18:12:39 +03:00
parent e0cdad30e4
commit 043502f836
4 changed files with 48 additions and 45 deletions
@@ -1070,16 +1070,14 @@ public class KotlinExpressionParsing extends AbstractKotlinParsing {
} }
} }
if (!paramsFound) { if (!paramsFound && preferBlock) {
if (preferBlock) { literal.drop();
literal.drop(); parseStatements();
parseStatements(); expect(RBRACE, "Expecting '}'");
expect(RBRACE, "Expecting '}'"); literalExpression.done(BLOCK);
literalExpression.done(BLOCK); myBuilder.restoreNewlinesState();
myBuilder.restoreNewlinesState();
return; return;
}
} }
PsiBuilder.Marker body = mark(); PsiBuilder.Marker body = mark();
@@ -35,7 +35,7 @@ public class KtBlockExpression extends KtExpressionImpl implements KtStatementEx
@Override @Override
public boolean shouldChangeModificationCount(PsiElement place) { public boolean shouldChangeModificationCount(PsiElement place) {
// To prent OutOfBlockModification increase from JavaCodeBlockModificationListener // To prevent OutOfBlockModification increase from JavaCodeBlockModificationListener
return false; return false;
} }
@@ -71,12 +71,10 @@ class ResolveElementCache(
// drop whole cache after change "out of code block" // drop whole cache after change "out of code block"
private val fullResolveCache: CachedValue<MutableMap<KtElement, CachedFullResolve>> = CachedValuesManager.getManager(project).createCachedValue( private val fullResolveCache: CachedValue<MutableMap<KtElement, CachedFullResolve>> = CachedValuesManager.getManager(project).createCachedValue(
object : CachedValueProvider<MutableMap<KtElement, CachedFullResolve>> { CachedValueProvider<MutableMap<KtElement, ResolveElementCache.CachedFullResolve>> {
override fun compute(): CachedValueProvider.Result<MutableMap<KtElement, CachedFullResolve>> { CachedValueProvider.Result.create(ContainerUtil.createConcurrentSoftValueMap<KtElement, CachedFullResolve>(),
return CachedValueProvider.Result.create(ContainerUtil.createConcurrentSoftValueMap<KtElement, CachedFullResolve>(), PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT,
PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT, resolveSession.exceptionTracker)
resolveSession.exceptionTracker)
}
}, },
false) false)
@@ -93,15 +91,14 @@ class ResolveElementCache(
} }
} }
private val partialBodyResolveCache: CachedValue<MutableMap<KtExpression, CachedPartialResolve>> = CachedValuesManager.getManager(project).createCachedValue( private val partialBodyResolveCache: CachedValue<MutableMap<KtExpression, CachedPartialResolve>> =
object : CachedValueProvider<MutableMap<KtExpression, CachedPartialResolve>> { CachedValuesManager.getManager(project).createCachedValue(
override fun compute(): CachedValueProvider.Result<MutableMap<KtExpression, CachedPartialResolve>> { CachedValueProvider<MutableMap<KtExpression, ResolveElementCache.CachedPartialResolve>> {
return CachedValueProvider.Result.create(ContainerUtil.createConcurrentSoftValueMap<KtExpression, CachedPartialResolve>(), CachedValueProvider.Result.create(ContainerUtil.createConcurrentSoftValueMap<KtExpression, CachedPartialResolve>(),
PsiModificationTracker.MODIFICATION_COUNT, PsiModificationTracker.MODIFICATION_COUNT,
resolveSession.exceptionTracker) resolveSession.exceptionTracker)
} },
}, false)
false)
private fun probablyNothingCallableNames(): ProbablyNothingCallableNames { private fun probablyNothingCallableNames(): ProbablyNothingCallableNames {
@@ -163,7 +160,9 @@ class ResolveElementCache(
partialResolveMap[statement] = resolveToCache partialResolveMap[statement] = resolveToCache
} }
} }
partialResolveMap[resolveElement] = resolveToCache // we use the whole declaration key in the map to obtain resolve not inside any block (e.g. default parameter values)
// we use the whole declaration key in the map to obtain resolve not inside any block (e.g. default parameter values)
partialResolveMap[resolveElement] = resolveToCache
return bindingContext return bindingContext
} }
@@ -256,7 +255,8 @@ class ResolveElementCache(
} }
} }
private fun performElementAdditionalResolve(resolveElement: KtElement, contextElement: KtElement, bodyResolveMode: BodyResolveMode): Pair<BindingContext, StatementFilter> { private fun performElementAdditionalResolve(resolveElement: KtElement, contextElement: KtElement,
bodyResolveMode: BodyResolveMode): Pair<BindingContext, StatementFilter> {
val file = resolveElement.getContainingKtFile() val file = resolveElement.getContainingKtFile()
var statementFilterUsed = StatementFilter.NONE var statementFilterUsed = StatementFilter.NONE
@@ -312,7 +312,7 @@ class ResolveElementCache(
is KtTypeConstraint -> typeConstraintAdditionalResolve(resolveSession, resolveElement) is KtTypeConstraint -> typeConstraintAdditionalResolve(resolveSession, resolveElement)
is KtCodeFragment -> codeFragmentAdditionalResolve(resolveSession, resolveElement, bodyResolveMode) is KtCodeFragment -> codeFragmentAdditionalResolve(resolveElement, bodyResolveMode)
else -> { else -> {
if (resolveElement.getParentOfType<KtPackageDirective>(true) != null) { if (resolveElement.getParentOfType<KtPackageDirective>(true) != null) {
@@ -360,7 +360,7 @@ class ResolveElementCache(
return resolveSession.trace return resolveSession.trace
} }
private fun codeFragmentAdditionalResolve(resolveSession: ResolveSession, codeFragment: KtCodeFragment, bodyResolveMode: BodyResolveMode): BindingTrace { private fun codeFragmentAdditionalResolve(codeFragment: KtCodeFragment, bodyResolveMode: BodyResolveMode): BindingTrace {
val trace = createDelegatingTrace(codeFragment) val trace = createDelegatingTrace(codeFragment)
val contextResolveMode = if (bodyResolveMode == BodyResolveMode.PARTIAL) val contextResolveMode = if (bodyResolveMode == BodyResolveMode.PARTIAL)
@@ -418,7 +418,8 @@ class ResolveElementCache(
return resolveSession.trace return resolveSession.trace
} }
private fun delegationSpecifierAdditionalResolve(resolveSession: ResolveSession, ktElement: KtElement, classOrObject: KtClassOrObject, file: KtFile): BindingTrace { private fun delegationSpecifierAdditionalResolve(resolveSession: ResolveSession, ktElement: KtElement,
classOrObject: KtClassOrObject, file: KtFile): BindingTrace {
val trace = createDelegatingTrace(ktElement) val trace = createDelegatingTrace(ktElement)
val descriptor = resolveSession.resolveToDescriptor(classOrObject) as LazyClassDescriptor val descriptor = resolveSession.resolveToDescriptor(classOrObject) as LazyClassDescriptor
@@ -436,7 +437,8 @@ class ResolveElementCache(
return trace return trace
} }
private fun propertyAdditionalResolve(resolveSession: ResolveSession, property: KtProperty, file: KtFile, statementFilter: StatementFilter): BindingTrace { private fun propertyAdditionalResolve(resolveSession: ResolveSession, property: KtProperty,
file: KtFile, statementFilter: StatementFilter): BindingTrace {
val trace = createDelegatingTrace(property) val trace = createDelegatingTrace(property)
val bodyResolver = createBodyResolver(resolveSession, trace, file, statementFilter) val bodyResolver = createBodyResolver(resolveSession, trace, file, statementFilter)
@@ -461,7 +463,8 @@ class ResolveElementCache(
return trace return trace
} }
private fun functionAdditionalResolve(resolveSession: ResolveSession, namedFunction: KtNamedFunction, file: KtFile, statementFilter: StatementFilter): BindingTrace { private fun functionAdditionalResolve(resolveSession: ResolveSession, namedFunction: KtNamedFunction, file: KtFile,
statementFilter: StatementFilter): BindingTrace {
val trace = createDelegatingTrace(namedFunction) val trace = createDelegatingTrace(namedFunction)
val scope = resolveSession.declarationScopeProvider.getResolutionScopeForDeclaration(namedFunction) val scope = resolveSession.declarationScopeProvider.getResolutionScopeForDeclaration(namedFunction)
@@ -476,7 +479,8 @@ class ResolveElementCache(
return trace return trace
} }
private fun secondaryConstructorAdditionalResolve(resolveSession: ResolveSession, constructor: KtSecondaryConstructor, file: KtFile, statementFilter: StatementFilter): BindingTrace { private fun secondaryConstructorAdditionalResolve(resolveSession: ResolveSession, constructor: KtSecondaryConstructor,
file: KtFile, statementFilter: StatementFilter): BindingTrace {
val trace = createDelegatingTrace(constructor) val trace = createDelegatingTrace(constructor)
val scope = resolveSession.declarationScopeProvider.getResolutionScopeForDeclaration(constructor) val scope = resolveSession.declarationScopeProvider.getResolutionScopeForDeclaration(constructor)
@@ -497,7 +501,8 @@ class ResolveElementCache(
val classDescriptor = resolveSession.resolveToDescriptor(klass) as ClassDescriptor val classDescriptor = resolveSession.resolveToDescriptor(klass) as ClassDescriptor
val constructorDescriptor = classDescriptor.unsubstitutedPrimaryConstructor val constructorDescriptor = classDescriptor.unsubstitutedPrimaryConstructor
?: error("Can't get primary constructor for descriptor '$classDescriptor' in from class '${klass.getElementTextWithContext()}'") ?: error("Can't get primary constructor for descriptor '$classDescriptor' " +
"in from class '${klass.getElementTextWithContext()}'")
val bodyResolver = createBodyResolver(resolveSession, trace, file, StatementFilter.NONE) val bodyResolver = createBodyResolver(resolveSession, trace, file, StatementFilter.NONE)
bodyResolver.resolveConstructorParameterDefaultValuesAndAnnotations(DataFlowInfo.EMPTY, trace, klass, constructorDescriptor, scope) bodyResolver.resolveConstructorParameterDefaultValuesAndAnnotations(DataFlowInfo.EMPTY, trace, klass, constructorDescriptor, scope)
@@ -513,7 +518,8 @@ class ResolveElementCache(
return trace return trace
} }
private fun initializerAdditionalResolve(resolveSession: ResolveSession, anonymousInitializer: KtAnonymousInitializer, file: KtFile, statementFilter: StatementFilter): BindingTrace { private fun initializerAdditionalResolve(resolveSession: ResolveSession, anonymousInitializer: KtAnonymousInitializer,
file: KtFile, statementFilter: StatementFilter): BindingTrace {
val trace = createDelegatingTrace(anonymousInitializer) val trace = createDelegatingTrace(anonymousInitializer)
val classOrObjectDescriptor = resolveSession.resolveToDescriptor(anonymousInitializer.containingDeclaration) as LazyClassDescriptor val classOrObjectDescriptor = resolveSession.resolveToDescriptor(anonymousInitializer.containingDeclaration) as LazyClassDescriptor
@@ -19,14 +19,13 @@ package org.jetbrains.kotlin.idea.references
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
import com.intellij.psi.PsiReferenceRegistrar import com.intellij.psi.PsiReferenceRegistrar
import org.jetbrains.kotlin.idea.kdoc.KDocReference import org.jetbrains.kotlin.idea.kdoc.KDocReference
import org.jetbrains.kotlin.kdoc.psi.impl.KDocName
import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.KtNameReferenceExpression
class KotlinReferenceContributor() : AbstractKotlinReferenceContributor() { class KotlinReferenceContributor() : AbstractKotlinReferenceContributor() {
override fun registerReferenceProviders(registrar: PsiReferenceRegistrar) { override fun registerReferenceProviders(registrar: PsiReferenceRegistrar) {
with(registrar) { with(registrar) {
registerProvider<KtSimpleNameExpression>(factory = ::KtSimpleNameReference) registerProvider(factory = ::KtSimpleNameReference)
registerMultiProvider<KtNameReferenceExpression> { registerMultiProvider<KtNameReferenceExpression> {
if (it.getReferencedNameElementType() != KtTokens.IDENTIFIER) return@registerMultiProvider emptyArray() if (it.getReferencedNameElementType() != KtTokens.IDENTIFIER) return@registerMultiProvider emptyArray()
@@ -41,19 +40,19 @@ class KotlinReferenceContributor() : AbstractKotlinReferenceContributor() {
} }
} }
registerProvider<KtConstructorDelegationReferenceExpression>(factory = ::KtConstructorDelegationReference) registerProvider(factory = ::KtConstructorDelegationReference)
registerProvider<KtCallExpression>(factory = ::KtInvokeFunctionReference) registerProvider(factory = ::KtInvokeFunctionReference)
registerProvider<KtArrayAccessExpression>(factory = ::KtArrayAccessReference) registerProvider(factory = ::KtArrayAccessReference)
registerProvider<KtForExpression>(factory = ::KtForLoopInReference) registerProvider(factory = ::KtForLoopInReference)
registerProvider<KtPropertyDelegate>(factory = ::KtPropertyDelegationMethodsReference) registerProvider(factory = ::KtPropertyDelegationMethodsReference)
registerProvider<KtDestructuringDeclarationEntry>(factory = ::KtDestructuringDeclarationReference) registerProvider(factory = ::KtDestructuringDeclarationReference)
registerProvider<KDocName>(factory = ::KDocReference) registerProvider(factory = ::KDocReference)
} }
} }
} }