diff --git a/java/java-syntax/src/com/intellij/java/syntax/JavaSyntaxDefinition.kt b/java/java-syntax/src/com/intellij/java/syntax/JavaSyntaxDefinition.kt
index 2b40c4a24e0b..70fcf6272f7f 100644
--- a/java/java-syntax/src/com/intellij/java/syntax/JavaSyntaxDefinition.kt
+++ b/java/java-syntax/src/com/intellij/java/syntax/JavaSyntaxDefinition.kt
@@ -7,8 +7,8 @@ import com.intellij.java.syntax.lexer.JavaDocLexer
import com.intellij.java.syntax.lexer.JavaLexer
import com.intellij.java.syntax.lexer.JavaTypeEscapeLexer
import com.intellij.platform.syntax.SyntaxElementTypeSet
+import com.intellij.platform.syntax.SyntaxLanguage
import com.intellij.platform.syntax.element.SyntaxTokenTypes
-import com.intellij.platform.syntax.extensions.SyntaxLanguage
import com.intellij.platform.syntax.lexer.Lexer
import com.intellij.platform.syntax.syntaxElementTypeSetOf
import com.intellij.pom.java.LanguageLevel
diff --git a/platform/syntax/syntax-api/api-dump-experimental.txt b/platform/syntax/syntax-api/api-dump-experimental.txt
index 52dcfa9315bb..64849793acfb 100644
--- a/platform/syntax/syntax-api/api-dump-experimental.txt
+++ b/platform/syntax/syntax-api/api-dump-experimental.txt
@@ -72,6 +72,12 @@
- *sf:emptySyntaxElementTypeSet():com.intellij.platform.syntax.SyntaxElementTypeSet
- sf:flattenSyntaxElementTypeSets(com.intellij.platform.syntax.SyntaxElementTypeSet[]):com.intellij.platform.syntax.SyntaxElementTypeSet
- *sf:syntaxElementTypeSetOf(com.intellij.platform.syntax.SyntaxElementType[]):com.intellij.platform.syntax.SyntaxElementTypeSet
+*f:com.intellij.platform.syntax.SyntaxLanguage
+- equals(java.lang.Object):Z
+- f:getId():java.lang.String
+- hashCode():I
+*f:com.intellij.platform.syntax.SyntaxLanguageKt
+- sf:SyntaxLanguage(java.lang.String):com.intellij.platform.syntax.SyntaxLanguage
*f:com.intellij.platform.syntax.element.SyntaxTokenTypes
- sf:INSTANCE:com.intellij.platform.syntax.element.SyntaxTokenTypes
- sf:getBAD_CHARACTER():com.intellij.platform.syntax.SyntaxElementType
@@ -216,7 +222,7 @@
- a:getEndOffset():I
- a:getErrorMessage():java.lang.String
- a:getFirstChild():com.intellij.platform.syntax.tree.SyntaxNode
-- a:getLanguage():java.lang.Object
+- a:getLanguage():com.intellij.platform.syntax.SyntaxLanguage
- a:getLastChild():com.intellij.platform.syntax.tree.SyntaxNode
- a:getNextSibling():com.intellij.platform.syntax.tree.SyntaxNode
- a:getParent():com.intellij.platform.syntax.tree.SyntaxNode
diff --git a/platform/syntax/syntax-extensions/src/com/intellij/platform/syntax/extensions/SyntaxLanguage.kt b/platform/syntax/syntax-api/src/com/intellij/platform/syntax/SyntaxLanguage.kt
similarity index 79%
rename from platform/syntax/syntax-extensions/src/com/intellij/platform/syntax/extensions/SyntaxLanguage.kt
rename to platform/syntax/syntax-api/src/com/intellij/platform/syntax/SyntaxLanguage.kt
index dc765909a490..46bde0fb686b 100644
--- a/platform/syntax/syntax-extensions/src/com/intellij/platform/syntax/extensions/SyntaxLanguage.kt
+++ b/platform/syntax/syntax-api/src/com/intellij/platform/syntax/SyntaxLanguage.kt
@@ -1,15 +1,10 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
@file:ApiStatus.Experimental
-package com.intellij.platform.syntax.extensions
+package com.intellij.platform.syntax
import org.jetbrains.annotations.ApiStatus
-/**
- * Language allows associate extension points with it.
- *
- * See [ExtensionSupport.getLanguageExtensions]
- */
@ApiStatus.Experimental
class SyntaxLanguage internal constructor(val id: String, unused: Any?) {
override fun equals(other: Any?): Boolean =
diff --git a/platform/syntax/syntax-api/src/com/intellij/platform/syntax/tree/SyntaxTree.kt b/platform/syntax/syntax-api/src/com/intellij/platform/syntax/tree/SyntaxTree.kt
index fe92c89cea08..29229436d1ba 100644
--- a/platform/syntax/syntax-api/src/com/intellij/platform/syntax/tree/SyntaxTree.kt
+++ b/platform/syntax/syntax-api/src/com/intellij/platform/syntax/tree/SyntaxTree.kt
@@ -2,6 +2,7 @@
package com.intellij.platform.syntax.tree
import com.intellij.platform.syntax.SyntaxElementType
+import com.intellij.platform.syntax.SyntaxLanguage
import org.jetbrains.annotations.ApiStatus
/**
@@ -27,5 +28,5 @@ interface SyntaxNode {
val errorMessage: String?
- val language: Any?
+ val language: SyntaxLanguage?
}
diff --git a/platform/syntax/syntax-extensions/BUILD.bazel b/platform/syntax/syntax-extensions/BUILD.bazel
index 7d0b7069684d..666ae1f3b94d 100644
--- a/platform/syntax/syntax-extensions/BUILD.bazel
+++ b/platform/syntax/syntax-extensions/BUILD.bazel
@@ -15,6 +15,7 @@ jvm_library(
deps = [
"@lib//:kotlin-stdlib",
"@lib//:jetbrains-annotations",
+ "//platform/syntax/syntax-api:syntax",
":multiplatformSupport_provided",
]
)
@@ -32,6 +33,8 @@ jvm_library(
"@lib//:junit5",
"@lib//:kotlin-test",
"@lib//:kotlin-test-junit",
+ "//platform/syntax/syntax-api:syntax",
+ "//platform/syntax/syntax-api:syntax_test_lib",
]
)
diff --git a/platform/syntax/syntax-extensions/api-dump-experimental.txt b/platform/syntax/syntax-extensions/api-dump-experimental.txt
index a53a0a33e221..f8dbdcecff8e 100644
--- a/platform/syntax/syntax-extensions/api-dump-experimental.txt
+++ b/platform/syntax/syntax-extensions/api-dump-experimental.txt
@@ -7,18 +7,12 @@
*:com.intellij.platform.syntax.extensions.ExtensionRegistry
- com.intellij.platform.syntax.extensions.ExtensionSupport
- a:registerExtension(com.intellij.platform.syntax.extensions.ExtensionPointKey,java.lang.Object):V
-- a:registerLanguageExtension(com.intellij.platform.syntax.extensions.ExtensionPointKey,java.lang.Object,com.intellij.platform.syntax.extensions.SyntaxLanguage):V
+- a:registerLanguageExtension(com.intellij.platform.syntax.extensions.ExtensionPointKey,java.lang.Object,com.intellij.platform.syntax.SyntaxLanguage):V
- a:unregisterExtension(com.intellij.platform.syntax.extensions.ExtensionPointKey,java.lang.Object):V
-- a:unregisterLanguageExtension(com.intellij.platform.syntax.extensions.ExtensionPointKey,com.intellij.platform.syntax.extensions.SyntaxLanguage):V
+- a:unregisterLanguageExtension(com.intellij.platform.syntax.extensions.ExtensionPointKey,com.intellij.platform.syntax.SyntaxLanguage):V
*:com.intellij.platform.syntax.extensions.ExtensionSupport
- a:getExtensions(com.intellij.platform.syntax.extensions.ExtensionPointKey):java.util.List
-- a:getLanguageExtensions(com.intellij.platform.syntax.extensions.ExtensionPointKey,com.intellij.platform.syntax.extensions.SyntaxLanguage):java.util.List
+- a:getLanguageExtensions(com.intellij.platform.syntax.extensions.ExtensionPointKey,com.intellij.platform.syntax.SyntaxLanguage):java.util.List
*f:com.intellij.platform.syntax.extensions.ExtensionSupportKt
- *sf:ExtensionRegistry():com.intellij.platform.syntax.extensions.ExtensionRegistry
- *sf:ExtensionSupport():com.intellij.platform.syntax.extensions.ExtensionSupport
-*f:com.intellij.platform.syntax.extensions.SyntaxLanguage
-- equals(java.lang.Object):Z
-- f:getId():java.lang.String
-- hashCode():I
-*f:com.intellij.platform.syntax.extensions.SyntaxLanguageKt
-- sf:SyntaxLanguage(java.lang.String):com.intellij.platform.syntax.extensions.SyntaxLanguage
diff --git a/platform/syntax/syntax-extensions/intellij.platform.syntax.extensions.iml b/platform/syntax/syntax-extensions/intellij.platform.syntax.extensions.iml
index cf153d6c3b2f..ccf3200383e4 100644
--- a/platform/syntax/syntax-extensions/intellij.platform.syntax.extensions.iml
+++ b/platform/syntax/syntax-extensions/intellij.platform.syntax.extensions.iml
@@ -36,5 +36,6 @@
+
\ No newline at end of file
diff --git a/platform/syntax/syntax-extensions/src/com/intellij/platform/syntax/extensions/ExtensionSupport.kt b/platform/syntax/syntax-extensions/src/com/intellij/platform/syntax/extensions/ExtensionSupport.kt
index 20b498ae0d29..375bc3946b1d 100644
--- a/platform/syntax/syntax-extensions/src/com/intellij/platform/syntax/extensions/ExtensionSupport.kt
+++ b/platform/syntax/syntax-extensions/src/com/intellij/platform/syntax/extensions/ExtensionSupport.kt
@@ -3,6 +3,7 @@
package com.intellij.platform.syntax.extensions
+import com.intellij.platform.syntax.SyntaxLanguage
import com.intellij.platform.syntax.extensions.impl.registry
import org.jetbrains.annotations.ApiStatus
@@ -28,7 +29,7 @@ fun ExtensionRegistry(): ExtensionRegistry? = registry as? ExtensionRegistry
* When working outside of IJ environment, extensions must be registered explicitly.
*
* @See ExtensionKey
- * @see SyntaxLanguage
+ * @see com.intellij.platform.syntax.SyntaxLanguage
* @see ExtensionRegistry
*/
@ApiStatus.Experimental
diff --git a/platform/syntax/syntax-extensions/src/com/intellij/platform/syntax/extensions/impl/ExtensionRegistryImpl.kt b/platform/syntax/syntax-extensions/src/com/intellij/platform/syntax/extensions/impl/ExtensionRegistryImpl.kt
index eee9924b9add..d9ef5084caf7 100644
--- a/platform/syntax/syntax-extensions/src/com/intellij/platform/syntax/extensions/impl/ExtensionRegistryImpl.kt
+++ b/platform/syntax/syntax-extensions/src/com/intellij/platform/syntax/extensions/impl/ExtensionRegistryImpl.kt
@@ -1,9 +1,9 @@
// 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.platform.syntax.extensions.impl
+import com.intellij.platform.syntax.SyntaxLanguage
import com.intellij.platform.syntax.extensions.ExtensionPointKey
import com.intellij.platform.syntax.extensions.ExtensionRegistry
-import com.intellij.platform.syntax.extensions.SyntaxLanguage
/**
* Simple [ExtensionSupport] backend that is used outside IntelliJ runtime.
diff --git a/platform/syntax/syntax-psi/api-dump-experimental.txt b/platform/syntax/syntax-psi/api-dump-experimental.txt
index 7428443de2c2..2ac8165fc821 100644
--- a/platform/syntax/syntax-psi/api-dump-experimental.txt
+++ b/platform/syntax/syntax-psi/api-dump-experimental.txt
@@ -52,7 +52,7 @@
*f:com.intellij.platform.syntax.psi.PsiSyntaxBuilderFactory$Companion
- f:getInstance():com.intellij.platform.syntax.psi.PsiSyntaxBuilderFactory
*f:com.intellij.platform.syntax.psi.extensions.IntelliJSyntaxLanguageSupportKt
-- sf:asIntelliJLanguage(com.intellij.platform.syntax.extensions.SyntaxLanguage):com.intellij.lang.Language
+- sf:asIntelliJLanguage(com.intellij.platform.syntax.SyntaxLanguage):com.intellij.lang.Language
*f:com.intellij.platform.syntax.psi.impl.PsiSyntaxParserRuntimeFactoryImplKt
- sf:getSyntaxParserRuntimeFactory(com.intellij.lang.Language):com.intellij.platform.syntax.util.runtime.SyntaxParserRuntimeFactory
*c:com.intellij.platform.syntax.psi.lexer.LexerAdapter
diff --git a/platform/syntax/syntax-psi/src/com/intellij/platform/syntax/psi/extensions/IntelliJExtensionSupport.kt b/platform/syntax/syntax-psi/src/com/intellij/platform/syntax/psi/extensions/IntelliJExtensionSupport.kt
index 5779ec9171c8..8cebbed07779 100644
--- a/platform/syntax/syntax-psi/src/com/intellij/platform/syntax/psi/extensions/IntelliJExtensionSupport.kt
+++ b/platform/syntax/syntax-psi/src/com/intellij/platform/syntax/psi/extensions/IntelliJExtensionSupport.kt
@@ -5,7 +5,7 @@ import com.intellij.lang.LanguageExtension
import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.platform.syntax.extensions.ExtensionPointKey
import com.intellij.platform.syntax.extensions.ExtensionSupport
-import com.intellij.platform.syntax.extensions.SyntaxLanguage
+import com.intellij.platform.syntax.SyntaxLanguage
import java.util.concurrent.ConcurrentHashMap
/**
diff --git a/platform/syntax/syntax-psi/src/com/intellij/platform/syntax/psi/extensions/IntelliJSyntaxLanguageSupport.kt b/platform/syntax/syntax-psi/src/com/intellij/platform/syntax/psi/extensions/IntelliJSyntaxLanguageSupport.kt
index b3b9d0871685..12cd43445ea0 100644
--- a/platform/syntax/syntax-psi/src/com/intellij/platform/syntax/psi/extensions/IntelliJSyntaxLanguageSupport.kt
+++ b/platform/syntax/syntax-psi/src/com/intellij/platform/syntax/psi/extensions/IntelliJSyntaxLanguageSupport.kt
@@ -4,7 +4,7 @@
package com.intellij.platform.syntax.psi.extensions
import com.intellij.lang.Language
-import com.intellij.platform.syntax.extensions.SyntaxLanguage
+import com.intellij.platform.syntax.SyntaxLanguage
import org.jetbrains.annotations.ApiStatus
fun SyntaxLanguage.asIntelliJLanguage(): Language =