Skip to content

Commit a86fe89

Browse files
committed
Include file name for package-level members in diagnostics
1 parent 7979663 commit a86fe89

File tree

19 files changed

+47
-24
lines changed

19 files changed

+47
-24
lines changed

compiler/backend/src/org/jetbrains/kotlin/codegen/state/SignatureDumpingBuilderFactory.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class SignatureDumpingBuilderFactory(
4545
modifiers -= DescriptorRendererModifier.VISIBILITY
4646
}
4747
val TYPE_RENDERER = DescriptorRenderer.withOptions {
48+
withSourceFileForTopLevel = false
4849
modifiers -= DescriptorRendererModifier.VISIBILITY
4950
}
5051
}

compiler/frontend/src/org/jetbrains/kotlin/resolve/source/PsiSourceElement.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,6 @@ class PsiSourceFile(val psiFile: PsiFile): SourceFile {
3333
override fun hashCode(): Int = psiFile.hashCode()
3434

3535
override fun toString(): String = psiFile.virtualFile.path
36+
37+
override fun getName(): String? = psiFile.virtualFile?.name
3638
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
compiler/testData/cli/jvm/conflictingOverloads.kt:1:1: error: conflicting overloads: public fun a(): List<Int> defined in root package, public fun a(): List<String> defined in root package
1+
compiler/testData/cli/jvm/conflictingOverloads.kt:1:1: error: conflicting overloads: public fun a(): List<Int> defined in root package in file conflictingOverloads.kt, public fun a(): List<String> defined in root package in file conflictingOverloads.kt
22
fun a(): List<Int> = null!!
33
^
4-
compiler/testData/cli/jvm/conflictingOverloads.kt:2:1: error: conflicting overloads: public fun a(): List<Int> defined in root package, public fun a(): List<String> defined in root package
4+
compiler/testData/cli/jvm/conflictingOverloads.kt:2:1: error: conflicting overloads: public fun a(): List<Int> defined in root package in file conflictingOverloads.kt, public fun a(): List<String> defined in root package in file conflictingOverloads.kt
55
fun a(): List<String> = null!!
66
^
77
COMPILATION_ERROR

compiler/testData/cli/jvm/signatureClash.out

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ compiler/testData/cli/jvm/signatureClash.kt:9:5: error: platform declaration cla
1414
val a: Int = 1
1515
^
1616
compiler/testData/cli/jvm/signatureClash.kt:12:1: error: platform declaration clash: The following declarations have the same JVM signature (getB()I):
17-
fun <get-b>(): Int defined in root package
18-
fun getB(): Int defined in root package
17+
fun <get-b>(): Int defined in root package in file signatureClash.kt
18+
fun getB(): Int defined in root package in file signatureClash.kt
1919
fun getB(): Int = 1
2020
^
2121
compiler/testData/cli/jvm/signatureClash.kt:13:1: error: platform declaration clash: The following declarations have the same JVM signature (getB()I):
22-
fun <get-b>(): Int defined in root package
23-
fun getB(): Int defined in root package
22+
fun <get-b>(): Int defined in root package in file signatureClash.kt
23+
fun getB(): Int defined in root package in file signatureClash.kt
2424
val b: Int = 1
2525
^
2626
compiler/testData/cli/jvm/signatureClash.kt:19:7: error: platform declaration clash: The following declarations have the same JVM signature (getTr()I):

core/descriptors/src/org/jetbrains/kotlin/descriptors/SourceFile.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@
1616

1717
package org.jetbrains.kotlin.descriptors;
1818

19+
import org.jetbrains.annotations.Nullable;
20+
1921
public interface SourceFile {
20-
SourceFile NO_SOURCE_FILE = new SourceFile() {};
22+
SourceFile NO_SOURCE_FILE = new SourceFile() {
23+
@Nullable
24+
@Override
25+
public String getName() {
26+
return null;
27+
}
28+
};
29+
30+
@Nullable
31+
String getName();
2132
}

core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ enum class AnnotationArgumentsRenderingPolicy(
178178
interface DescriptorRendererOptions {
179179
var classifierNamePolicy: ClassifierNamePolicy
180180
var withDefinedIn: Boolean
181+
var withSourceFileForTopLevel: Boolean
181182
var modifiers: Set<DescriptorRendererModifier>
182183
var startFromName: Boolean
183184
var startFromDeclarationKeyword: Boolean

core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,14 @@ internal class DescriptorRendererImpl(
383383
append(" ").append(renderMessage("defined in")).append(" ")
384384
val fqName = DescriptorUtils.getFqName(containingDeclaration)
385385
append(if (fqName.isRoot) "root package" else renderFqName(fqName))
386+
387+
if (withSourceFileForTopLevel &&
388+
containingDeclaration is PackageFragmentDescriptor &&
389+
descriptor is DeclarationDescriptorWithSource) {
390+
descriptor.source.containingFile.name?.let { sourceFileName ->
391+
append(" ").append(renderMessage("in file")).append(" ").append(sourceFileName)
392+
}
393+
}
386394
}
387395
}
388396

core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ internal class DescriptorRendererOptionsImpl : DescriptorRendererOptions {
6767

6868
override var classifierNamePolicy: ClassifierNamePolicy by property(ClassifierNamePolicy.SOURCE_CODE_QUALIFIED)
6969
override var withDefinedIn by property(true)
70+
override var withSourceFileForTopLevel by property(true)
7071
override var modifiers: Set<DescriptorRendererModifier> by property(DescriptorRendererModifier.DEFAULTS)
7172
override var startFromName by property(false)
7273
override var startFromDeclarationKeyword by property(false)

idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/IdeRenderers.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.resolve.MemberComparator
2424
import org.jetbrains.kotlin.resolve.calls.inference.InferenceErrorData
2525
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
2626
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ConflictingJvmDeclarationsData
27-
import kotlin.comparisons.compareBy
2827

2928
object IdeRenderers {
3029

idea/testData/checker/duplicateJvmSignature/functionAndProperty/topLevelMultifileRuntime.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
package test
55

66
<error descr="[CONFLICTING_JVM_DECLARATIONS] Platform declaration clash: The following declarations have the same JVM signature (getX()I):
7-
fun <get-x>(): Int defined in test
8-
fun getX(): Int defined in test">val x</error> = 1
7+
fun <get-x>(): Int defined in test in file topLevelMultifileRuntime.kt
8+
fun getX(): Int defined in test in file topLevelMultifileRuntime.kt">val x</error> = 1
99
<error descr="[CONFLICTING_JVM_DECLARATIONS] Platform declaration clash: The following declarations have the same JVM signature (getX()I):
10-
fun <get-x>(): Int defined in test
11-
fun getX(): Int defined in test">fun getX()</error> = 1
10+
fun <get-x>(): Int defined in test in file topLevelMultifileRuntime.kt
11+
fun getX(): Int defined in test in file topLevelMultifileRuntime.kt">fun getX()</error> = 1

idea/testData/checker/regression/kt9887.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ open class A<T>()
22
class G<T>()
33

44

5-
class B : A<<error descr="[WRONG_NUMBER_OF_TYPE_ARGUMENTS] One type argument expected for class G<T> defined in root package">G</error>>()
5+
class B : A<<error descr="[WRONG_NUMBER_OF_TYPE_ARGUMENTS] One type argument expected for class G<T> defined in root package in file kt9887.kt">G</error>>()
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
<!-- conflictingOverloadsDefaultPackage1 -->
2-
Conflicting overloads: public fun foo(x: Int): Int defined in root package, public fun foo(y: Int): Int defined in root package
2+
Conflicting overloads: public fun foo(x: Int): Int defined in root package in file conflictingOverloadsDefaultPackage.kt, public fun foo(y: Int): Int defined in root package in file conflictingOverloadsDefaultPackage.kt
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
<!-- conflictingOverloadsDefaultPackage2 -->
2-
Conflicting overloads: public fun foo(x: Int): Int defined in root package, public fun foo(y: Int): Int defined in root package
2+
Conflicting overloads: public fun foo(x: Int): Int defined in root package in file conflictingOverloadsDefaultPackage.kt, public fun foo(y: Int): Int defined in root package in file conflictingOverloadsDefaultPackage.kt
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
<!-- constructorsRedeclarationTopLevel1 -->
2-
Conflicting overloads: public fun Element(x: String): Unit defined in root package, public constructor Element(x: String) defined in Element
2+
Conflicting overloads: public fun Element(x: String): Unit defined in root package in file constructorsRedeclarationTopLevel.kt, public constructor Element(x: String) defined in Element
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
<!-- constructorsRedeclarationTopLevel2 -->
2-
Conflicting overloads: public fun Element(x: String): Unit defined in root package, public constructor Element(x: String) defined in Element
2+
Conflicting overloads: public fun Element(x: String): Unit defined in root package in file constructorsRedeclarationTopLevel.kt, public constructor Element(x: String) defined in Element

idea/testData/diagnosticMessage/noneApplicableGeneric1.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
<ul>
55
<li>foo(<font color=red><b>T</b></font>, Any, MutableList<`<font color=red><b>T</b></font>>, MutableList<`<font color=red><b>T</b></font>>)<br/>
66
<i>where</i> <font color=red><b>T</b></font><i> cannot be inferred</i><i> for </i><br/>
7-
<b>fun</b> <`T> foo(t: T, a: Any, lt: MutableList<`T>, lr: MutableList<`T>): Int <i>defined in</i> p</li>
7+
<b>fun</b> <`T> foo(t: T, a: Any, lt: MutableList<`T>, lr: MutableList<`T>): Int <i>defined in</i> p <i>in file</i> noneApplicableGeneric.kt</li>
88
<li>foo(Int, <font color=red><b>R</b></font>, MutableList<`Int>, MutableList<`<font color=red><b>R</b></font>>)<br/>
99
<i>where</i> <font color=red><b>R</b></font><i> cannot be inferred</i>; T = Int<i> for </i><br/>
10-
<b>fun</b> <`T, R> foo(t: T, r: R, lt: MutableList<`T>, lr: MutableList<`R>): Int <i>defined in</i> p</li>
10+
<b>fun</b> <`T, R> foo(t: T, r: R, lt: MutableList<`T>, lr: MutableList<`R>): Int <i>defined in</i> p <i>in file</i> noneApplicableGeneric.kt</li>
1111
</ul>
1212
</html>
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!-- noneApplicableTxt1 -->
22
None of the following functions can be called with the arguments supplied:
3-
public fun foo(b: a.b.String): Unit defined in a.b
4-
public fun foo(i: Int): Unit defined in a.b
5-
public fun foo(a: kotlin.String): Unit defined in a.b
3+
public fun foo(b: a.b.String): Unit defined in a.b in file noneApplicableTxt.kt
4+
public fun foo(i: Int): Unit defined in a.b in file noneApplicableTxt.kt
5+
public fun foo(a: kotlin.String): Unit defined in a.b in file noneApplicableTxt.kt

idea/testData/diagnosticMessage/overloadResolutionAmbiguityHtml1.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Overload resolution ambiguity. All these functions match.
44
<ul>
55
<li><b>public</b> <b>fun</b> <`T> foo(b: a.b.String, t: ???): Unit <i>defined in</i> a.b</li>
6-
<li><b>public</b> <b>fun</b> foo(i: Int): Unit <i>defined in</i> a.b</li>
6+
<li><b>public</b> <b>fun</b> foo(i: Int): Unit <i>defined in</i> a.b <i>in file</i> overloadResolutionAmbiguityHtml.kt</li>
77
<li><b>public</b> <b>fun</b> <`T> foo(a: kotlin.String, t: ???): Unit <i>defined in</i> a.b</li>
88
</ul>
99
</html>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!-- overloadResolutionAmbiguityTxt1 -->
22
Overload resolution ambiguity:
33
public fun <T> foo(b: a.b.String, t: ???): Unit defined in a.b
4-
public fun foo(i: Int): Unit defined in a.b
4+
public fun foo(i: Int): Unit defined in a.b in file overloadResolutionAmbiguityTxt.kt
55
public fun <T> foo(a: kotlin.String, t: ???): Unit defined in a.b

0 commit comments

Comments
 (0)