diff options
Diffstat (limited to 'src/Model')
-rw-r--r-- | src/Model/DocumentationModel.kt | 6 | ||||
-rw-r--r-- | src/Model/DocumentationNodeBuilder.kt | 16 | ||||
-rw-r--r-- | src/Model/DocumentationResolver.kt | 10 |
3 files changed, 28 insertions, 4 deletions
diff --git a/src/Model/DocumentationModel.kt b/src/Model/DocumentationModel.kt index aa8d9a6b..83aa911f 100644 --- a/src/Model/DocumentationModel.kt +++ b/src/Model/DocumentationModel.kt @@ -40,8 +40,8 @@ public open class DocumentationNode(val name: String, val scope: JetScope) { private val references = arrayListOf<DocumentationReference>() - public val owner: DocumentationNode - get() = references(DocumentationReferenceKind.Owner).single().to + public val owner: DocumentationNode? + get() = references(DocumentationReferenceKind.Owner).firstOrNull()?.to // TODO: should be singleOrNull, but bugz! public val details: List<DocumentationNode> get() = references(DocumentationReferenceKind.Detail).map { it.to } public val members: List<DocumentationNode> @@ -62,7 +62,7 @@ public open class DocumentationNode(val name: String, public fun allReferences(): List<DocumentationReference> = references public override fun toString(): String { - return "$kind $name" + return "$kind:$name" } } diff --git a/src/Model/DocumentationNodeBuilder.kt b/src/Model/DocumentationNodeBuilder.kt index aa0c4700..d32edbc5 100644 --- a/src/Model/DocumentationNodeBuilder.kt +++ b/src/Model/DocumentationNodeBuilder.kt @@ -19,6 +19,10 @@ class DocumentationNodeBuilder(val context: BindingContext) : DeclarationDescrip override fun visitReceiverParameterDescriptor(descriptor: ReceiverParameterDescriptor?, data: DocumentationNode?): DocumentationNode? { val node = DocumentationNode(descriptor!!.getName().asString(), "", DocumentationNodeKind.Receiver, context.getResolutionScope(descriptor)) data!!.addReferenceTo(node, DocumentationReferenceKind.Detail) + + val typeNode = DocumentationNode(descriptor.getType().toString(), "", DocumentationNodeKind.UpperBound, context.getResolutionScope(descriptor)) + node.addReferenceTo(typeNode, DocumentationReferenceKind.Detail) + node.addReferenceTo(data, DocumentationReferenceKind.Owner) return node } @@ -27,6 +31,10 @@ class DocumentationNodeBuilder(val context: BindingContext) : DeclarationDescrip val doc = context.getDocumentation(descriptor!!) val node = DocumentationNode(descriptor.getName().asString(), doc, DocumentationNodeKind.Parameter, context.getResolutionScope(descriptor)) data!!.addReferenceTo(node, DocumentationReferenceKind.Detail) + + val typeNode = DocumentationNode(descriptor.getType().toString(), "", DocumentationNodeKind.UpperBound, context.getResolutionScope(descriptor)) + node.addReferenceTo(typeNode, DocumentationReferenceKind.Detail) + node.addReferenceTo(data, DocumentationReferenceKind.Owner) return node } @@ -47,6 +55,10 @@ class DocumentationNodeBuilder(val context: BindingContext) : DeclarationDescrip val doc = context.getDocumentation(descriptor!!) val node = DocumentationNode(descriptor.getName().asString(), doc, DocumentationNodeKind.Function, context.getResolutionScope(descriptor)) data!!.addReferenceTo(node, DocumentationReferenceKind.Member) + + val typeNode = DocumentationNode(descriptor.getReturnType().toString(), "", DocumentationNodeKind.UpperBound, context.getResolutionScope(descriptor)) + node.addReferenceTo(typeNode, DocumentationReferenceKind.Detail) + node.addReferenceTo(data, DocumentationReferenceKind.Owner) return node } @@ -76,6 +88,10 @@ class DocumentationNodeBuilder(val context: BindingContext) : DeclarationDescrip val doc = context.getDocumentation(descriptor!!) val node = DocumentationNode(descriptor.getName().asString(), doc, DocumentationNodeKind.Property, context.getResolutionScope(descriptor)) data!!.addReferenceTo(node, DocumentationReferenceKind.Member) + + val typeNode = DocumentationNode(descriptor.getType().toString(), "", DocumentationNodeKind.UpperBound, context.getResolutionScope(descriptor)) + node.addReferenceTo(typeNode, DocumentationReferenceKind.Detail) + node.addReferenceTo(data, DocumentationReferenceKind.Owner) return node } diff --git a/src/Model/DocumentationResolver.kt b/src/Model/DocumentationResolver.kt index e69a70f8..b5b6b1a2 100644 --- a/src/Model/DocumentationResolver.kt +++ b/src/Model/DocumentationResolver.kt @@ -23,10 +23,18 @@ fun DocumentationNode.checkResolve() { } if (symbol == null) - throw IllegalStateException("Cannot resolve $item in $this") + println("WARNING: Cannot resolve $item in ${path(this)}") } for (reference in allReferences().filterNot { it.kind == DocumentationReferenceKind.Owner }) { reference.to.checkResolve() } +} + +fun path(node: DocumentationNode) : String { + val owner = node.owner + if (owner != null) + return "$node in ${path(owner)}" + else + return "$node" }
\ No newline at end of file |