diff --git a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/logging/highlighting/JavaLoggingPlaceholderAnnotatorTest.kt b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/logging/highlighting/JavaLoggingPlaceholderAnnotatorTest.kt index 55b50fddc560..18a0497373f9 100644 --- a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/logging/highlighting/JavaLoggingPlaceholderAnnotatorTest.kt +++ b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/logging/highlighting/JavaLoggingPlaceholderAnnotatorTest.kt @@ -224,4 +224,88 @@ class JavaLoggingPlaceholderAnnotatorTest : LoggingPlaceholderAnnotatorTestBase( } } """.trimIndent()) + + fun `test lazy init`() = doTest(""" + import org.apache.logging.log4j.LogBuilder; + import org.apache.logging.log4j.LogManager; + import org.apache.logging.log4j.Logger; + + class LazyInitializer { + + static class StaticInitializer { + private static final Logger log; + + static { + log = LogManager.getLogger(); + } + + public StaticInitializer() { + log.info("{}", 1); + } + } + + static class StaticInitializerBuilder { + private static final LogBuilder log; + + static { + log = LogManager.getLogger().atDebug(); + } + + public StaticInitializerBuilder() { + log.log("{}", "arg"); + } + } + + static class StaticInitializerBuilder2 { + private static final LogBuilder log; + + static { + if (1 == 1) { + log = LogManager.getLogger().atDebug(); + } else { + log = LogManager.getFormatterLogger().atDebug(); + } + } + + public StaticInitializerBuilder2() { + log.log("{}", 1); + } + } + + static class ConstructorInitializer { + private final Logger log; + + + public ConstructorInitializer() { + log = LogManager.getLogger(); + } + + public ConstructorInitializer(int i) { + log = LogManager.getLogger(); + } + + public void test() { + log.info("{} {}", 2, 1); + } + } + + static class ConstructorInitializer2 { + private final Logger log; + + + public ConstructorInitializer2() { + log = LogManager.getFormatterLogger(); + } + + public ConstructorInitializer2(int i) { + log = LogManager.getLogger(); + } + + public void test() { + log.info("{}", 1); + } + } + } + """.trimIndent()) + } \ No newline at end of file diff --git a/jvm/jvm-analysis-kotlin-tests-shared/testSrc/com/intellij/logging/highlighting/KotlinLoggingPlaceholderAnnotatorTest.kt b/jvm/jvm-analysis-kotlin-tests-shared/testSrc/com/intellij/logging/highlighting/KotlinLoggingPlaceholderAnnotatorTest.kt index fcaca85b4eff..cbffa64f0ce2 100644 --- a/jvm/jvm-analysis-kotlin-tests-shared/testSrc/com/intellij/logging/highlighting/KotlinLoggingPlaceholderAnnotatorTest.kt +++ b/jvm/jvm-analysis-kotlin-tests-shared/testSrc/com/intellij/logging/highlighting/KotlinLoggingPlaceholderAnnotatorTest.kt @@ -223,4 +223,63 @@ abstract class KotlinLoggingPlaceholderAnnotatorTest : LoggingPlaceholderAnnotat } """.trimIndent()) } + + fun `test lazy init`() = doTest(""" + import org.apache.logging.log4j.LogBuilder + import org.apache.logging.log4j.LogManager + import org.apache.logging.log4j.Logger + + class LazyInitializer { + + internal 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() + } + } + } + } + + internal class ConstructorInitializer { + private val log: Logger + + constructor() { + log = LogManager.getLogger() + } + + constructor(i) { + log = LogManager.getLogger() + } + + fun test() { + log.info("{}", 1) + } + } + + internal class ConstructorInitializer2 { + private val log: Logger + + constructor() { + log = LogManager.getFormatterLogger() + } + + constructor(i: Int) { + log = LogManager.getLogger() + } + + fun test() { + log.info("{}", 1) + } + } + } + """.trimIndent()) } \ No newline at end of file