aboutsummaryrefslogtreecommitdiff
path: root/src/Model
diff options
context:
space:
mode:
Diffstat (limited to 'src/Model')
-rw-r--r--src/Model/DocumentationModel.kt6
-rw-r--r--src/Model/DocumentationNodeBuilder.kt16
-rw-r--r--src/Model/DocumentationResolver.kt10
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