Clearify diagnostic messages that involve internal visibilities

KT-7354 Fixed

Visibility.displayText is deprecated with warning.
Diagnostics for java visibilities changed.
This commit is contained in:
Pavel Kirpichenkov
2019-09-13 12:30:11 +03:00
parent fc4865a440
commit 0a1b3a8455
14 changed files with 193 additions and 24 deletions
@@ -101,7 +101,7 @@ class SignatureDumpingBuilderFactory(
origin.descriptor?.let {
outputStream.append("\t\t").appendNameValue("declaration", TYPE_RENDERER.render(it)).append(",\n")
(it as? DeclarationDescriptorWithVisibility)?.visibility?.let {
outputStream.append("\t\t").appendNameValue("visibility", it.displayName).append(",\n")
outputStream.append("\t\t").appendNameValue("visibility", it.internalDisplayName).append(",\n")
}
}
outputStream.append("\t\t").appendNameValue("class", javaClassName).append(",\n")
@@ -112,7 +112,7 @@ class SignatureDumpingBuilderFactory(
append("\t\t\t{")
descriptor?.let {
(it as? DeclarationDescriptorWithVisibility)?.visibility?.let {
appendNameValue("visibility", it.displayName).append(",\t")
appendNameValue("visibility", it.internalDisplayName).append(",\t")
}
appendNameValue("declaration", MEMBER_RENDERER.render(it)).append(", ")
@@ -9062,6 +9062,11 @@ public class FirDiagnosticsSmokeTestGenerated extends AbstractFirDiagnosticsSmok
runTest("compiler/testData/diagnostics/tests/imports/CheckJavaVisibility.kt");
}
@TestMetadata("CheckJavaVisibility2.kt")
public void testCheckJavaVisibility2() throws Exception {
runTest("compiler/testData/diagnostics/tests/imports/CheckJavaVisibility2.kt");
}
@TestMetadata("CheckVisibility.kt")
public void testCheckVisibility() throws Exception {
runTest("compiler/testData/diagnostics/tests/imports/CheckVisibility.kt");
@@ -53,8 +53,8 @@ fun syntheticVisibility(originalDescriptor: DeclarationDescriptorWithVisibility,
override fun normalize()
= originalVisibility.normalize()
override val displayName: String
get() = originalVisibility.displayName + " for synthetic extension"
override val internalDisplayName: String
get() = originalVisibility.internalDisplayName + " for synthetic extension"
}
}
@@ -20,15 +20,12 @@ import com.google.common.collect.Lists
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.util.text.StringUtil
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.analyzer.moduleInfo
import org.jetbrains.kotlin.analyzer.unwrapPlatform
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.cfg.WhenMissingCase
import org.jetbrains.kotlin.cfg.hasUnknown
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.newTable
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.newText
@@ -39,7 +36,6 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.renderer.DescriptorRenderer.Companion.DEBUG_TEXT
import org.jetbrains.kotlin.renderer.PropertyAccessorRenderingPolicy
import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.calls.callUtil.getType
import org.jetbrains.kotlin.resolve.calls.inference.*
import org.jetbrains.kotlin.resolve.calls.inference.TypeBounds.Bound
import org.jetbrains.kotlin.resolve.calls.inference.TypeBounds.BoundKind.LOWER_BOUND
@@ -48,11 +44,8 @@ import org.jetbrains.kotlin.resolve.calls.inference.constraintPosition.Constrain
import org.jetbrains.kotlin.resolve.calls.inference.constraintPosition.ConstraintPositionKind.*
import org.jetbrains.kotlin.resolve.calls.inference.constraintPosition.getValidityConstraintForConstituentType
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
import org.jetbrains.kotlin.types.*
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker
import org.jetbrains.kotlin.types.expressions.typeInfoFactory.noTypeInfo
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
import java.io.PrintWriter
import java.io.StringWriter
@@ -97,9 +90,7 @@ object Renderers {
@JvmField
val VISIBILITY = Renderer<Visibility> {
if (it == Visibilities.INVISIBLE_FAKE)
"invisible (private in a supertype)"
else it.displayName
it.externalDisplayName
}
@JvmField
+2 -2
View File
@@ -4,10 +4,10 @@ compiler/testData/cli/jvm/singleJavaFileRoots/test.kt:7:9: error: cannot access
compiler/testData/cli/jvm/singleJavaFileRoots/test.kt:8:5: error: unresolved reference: C
C().a()
^
compiler/testData/cli/jvm/singleJavaFileRoots/test.kt:12:5: error: cannot access '<init>': it is public/*package*/ in 'PackageLocal1'
compiler/testData/cli/jvm/singleJavaFileRoots/test.kt:12:5: error: cannot access '<init>': it is package-private in 'PackageLocal1'
PackageLocal1()
^
compiler/testData/cli/jvm/singleJavaFileRoots/test.kt:13:5: error: cannot access '<init>': it is public/*package*/ in 'PackageLocal2'
compiler/testData/cli/jvm/singleJavaFileRoots/test.kt:13:5: error: cannot access '<init>': it is package-private in 'PackageLocal2'
PackageLocal2()
^
COMPILATION_ERROR
@@ -0,0 +1,62 @@
// FILE: j/JavaPackageLocal.java
package j;
public class JavaPackageLocal {
static void javaMPackage() {}
static int javaPPackage = 4;
}
// FILE: j/JavaProtected.java
package j;
public class JavaProtected {
protected static void javaMProtectedStatic() {}
protected static int javaPProtectedStatic = 4;
protected final int javaPProtectedPackage = 4;
}
// FILE: k.kt
package k
import j.JavaProtected
import j.JavaPackageLocal
class A {
val p1 = JavaPackageLocal.<!INVISIBLE_MEMBER("javaPPackage", "package-private", "'JavaPackageLocal'")!>javaPPackage<!>
val p2 = JavaProtected.<!INVISIBLE_MEMBER("javaPProtectedStatic", "protected", "'JavaProtected'")!>javaPProtectedStatic<!>
val p3 = JavaProtected().<!INVISIBLE_MEMBER("javaPProtectedPackage", "protected", "'JavaProtected'")!>javaPProtectedPackage<!>
fun test() {
JavaProtected.<!INVISIBLE_MEMBER("javaMProtectedStatic", "protected", "'JavaProtected'")!>javaMProtectedStatic<!>()
JavaPackageLocal.<!INVISIBLE_MEMBER("javaMPackage", "package-private", "'JavaPackageLocal'")!>javaMPackage<!>()
}
}
class B : JavaProtected() {
val p1 = JavaPackageLocal.<!INVISIBLE_MEMBER("javaPPackage", "package-private", "'JavaPackageLocal'")!>javaPPackage<!>
val p2 = JavaProtected.javaPProtectedStatic
val p3 = javaPProtectedPackage
fun test() {
JavaProtected.javaMProtectedStatic()
JavaPackageLocal.<!INVISIBLE_MEMBER("javaMPackage", "package-private", "'JavaPackageLocal'")!>javaMPackage<!>()
}
}
// FILE: j.kt
package j
import j.JavaProtected
import j.JavaPackageLocal
class C {
val p1 = JavaPackageLocal.javaPPackage
val p2 = JavaProtected.javaPProtectedStatic
val p3 = JavaProtected().javaPProtectedPackage
fun test() {
JavaProtected.javaMProtectedStatic()
JavaProtected.javaMProtectedStatic()
JavaPackageLocal.javaMPackage()
}
}
@@ -0,0 +1,64 @@
package
package j {
public final class C {
public constructor C()
public final val p1: kotlin.Int
public final val p2: kotlin.Int
public final val p3: kotlin.Int = 4
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class JavaPackageLocal {
public constructor JavaPackageLocal()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public/*package*/ final var javaPPackage: kotlin.Int
public/*package*/ open fun javaMPackage(): kotlin.Unit
}
public open class JavaProtected {
public constructor JavaProtected()
protected/*protected and package*/ final val javaPProtectedPackage: kotlin.Int = 4
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
protected/*protected static*/ final var javaPProtectedStatic: kotlin.Int
protected/*protected static*/ open fun javaMProtectedStatic(): kotlin.Unit
}
}
package k {
public final class A {
public constructor A()
public final val p1: kotlin.Int
public final val p2: kotlin.Int
public final val p3: kotlin.Int = 4
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class B : j.JavaProtected {
public constructor B()
protected/*protected and package*/ final override /*1*/ /*fake_override*/ val javaPProtectedPackage: kotlin.Int
public final val p1: kotlin.Int
public final val p2: kotlin.Int
public final val p3: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -9069,6 +9069,11 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest {
runTest("compiler/testData/diagnostics/tests/imports/CheckJavaVisibility.kt");
}
@TestMetadata("CheckJavaVisibility2.kt")
public void testCheckJavaVisibility2() throws Exception {
runTest("compiler/testData/diagnostics/tests/imports/CheckJavaVisibility2.kt");
}
@TestMetadata("CheckVisibility.kt")
public void testCheckVisibility() throws Exception {
runTest("compiler/testData/diagnostics/tests/imports/CheckVisibility.kt");
@@ -9064,6 +9064,11 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing
runTest("compiler/testData/diagnostics/tests/imports/CheckJavaVisibility.kt");
}
@TestMetadata("CheckJavaVisibility2.kt")
public void testCheckJavaVisibility2() throws Exception {
runTest("compiler/testData/diagnostics/tests/imports/CheckJavaVisibility2.kt");
}
@TestMetadata("CheckVisibility.kt")
public void testCheckVisibility() throws Exception {
runTest("compiler/testData/diagnostics/tests/imports/CheckVisibility.kt");