lazy parsing for JavaDoc type reference

GitOrigin-RevId: a7141586f2abacdbe4cb7f5796b6699232e631c9
This commit is contained in:
Max Medvedev
2025-08-23 16:16:34 +00:00
committed by intellij-monorepo-bot
parent 127039a95b
commit 3b5f6f8158
2 changed files with 33 additions and 1 deletions
@@ -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())
@@ -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
}