From 8fad4272fcc61a5295b8888b298fc576403f2d54 Mon Sep 17 00:00:00 2001 From: Brian Norman Date: Tue, 30 May 2023 12:49:52 -0500 Subject: [PATCH] [FIR] Fix default message for PRIVATE_CLASS_MEMBER_FROM_INLINE Error message was only printing the calling inline function and not the class member being accessed. Make sure both pieces for diagnostic information are included in the error message. #KT-58972 Fixed --- .../fir/analysis/diagnostics/FirErrorsDefaultMessages.kt | 2 +- .../tests/inline/nonPublicMember/kt55179.diag.txt | 6 ++++++ .../tests/inline/nonPublicMember/kt55179.fir.diag.txt | 7 +++++++ .../tests/inline/nonPublicMember/kt55179.fir.kt | 1 + .../diagnostics/tests/inline/nonPublicMember/kt55179.kt | 1 + 5 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.diag.txt create mode 100644 compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.fir.diag.txt diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt index 4998a8bbaef..701a03f59cf 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt @@ -2161,7 +2161,7 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() { ) map.put( PRIVATE_CLASS_MEMBER_FROM_INLINE, - "Non-private inline function cannot access members of private classes: ''{1}''", + "Non-private inline function ''{1}'' cannot access members of private classes: ''{0}''", SYMBOL, SYMBOL ) diff --git a/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.diag.txt b/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.diag.txt new file mode 100644 index 00000000000..f000028697e --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.diag.txt @@ -0,0 +1,6 @@ +/kt55179.kt:16:5: error: non-private inline function cannot access members of private classes: 'public constructor Foo() defined in Foo' + Foo() + ^ +/kt55179.kt:17:9: error: non-private inline function cannot access members of private classes: 'public companion object defined in Foo' + Foo.Companion + ^ diff --git a/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.fir.diag.txt b/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.fir.diag.txt new file mode 100644 index 00000000000..06fee06ad78 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.fir.diag.txt @@ -0,0 +1,7 @@ +/kt55179.fir.kt:(217,223): warning: Expected performance impact from inlining is insignificant. Inlining works best for functions with parameters of functional types + +/kt55179.fir.kt:(240,243): error: Non-private inline function 'fun foo(): Unit' cannot access members of private classes: 'constructor(): Foo' + +/kt55179.fir.kt:(254,263): error: Non-private inline function 'fun foo(): Unit' cannot access members of private classes: 'companion object Companion : Any' + +/kt55179.fir.kt:(272,280): error: Non-private inline function 'fun foo(): Unit' cannot access members of private classes: 'fun buildFoo(): Foo' diff --git a/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.fir.kt b/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.fir.kt index 2ac00e64fa7..9e0568c76a6 100644 --- a/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.fir.kt +++ b/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.fir.kt @@ -1,5 +1,6 @@ // ISSUE: KT-55179 // SKIP_TXT +// !RENDER_DIAGNOSTICS_FULL_TEXT private class Foo { companion object { diff --git a/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.kt b/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.kt index 31e6e669aab..8ad60a36d02 100644 --- a/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.kt +++ b/compiler/testData/diagnostics/tests/inline/nonPublicMember/kt55179.kt @@ -1,5 +1,6 @@ // ISSUE: KT-55179 // SKIP_TXT +// !RENDER_DIAGNOSTICS_FULL_TEXT private class Foo { companion object {