From bc8f0bf7c557317186eba5b8e03b1fc17e6061c1 Mon Sep 17 00:00:00 2001 From: Georgii Ustinov Date: Mon, 9 Sep 2024 11:09:24 +0300 Subject: [PATCH] [Java. Logging] add tests for logging reference resolver IDEA-357019 GitOrigin-RevId: 2882457613a0c5d0bc55fc2e483de2a27af6df5c --- ...gingArgumentSymbolReferenceProviderTest.kt | 48 ++++++++++++ ...gingArgumentSymbolReferenceProviderTest.kt | 73 +++++++++++++++++++ 2 files changed, 121 insertions(+) diff --git a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/logging/resolve/JavaLoggingArgumentSymbolReferenceProviderTest.kt b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/logging/resolve/JavaLoggingArgumentSymbolReferenceProviderTest.kt index 40220f143ee7..3ca16ec7ec18 100644 --- a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/logging/resolve/JavaLoggingArgumentSymbolReferenceProviderTest.kt +++ b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/logging/resolve/JavaLoggingArgumentSymbolReferenceProviderTest.kt @@ -615,4 +615,52 @@ class JavaLoggingArgumentSymbolReferenceProviderTest : LoggingArgumentSymbolRefe """.trimIndent()) doTest(emptyMap()) } + + fun `test lazy init in init block`() { + myFixture.configureByText("Logging.java", """ + import org.apache.logging.log4j.LogManager; + import org.apache.logging.log4j.Logger; + + class StaticInitializer { + private static final Logger log; + + static { + log = LogManager.getLogger(); + } + + public StaticInitializer() { + log.info("{} {}", 1, 2); + } + } + """.trimIndent()) + doTest(mapOf( + TextRange(1, 3) to "1", + TextRange(4, 6) to "2",)) + } + + fun `test lazy init in constructors`() { + myFixture.configureByText("Logging.java", """ + import org.apache.logging.log4j.LogManager; + import org.apache.logging.log4j.Logger; + + class ConstructorInitializer { + private final Logger log; + + public ConstructorInitializer() { + log = LogManager.getLogger(); + } + + public ConstructorInitializer(int i) { + log = LogManager.getLogger(); + } + + public void test() { + log.info("{} {}", 1, 2); + } + } + """.trimIndent()) + doTest(mapOf( + TextRange(1, 3) to "1", + TextRange(4, 6) to "2",)) + } } \ No newline at end of file diff --git a/jvm/jvm-analysis-kotlin-tests-shared/testSrc/com/intellij/logging/resolve/KotlinLoggingArgumentSymbolReferenceProviderTest.kt b/jvm/jvm-analysis-kotlin-tests-shared/testSrc/com/intellij/logging/resolve/KotlinLoggingArgumentSymbolReferenceProviderTest.kt index db5426b9ceab..b692872b4958 100644 --- a/jvm/jvm-analysis-kotlin-tests-shared/testSrc/com/intellij/logging/resolve/KotlinLoggingArgumentSymbolReferenceProviderTest.kt +++ b/jvm/jvm-analysis-kotlin-tests-shared/testSrc/com/intellij/logging/resolve/KotlinLoggingArgumentSymbolReferenceProviderTest.kt @@ -634,4 +634,77 @@ abstract class KotlinLoggingArgumentSymbolReferenceProviderTest : LoggingArgumen """.trimIndent()) doTest(emptyMap()) } + + fun `test lazy init in init block`() { + myFixture.configureByText("Logging.kt", """ + import org.apache.logging.log4j.LogManager + import org.apache.logging.log4j.Logger + + class Initialization { + init { + log.debug("{}", 1) + } + + companion object { + private val log : Logger + init { + log = LogManager.getLogger() + } + } + } + """.trimIndent()) + doTest(mapOf(TextRange(1, 3) to "1")) + } + + fun `test lazy init in init block with condition`() { + myFixture.configureByText("Logging.kt", """ + import org.apache.logging.log4j.LogManager + import org.apache.logging.log4j.Logger + + class StaticInitializerBuilder2 { + init { + log.log("{}", 1) + } + + companion object { + private val log: LogBuilder + + init { + if (1 == 1) { + log = LogManager.getLogger().atDebug() + } else { + log = LogManager.getFormatterLogger().atDebug() + } + } + } + } + """.trimIndent()) + doTest(emptyMap()) + } + + fun `test lazy init in constructors`() { + myFixture.configureByText("Logging.kt", """ + import org.apache.logging.log4j.LogManager + import org.apache.logging.log4j.Logger + + internal class ConstructorInitializer { + private val log: Logger + + constructor() { + log = LogManager.getLogger() + } + + constructor(i) { + log = LogManager.getLogger() + } + + fun test() { + log.info("{} {}", 1, 2) + } + } + """.trimIndent()) + doTest(mapOf( + TextRange(1, 3) to "1", + TextRange(4, 6) to "2",)) + } } \ No newline at end of file