From 420b6d48c34dbff945196608184c2f794629ba22 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Thu, 31 Aug 2023 23:16:30 +0200 Subject: [PATCH] [LL FIR] FileStructure: avoid redundant bodies visiting We shouldn't try to find structure elements inside non-local declarations Only classes and scripts can have an inner structure ^KT-60611 --- .../low/level/api/fir/file/structure/FileStructure.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FileStructure.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FileStructure.kt index 84a04c0c73b..ddacfc7fa23 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FileStructure.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FileStructure.kt @@ -136,7 +136,12 @@ internal class FileStructure private constructor( override fun visitDeclaration(dcl: KtDeclaration) { val structureElement = getStructureElementFor(dcl) structureElements += structureElement - dcl.acceptChildren(this) + + // Go down only in the case of container declaration + val canHaveInnerStructure = dcl is KtClassOrObject || dcl is KtScript + if (canHaveInnerStructure) { + dcl.acceptChildren(this) + } } override fun visitModifierList(list: KtModifierList) {