Include file name for package-level members in diagnostics

This commit is contained in:
Dmitry Petrov
2017-05-25 13:12:41 +03:00
parent 7979663e6c
commit a86fe89aae
19 changed files with 47 additions and 24 deletions
@@ -16,6 +16,17 @@
package org.jetbrains.kotlin.descriptors;
import org.jetbrains.annotations.Nullable;
public interface SourceFile {
SourceFile NO_SOURCE_FILE = new SourceFile() {};
SourceFile NO_SOURCE_FILE = new SourceFile() {
@Nullable
@Override
public String getName() {
return null;
}
};
@Nullable
String getName();
}
@@ -178,6 +178,7 @@ enum class AnnotationArgumentsRenderingPolicy(
interface DescriptorRendererOptions {
var classifierNamePolicy: ClassifierNamePolicy
var withDefinedIn: Boolean
var withSourceFileForTopLevel: Boolean
var modifiers: Set<DescriptorRendererModifier>
var startFromName: Boolean
var startFromDeclarationKeyword: Boolean
@@ -383,6 +383,14 @@ internal class DescriptorRendererImpl(
append(" ").append(renderMessage("defined in")).append(" ")
val fqName = DescriptorUtils.getFqName(containingDeclaration)
append(if (fqName.isRoot) "root package" else renderFqName(fqName))
if (withSourceFileForTopLevel &&
containingDeclaration is PackageFragmentDescriptor &&
descriptor is DeclarationDescriptorWithSource) {
descriptor.source.containingFile.name?.let { sourceFileName ->
append(" ").append(renderMessage("in file")).append(" ").append(sourceFileName)
}
}
}
}
@@ -67,6 +67,7 @@ internal class DescriptorRendererOptionsImpl : DescriptorRendererOptions {
override var classifierNamePolicy: ClassifierNamePolicy by property(ClassifierNamePolicy.SOURCE_CODE_QUALIFIED)
override var withDefinedIn by property(true)
override var withSourceFileForTopLevel by property(true)
override var modifiers: Set<DescriptorRendererModifier> by property(DescriptorRendererModifier.DEFAULTS)
override var startFromName by property(false)
override var startFromDeclarationKeyword by property(false)