IJPL-185506: include psi impl in frontend

GitOrigin-RevId: bd94abe98de747b69139e9ada51dadf5a33ddcea
This commit is contained in:
Maria Filipanova
2025-07-09 16:01:44 +00:00
committed by intellij-monorepo-bot
parent 18206ec049
commit b5c1f87bec
13 changed files with 38 additions and 101 deletions
+2
View File
@@ -23,6 +23,8 @@ jvm_library(
"//platform/util",
"//platform/editor-ui-api:editor-ui",
"//xml/xml-frontback-impl:frontback-impl",
"//xml/xml-psi-impl:psi-impl",
"//xml/xml-psi-api:psi",
],
runtime_deps = [":frontend-split_resources"]
)
@@ -18,5 +18,7 @@
<orderEntry type="module" module-name="intellij.platform.util" />
<orderEntry type="module" module-name="intellij.platform.editor.ui" />
<orderEntry type="module" module-name="intellij.xml.frontback.impl" />
<orderEntry type="module" module-name="intellij.xml.psi.impl" />
<orderEntry type="module" module-name="intellij.xml.psi" />
</component>
</module>
@@ -7,14 +7,14 @@
</dependencies>
<extensions defaultExtensionNs="com.intellij">
<applicationService serviceInterface="com.intellij.lang.xml.BasicXmlElementFactory"
serviceImplementation="com.intellij.xml.frontend.split.editor.FrontendXmlElementFactory"/>
<applicationService serviceInterface="com.intellij.lang.html.BasicHtmlElementFactory"
serviceImplementation="com.intellij.xml.frontend.split.editor.FrontendHtmlElementFactory"/>
<applicationService serviceInterface="com.intellij.html.embedding.BasicHtmlRawTextElementFactory"
serviceImplementation="com.intellij.xml.frontend.split.editor.FrontendHtmlElementFactory"/>
<highlightErrorFilter implementation="com.intellij.xml.frontend.split.editor.FrontendHtmlHighlightErrorFilter"/>
<virtualFileCustomDataConsumer implementation="com.intellij.xml.HtmlCodeStyleSettingsCustomDataSynchronizer"/>
<applicationService serviceInterface="com.intellij.javaee.ExternalResourceManager"
serviceImplementation="com.intellij.javaee.ExternalResourceManagerExBase"/>
<applicationService serviceInterface="com.intellij.psi.impl.source.resolve.XmlResolveReferenceSupport"
serviceImplementation="com.intellij.xml.frontend.split.editor.DummyXmlResolveReferenceSupport"/>
</extensions>
</idea-plugin>
@@ -0,0 +1,22 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.xml.frontend.split.editor
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import com.intellij.psi.PsiReference
import com.intellij.psi.impl.source.resolve.XmlResolveReferenceSupport
import com.intellij.psi.xml.XmlEntityDecl
class DummyXmlResolveReferenceSupport : XmlResolveReferenceSupport {
override fun resolveReference(reference: PsiReference?): PsiElement? {
return null
}
override fun resolveReference(ref: com.intellij.psi.xml.XmlEntityRef, targetFile: PsiFile?): XmlEntityDecl? {
return null
}
override fun resolveSchemaTypeOrElementOrAttributeReference(element: PsiElement): PsiElement? {
return null
}
}
@@ -1,21 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.xml.frontend.split.editor
import com.intellij.openapi.fileTypes.FileType
import com.intellij.psi.FileViewProvider
import com.intellij.psi.PsiElementVisitor
import com.intellij.psi.impl.source.PsiFileImpl
import com.intellij.psi.tree.IElementType
abstract class FrontendFileImpl(
viewProvider: FileViewProvider,
elementType: IElementType,
) : PsiFileImpl(elementType, elementType, viewProvider) {
override fun getFileType(): FileType =
viewProvider.fileType
override fun accept(visitor: PsiElementVisitor) {
visitor.visitFile(this)
}
}
@@ -1,23 +0,0 @@
package com.intellij.xml.frontend.split.editor
import com.intellij.extapi.psi.ASTWrapperPsiElement
import com.intellij.html.embedding.BasicHtmlRawTextElementFactory
import com.intellij.lang.ASTNode
import com.intellij.lang.html.BasicHtmlElementFactory
import com.intellij.psi.FileViewProvider
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
class FrontendHtmlElementFactory :
BasicHtmlElementFactory,
BasicHtmlRawTextElementFactory {
override fun createFile(viewProvider: FileViewProvider): PsiFile =
FrontendHtmlFileImpl(viewProvider)
override fun createElement(node: ASTNode): PsiElement =
ASTWrapperPsiElement(node)
override fun createRawTextElement(node: ASTNode): PsiElement =
ASTWrapperPsiElement(node)
}
@@ -1,12 +0,0 @@
package com.intellij.xml.frontend.split.editor
import com.intellij.psi.FileViewProvider
import com.intellij.psi.xml.XmlElementType
class FrontendHtmlFileImpl(
viewProvider: FileViewProvider,
) : FrontendFileImpl(viewProvider, XmlElementType.HTML_FILE) {
override fun toString(): String =
"HtmlFile:$name"
}
@@ -2,11 +2,16 @@
package com.intellij.xml.frontend.split.editor
import com.intellij.codeInsight.highlighting.HighlightErrorFilter
import com.intellij.idea.AppModeAssertions
import com.intellij.psi.PsiErrorElement
import com.intellij.psi.impl.source.xml.XmlFileImpl
class FrontendHtmlHighlightErrorFilter: HighlightErrorFilter() {
override fun shouldHighlightErrorElement(element: PsiErrorElement): Boolean {
val psiFile = element.getContainingFile()
return psiFile !is FrontendFileImpl
if (psiFile is XmlFileImpl) return !AppModeAssertions.isFrontend()
return true
}
}
@@ -1,22 +0,0 @@
package com.intellij.xml.frontend.split.editor
import com.intellij.extapi.psi.ASTWrapperPsiElement
import com.intellij.lang.ASTNode
import com.intellij.lang.xml.BasicXmlElementFactory
import com.intellij.psi.FileViewProvider
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import com.intellij.psi.tree.IElementType
import com.intellij.psi.tree.IFileElementType
class FrontendXmlElementFactory :
BasicXmlElementFactory {
override fun createFile(
viewProvider: FileViewProvider,
elementType: IElementType,
): PsiFile =
FrontendXmlFileImpl(viewProvider, IFileElementType(viewProvider.baseLanguage))
override fun createElement(node: ASTNode): PsiElement =
ASTWrapperPsiElement(node)
}
@@ -1,13 +0,0 @@
package com.intellij.xml.frontend.split.editor
import com.intellij.psi.FileViewProvider
import com.intellij.psi.tree.IElementType
class FrontendXmlFileImpl(
viewProvider: FileViewProvider,
elementType: IElementType,
) : FrontendFileImpl(viewProvider, elementType) {
override fun toString(): String =
"XmlFile:$name"
}
-1
View File
@@ -53,7 +53,6 @@ jvm_library(
runtime_deps = [
":psi-impl_resources",
":psi-impl_resources_1",
"//platform/backend",
]
)
### auto-generated section `build intellij.xml.psi.impl` end
@@ -34,7 +34,6 @@
<orderEntry type="library" name="caffeine" level="project" />
<orderEntry type="module" module-name="intellij.platform.util.jdom" />
<orderEntry type="module" module-name="intellij.platform.markdown.utils" />
<orderEntry type="module" module-name="intellij.platform.backend" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.polySymbols" />
<orderEntry type="module" module-name="intellij.regexp" />
<orderEntry type="module" module-name="intellij.xml.ui.common" exported="" />
@@ -1,6 +1,5 @@
<idea-plugin>
<dependencies>
<module name="intellij.platform.backend"/>
<module name="intellij.xml.psi"/>
<module name="intellij.xml.parser"/>
<module name="intellij.xml.frontback.impl"/>