Skip to content

Commit fdf2946

Browse files
committed
Handle unresolved variance
1 parent 8ea8c9a commit fdf2946

File tree

4 files changed

+30
-7
lines changed

4 files changed

+30
-7
lines changed

scaladoc-js/src/searchbar/SearchbarComponent.scala

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,23 @@ class SearchbarComponent(engine: SearchbarEngine, inkuireEngine: InkuireDelegate
7474
}
7575
loadMoreResults(result.drop(resultsChunkSize))
7676

77+
extension (s: String)
78+
def toHTMLError =
79+
val wrapper = document.createElement("div").asInstanceOf[html.Div]
80+
wrapper.classList.add("scaladoc-searchbar-result")
81+
wrapper.classList.add("monospace")
82+
83+
val resultA = document.createElement("a").asInstanceOf[html.Anchor]
84+
resultA.text = s
85+
86+
val location = document.createElement("span")
87+
location.classList.add("pull-right")
88+
location.classList.add("scaladoc-searchbar-location")
89+
90+
wrapper.appendChild(resultA)
91+
wrapper.appendChild(location)
92+
wrapper
93+
7794
var timeoutHandle: SetTimeoutHandle = null
7895
def handleNewQuery(query: String) =
7996
clearTimeout(timeoutHandle)
@@ -85,9 +102,10 @@ class SearchbarComponent(engine: SearchbarEngine, inkuireEngine: InkuireDelegate
85102
handleNewFluffQuery(matchers)
86103
case BySignature(signature) =>
87104
timeoutHandle = setTimeout(1.second) {
88-
println("Searching")
89105
inkuireEngine.query(query) { (p: PageEntry) =>
90106
resultsDiv.appendChild(p.toHTMLInkuireHack)
107+
} { (s: String) =>
108+
resultsDiv.appendChild(s.toHTMLError)
91109
}
92110
}
93111
}

scaladoc-js/src/searchbar/engine/InkuireDelegateSearchEngine.scala

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class InkuireDelegateSearchEngine {
3434
val ec2 = "https://pmfyy2t0sc.execute-api.eu-central-1.amazonaws.com/prod" //TODO configure
3535

3636
private def getURLContent(url: String): Future[String] = Ajax.get(url).map(_.responseText).fallbackTo(Future("[]"))
37-
37+
3838
def dynamicToPageEntry(d: Dynamic): PageEntry =
3939
PageEntry(
4040
d.functionName.asInstanceOf[String],
@@ -44,10 +44,11 @@ class InkuireDelegateSearchEngine {
4444
List.empty
4545
)
4646

47-
def query(s: String)(callback: PageEntry => Node): Unit = {
47+
def query(s: String)(callback: PageEntry => Node)(errorCallback: String => Node): Unit = { //TODO handle errors
4848
val signature = URIUtils.encodeURIComponent(s)
49-
getURLContent(ec2 + "/forSignature?signature=" + signature).map(JSON.parse(_)).foreach { (d: Dynamic) =>
50-
d.matches.asInstanceOf[js.Array[Dynamic]].map(dynamicToPageEntry).foreach(callback)
49+
val request = getURLContent(ec2 + "/forSignature?signature=" + signature)
50+
request.foreach { (s: String) =>
51+
JSON.parse(s).matches.asInstanceOf[js.Array[Dynamic]].map(dynamicToPageEntry).foreach(callback)
5152
}
5253
}
5354

scaladoc/src/dotty/tools/scaladoc/Inkuire.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,11 @@ object Inkuire {
159159
("typ", serialize(v.typ)),
160160
("variancekind", serialize("contravariance"))
161161
)
162-
case _: UnresolvedVariance => serialize("KAWABANGA")
162+
case _: UnresolvedVariance =>
163+
jsonObject(
164+
("typ", serialize(v.typ)),
165+
("variancekind", serialize("unresolved"))
166+
)
163167
}
164168

165169
private def serialize(e: ExternalSignature): JSON = {

scaladoc/src/dotty/tools/scaladoc/tasty/InkuireSupport.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ trait InkuireSupport:
4444
given SymbolSyntaxInkuire: AnyRef with
4545
extension (symbol: Symbol)
4646
def itid(using dctx: DocContext): Option[Inkuire.ITID] = Some(Inkuire.ITID(symbol.dri.symbolUUID, isParsed = false))
47-
47+
4848
given TypeSyntaxInkuire: AnyRef with
4949
extension (tpe: TypeRepr)
5050
def asInkuire(vars: Set[String]): Inkuire.Type = inner(tpe, vars)

0 commit comments

Comments
 (0)