mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
IDEA-367518 Spring Structure: no logical structure for decompiled library class
GitOrigin-RevId: 8fa8264394ddb82391d62fbe414eed96c55ebe5a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
589e9df373
commit
8e2c5f8ccb
+3
-1
@@ -3,6 +3,7 @@ package com.intellij.ide.highlighter;
|
||||
|
||||
import com.intellij.ide.structureView.StructureViewBuilder;
|
||||
import com.intellij.ide.structureView.StructureViewBuilderProvider;
|
||||
import com.intellij.ide.structureView.logical.PhysicalAndLogicalStructureViewBuilder;
|
||||
import com.intellij.lang.LanguageStructureViewBuilder;
|
||||
import com.intellij.lang.PsiStructureViewFactory;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
@@ -28,7 +29,8 @@ public class JavaClsStructureViewBuilderProvider implements StructureViewBuilder
|
||||
if (psiFile != null) {
|
||||
PsiStructureViewFactory factory = LanguageStructureViewBuilder.getInstance().forLanguage(psiFile.getLanguage());
|
||||
if (factory != null) {
|
||||
return factory.getStructureViewBuilder(psiFile);
|
||||
StructureViewBuilder physicalBuilder = factory.getStructureViewBuilder(psiFile);
|
||||
return PhysicalAndLogicalStructureViewBuilder.Companion.wrapPhysicalBuilderIfPossible(physicalBuilder, psiFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-12
@@ -4,16 +4,12 @@ package com.intellij.ide.highlighter;
|
||||
|
||||
import com.intellij.ide.structureView.StructureViewBuilder;
|
||||
import com.intellij.ide.structureView.StructureViewBuilderProvider;
|
||||
import com.intellij.ide.structureView.TreeBasedStructureViewBuilder;
|
||||
import com.intellij.ide.structureView.logical.PhysicalAndLogicalStructureViewBuilder;
|
||||
import com.intellij.idea.AppMode;
|
||||
import com.intellij.lang.LanguageStructureViewBuilder;
|
||||
import com.intellij.lang.PsiStructureViewFactory;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.LanguageFileType;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
@@ -31,13 +27,6 @@ class LanguageFileTypeStructureViewBuilderProvider implements StructureViewBuild
|
||||
PsiStructureViewFactory factory = LanguageStructureViewBuilder.getInstance().forLanguage(psiFile.getLanguage());
|
||||
if (factory == null) return null;
|
||||
StructureViewBuilder physicalBuilder = factory.getStructureViewBuilder(psiFile);
|
||||
if (!(physicalBuilder instanceof TreeBasedStructureViewBuilder treeBasedStructureViewBuilder)) return physicalBuilder;
|
||||
if (ApplicationManager.getApplication().isUnitTestMode()
|
||||
|| !Registry.is("logical.structure.enabled", true)
|
||||
|| AppMode.isRemoteDevHost()) {
|
||||
return physicalBuilder;
|
||||
}
|
||||
|
||||
return new PhysicalAndLogicalStructureViewBuilder(treeBasedStructureViewBuilder, psiFile);
|
||||
return PhysicalAndLogicalStructureViewBuilder.Companion.wrapPhysicalBuilderIfPossible(physicalBuilder, psiFile);
|
||||
}
|
||||
}
|
||||
+15
@@ -4,12 +4,15 @@ package com.intellij.ide.structureView.logical
|
||||
import com.intellij.ide.structureView.*
|
||||
import com.intellij.ide.structureView.impl.StructureViewComposite
|
||||
import com.intellij.ide.structureView.logical.impl.LogicalStructureViewService.Companion.getInstance
|
||||
import com.intellij.idea.AppMode
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.application.readAction
|
||||
import com.intellij.openapi.application.writeIntentReadAction
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.fileEditor.FileEditor
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
import com.intellij.psi.PsiFile
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
@@ -19,6 +22,18 @@ class PhysicalAndLogicalStructureViewBuilder(
|
||||
private val psiFile: PsiFile,
|
||||
): TreeBasedStructureViewBuilder() {
|
||||
|
||||
companion object {
|
||||
fun wrapPhysicalBuilderIfPossible(physicalBuilder: StructureViewBuilder?, psiFile: PsiFile): StructureViewBuilder? {
|
||||
if (physicalBuilder !is TreeBasedStructureViewBuilder) return physicalBuilder
|
||||
if (ApplicationManager.getApplication().isUnitTestMode()
|
||||
|| !Registry.`is`("logical.structure.enabled", true)
|
||||
|| AppMode.isRemoteDevHost()) {
|
||||
return physicalBuilder
|
||||
}
|
||||
return PhysicalAndLogicalStructureViewBuilder(physicalBuilder, psiFile)
|
||||
}
|
||||
}
|
||||
|
||||
override fun createStructureView(fileEditor: FileEditor?, project: Project): StructureView {
|
||||
val logicalBuilder = getInstance(psiFile.project).getLogicalStructureBuilder(psiFile)
|
||||
return createStructureView(logicalBuilder, fileEditor, project)
|
||||
|
||||
Reference in New Issue
Block a user