diff --git a/java/java-syntax/src/com/intellij/java/syntax/element/JavaDocSyntaxElementType.kt b/java/java-syntax/src/com/intellij/java/syntax/element/JavaDocSyntaxElementType.kt index cf89d1552a5c..38a6c5712689 100644 --- a/java/java-syntax/src/com/intellij/java/syntax/element/JavaDocSyntaxElementType.kt +++ b/java/java-syntax/src/com/intellij/java/syntax/element/JavaDocSyntaxElementType.kt @@ -2,6 +2,7 @@ package com.intellij.java.syntax.element import com.intellij.java.syntax.element.lazyParser.JavaDocCommentParser +import com.intellij.java.syntax.element.lazyParser.JavaDocReferenceHolderParser import com.intellij.java.syntax.element.lazyParser.JavaDocTypeParser import com.intellij.platform.syntax.SyntaxElementType import kotlin.jvm.JvmField @@ -22,7 +23,7 @@ object JavaDocSyntaxElementType { @JvmField val DOC_SNIPPET_ATTRIBUTE_LIST: SyntaxElementType = SyntaxElementType("DOC_SNIPPET_ATTRIBUTE_LIST") @JvmField val DOC_SNIPPET_ATTRIBUTE_VALUE: SyntaxElementType = SyntaxElementType("DOC_SNIPPET_ATTRIBUTE_VALUE") - @JvmField val DOC_REFERENCE_HOLDER: SyntaxElementType = SyntaxElementType("DOC_REFERENCE_HOLDER") + @JvmField val DOC_REFERENCE_HOLDER: SyntaxElementType = SyntaxElementType("DOC_REFERENCE_HOLDER", lazyParser = JavaDocReferenceHolderParser()) @JvmField val DOC_TYPE_HOLDER: SyntaxElementType = SyntaxElementType("DOC_TYPE_HOLDER", lazyParser = JavaDocTypeParser()) diff --git a/java/java-syntax/src/com/intellij/java/syntax/element/lazyParser/JavaDocReferenceHolderParser.kt b/java/java-syntax/src/com/intellij/java/syntax/element/lazyParser/JavaDocReferenceHolderParser.kt new file mode 100644 index 000000000000..259f633ff3dd --- /dev/null +++ b/java/java-syntax/src/com/intellij/java/syntax/element/lazyParser/JavaDocReferenceHolderParser.kt @@ -0,0 +1,31 @@ +// 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.java.syntax.element.lazyParser + +import com.intellij.java.syntax.element.JavaDocSyntaxElementType +import com.intellij.java.syntax.lexer.JavaLexer +import com.intellij.java.syntax.parser.JavaDocParser +import com.intellij.java.syntax.parser.JavaParser +import com.intellij.platform.syntax.LazyLexingContext +import com.intellij.platform.syntax.LazyParser +import com.intellij.platform.syntax.LazyParsingContext +import com.intellij.platform.syntax.lexer.Lexer +import com.intellij.platform.syntax.parser.ProductionResult +import com.intellij.platform.syntax.parser.prepareProduction +import com.intellij.pom.java.LanguageLevel + +class JavaDocReferenceHolderParser : LazyParser { + override fun parse(parsingContext: LazyParsingContext): ProductionResult { + val syntaxTreeBuilder = parsingContext.syntaxTreeBuilder + + parseFragment(syntaxTreeBuilder, JavaDocSyntaxElementType.DOC_REFERENCE_HOLDER, false) { + JavaDocParser(syntaxTreeBuilder, languageLevel).parseJavadocReference(JavaParser(languageLevel)) + } + + return prepareProduction(syntaxTreeBuilder) + } + + override fun createLexer(lexingContext: LazyLexingContext): Lexer = + JavaLexer(languageLevel) + + private val languageLevel get() = LanguageLevel.JDK_1_3 +} \ No newline at end of file