From 932985f0c104ad19a33fce79b5a55bda19a3df77 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 28 Oct 2015 19:21:53 +0300 Subject: [PATCH] Preliminary declaration visitor: do not create if already exists --- .../types/expressions/PreliminaryDeclarationVisitor.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/PreliminaryDeclarationVisitor.kt b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/PreliminaryDeclarationVisitor.kt index ef187f928fb..84fc1877a5f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/PreliminaryDeclarationVisitor.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/PreliminaryDeclarationVisitor.kt @@ -43,10 +43,9 @@ class PreliminaryDeclarationVisitor(val declaration: KtDeclaration): AssignedVar fun createForDeclaration(declaration: KtDeclaration, trace: BindingTrace) { // TODO: find top-most declaration (but not class!!!) - // TODO: check if already exists - val visitor = PreliminaryDeclarationVisitor(declaration) + if (trace.get(BindingContext.PRELIMINARY_VISITOR, declaration) != null) return // Can this declaration be synthetic? If yes, it would be better not to record it - trace.record(BindingContext.PRELIMINARY_VISITOR, declaration, visitor); + trace.record(BindingContext.PRELIMINARY_VISITOR, declaration, PreliminaryDeclarationVisitor(declaration)); } fun getVisitorByVariable(variableDescriptor: VariableDescriptor, bindingContext: BindingContext): PreliminaryDeclarationVisitor? {