aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIlya Ryzhenkov <orangy@jetbrains.com>2014-07-11 20:07:35 +0400
committerIlya Ryzhenkov <orangy@jetbrains.com>2014-07-11 20:07:35 +0400
commitcc008898485627a805c8275dede9883529712cb9 (patch)
treef4759bbb7f751336b22755689971a27468eeca40 /src
parente4a6e2d908b285a3a92a65d99322f810fb5ff37d (diff)
downloaddokka-cc008898485627a805c8275dede9883529712cb9.tar.gz
dokka-cc008898485627a805c8275dede9883529712cb9.tar.bz2
dokka-cc008898485627a805c8275dede9883529712cb9.zip
Process properties in classes without accessors
Diffstat (limited to 'src')
-rw-r--r--src/CompilerAPI.kt9
-rw-r--r--src/DocumentationBuilder.kt13
-rw-r--r--src/DocumentationBuildingVisitor.kt20
-rw-r--r--src/DocumentationModel.kt1
4 files changed, 34 insertions, 9 deletions
diff --git a/src/CompilerAPI.kt b/src/CompilerAPI.kt
index 756cd915..3429aeae 100644
--- a/src/CompilerAPI.kt
+++ b/src/CompilerAPI.kt
@@ -12,6 +12,7 @@ import com.intellij.psi.*
import org.jetbrains.jet.lang.resolve.*
import org.jetbrains.jet.lang.psi.*
import org.jetbrains.jet.analyzer.*
+import org.jetbrains.jet.lang.descriptors.*
private fun getAnnotationsPath(paths: KotlinPaths, arguments: K2JVMCompilerArguments): MutableList<File> {
val annotationsPath = arrayListOf<File>()
@@ -51,3 +52,11 @@ private fun JetCoreEnvironment.analyze(messageCollector: MessageCollector): Bind
fun AnalyzerWithCompilerReport.analyzeAndReport(files: List<JetFile>, analyser: () -> AnalyzeExhaust) = analyzeAndReport(analyser, files)
fun BindingContext.getPackageFragment(file: JetFile) = get(BindingContext.FILE_TO_PACKAGE_FRAGMENT, file)
+
+fun DeclarationDescriptor.isUserCode() =
+ when (this) {
+ is PackageFragmentDescriptor -> false
+ is PropertyAccessorDescriptor -> !isDefault()
+ is CallableMemberDescriptor -> getKind() == CallableMemberDescriptor.Kind.DECLARATION
+ else -> true
+ }
diff --git a/src/DocumentationBuilder.kt b/src/DocumentationBuilder.kt
index 8b33e2b9..b82049a5 100644
--- a/src/DocumentationBuilder.kt
+++ b/src/DocumentationBuilder.kt
@@ -46,6 +46,19 @@ class DocumentationBuilderVisitor(val context : BindingContext) : DeclarationDes
return node
}
+ override fun visitPropertyDescriptor(descriptor: PropertyDescriptor?, data: DocumentationNode?): DocumentationNode? {
+ val doc = context.getDocumentation(descriptor!!).extractText()
+ val node = DocumentationNode(descriptor.getName().asString(), doc, DocumentationNodeKind.Property)
+ data?.addReferenceTo(node, DocumentationReferenceKind.Member)
+ return node
+ }
+
+ override fun visitConstructorDescriptor(descriptor: ConstructorDescriptor?, data: DocumentationNode?): DocumentationNode? {
+ val doc = context.getDocumentation(descriptor!!).extractText()
+ val node = DocumentationNode(descriptor.getName().asString(), doc, DocumentationNodeKind.Constructor)
+ data?.addReferenceTo(node, DocumentationReferenceKind.Member)
+ return node
+ }
override fun visitPackageFragmentDescriptor(descriptor: PackageFragmentDescriptor?, data: DocumentationNode?): DocumentationNode? {
val node = DocumentationNode(descriptor!!.fqName.asString(), "", DocumentationNodeKind.Package)
diff --git a/src/DocumentationBuildingVisitor.kt b/src/DocumentationBuildingVisitor.kt
index f6a3156a..4f76ed0e 100644
--- a/src/DocumentationBuildingVisitor.kt
+++ b/src/DocumentationBuildingVisitor.kt
@@ -8,12 +8,14 @@ class DocumentationBuildingVisitor(private val worker: DeclarationDescriptorVisi
private fun visitChildren(descriptors: Collection<DeclarationDescriptor>, data: DocumentationNode) {
for (descriptor in descriptors) {
- descriptor.accept(this, data)
+ if (descriptor.isUserCode())
+ descriptor.accept(this, data)
}
}
- private fun visitChildren(descriptor: DeclarationDescriptor?, data: DocumentationNode) {
- descriptor?.accept(this, data)
+ private fun visitChild(descriptor: DeclarationDescriptor?, data: DocumentationNode) {
+ if (descriptor != null && descriptor.isUserCode())
+ descriptor.accept(this, data)
}
private fun createDocumentation(descriptor: DeclarationDescriptor, data: DocumentationNode): DocumentationNode {
@@ -23,7 +25,7 @@ class DocumentationBuildingVisitor(private val worker: DeclarationDescriptorVisi
private fun processCallable(descriptor: CallableDescriptor, data: DocumentationNode): DocumentationNode {
val node = createDocumentation(descriptor, data)
visitChildren(descriptor.getTypeParameters(), node)
- visitChildren(descriptor.getReceiverParameter(), node)
+ visitChild(descriptor.getReceiverParameter(), node)
visitChildren(descriptor.getValueParameters(), node)
return node
}
@@ -47,8 +49,8 @@ class DocumentationBuildingVisitor(private val worker: DeclarationDescriptorVisi
public override fun visitPropertyDescriptor(descriptor: PropertyDescriptor?, data: DocumentationNode?): DocumentationNode? {
val node = processCallable(descriptor!!, data!!)
- visitChildren(descriptor.getGetter(), node)
- visitChildren(descriptor.getSetter(), node)
+ visitChild(descriptor.getGetter(), node)
+ visitChild(descriptor.getSetter(), node)
return node
}
@@ -66,9 +68,9 @@ class DocumentationBuildingVisitor(private val worker: DeclarationDescriptorVisi
val node = createDocumentation(descriptor!!, data!!)
visitChildren(descriptor.getConstructors(), node)
visitChildren(descriptor.getTypeConstructor().getParameters(), node)
- visitChildren(descriptor.getClassObjectDescriptor(), node)
+ visitChild(descriptor.getClassObjectDescriptor(), node)
val members = descriptor.getDefaultType().getMemberScope().getAllDescriptors().filter {
- it !is CallableMemberDescriptor || it.getKind().isReal()
+ it !is CallableMemberDescriptor || it.isUserCode()
}
visitChildren(members, node)
return node
@@ -76,7 +78,7 @@ class DocumentationBuildingVisitor(private val worker: DeclarationDescriptorVisi
public override fun visitModuleDeclaration(descriptor: ModuleDescriptor?, data: DocumentationNode?): DocumentationNode? {
val node = createDocumentation(descriptor!!, data!!)
- visitChildren(descriptor.getPackage(FqName.ROOT), node)
+ visitChild(descriptor.getPackage(FqName.ROOT), node)
return node
}
diff --git a/src/DocumentationModel.kt b/src/DocumentationModel.kt
index feddccde..048f3e4e 100644
--- a/src/DocumentationModel.kt
+++ b/src/DocumentationModel.kt
@@ -8,6 +8,7 @@ public enum class DocumentationNodeKind {
Package
Class
+ Constructor
Function
Property
Parameter