diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/structureView/KotlinStructureViewModel.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/structureView/KotlinStructureViewModel.kt index df882d8aa59..1d441606391 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/structureView/KotlinStructureViewModel.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/structureView/KotlinStructureViewModel.kt @@ -10,22 +10,26 @@ import com.intellij.ide.structureView.StructureViewModelBase import com.intellij.ide.structureView.StructureViewTreeElement import com.intellij.ide.util.treeView.smartTree.* import com.intellij.openapi.editor.Editor +import com.intellij.psi.PsiElement import com.intellij.util.PlatformIcons import org.jetbrains.kotlin.idea.KotlinIdeaAnalysisBundle -import org.jetbrains.kotlin.psi.KtClassOrObject -import org.jetbrains.kotlin.psi.KtDeclaration -import org.jetbrains.kotlin.psi.KtEnumEntry -import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject class KotlinStructureViewModel(ktFile: KtFile, editor: Editor?) : StructureViewModelBase(ktFile, editor, KotlinStructureViewElement(ktFile, false)), StructureViewModel.ElementInfoProvider { init { - withSuitableClasses(KtDeclaration::class.java) withSorters(Sorter.ALPHA_SORTER) } + override fun isSuitable(element: PsiElement?): Boolean = element is KtDeclaration && + element !is KtPropertyAccessor && + element !is KtFunctionLiteral && + !(element is KtProperty && element.containingClassOrObject !is KtNamedDeclaration) && + !(element is KtFunction && element.containingClassOrObject !is KtNamedDeclaration) + override fun getNodeProviders() = NODE_PROVIDERS override fun getFilters() = FILTERS