Skip to content

Commit 7b44b16

Browse files
committed
Handle unresolved variance
1 parent 2b9d795 commit 7b44b16

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
@@ -69,6 +69,23 @@ class SearchbarComponent(engine: SearchbarEngine, inkuireEngine: InkuireDelegate
6969
}
7070
loadMoreResults(result.drop(resultsChunkSize))
7171

72+
extension (s: String)
73+
def toHTMLError =
74+
val wrapper = document.createElement("div").asInstanceOf[html.Div]
75+
wrapper.classList.add("scaladoc-searchbar-result")
76+
wrapper.classList.add("monospace")
77+
78+
val resultA = document.createElement("a").asInstanceOf[html.Anchor]
79+
resultA.text = s
80+
81+
val location = document.createElement("span")
82+
location.classList.add("pull-right")
83+
location.classList.add("scaladoc-searchbar-location")
84+
85+
wrapper.appendChild(resultA)
86+
wrapper.appendChild(location)
87+
wrapper
88+
7289
var timeoutHandle: SetTimeoutHandle = null
7390
def handleNewQuery(query: String) =
7491
clearTimeout(timeoutHandle)
@@ -80,9 +97,10 @@ class SearchbarComponent(engine: SearchbarEngine, inkuireEngine: InkuireDelegate
8097
handleNewFluffQuery(matchers)
8198
case BySignature(signature) =>
8299
timeoutHandle = setTimeout(1.second) {
83-
println("Searching")
84100
inkuireEngine.query(query) { (p: PageEntry) =>
85101
resultsDiv.appendChild(p.toHTMLInkuireHack)
102+
} { (s: String) =>
103+
resultsDiv.appendChild(s.toHTMLError)
86104
}
87105
}
88106
}

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)