Skip to content

Commit

Permalink
Added more variants to achieve getLinkPos
Browse files Browse the repository at this point in the history
getLinkPos is known to be flakey. This commit tries some variants and logs what failed.
(cherry picked from commit 848756d)

Conflicts:

	src/compiler/scala/tools/nsc/interactive/Global.scala
  • Loading branch information
odersky authored and dragos committed Sep 3, 2012
1 parent 6abd9f5 commit dc1e21e
Showing 1 changed file with 18 additions and 5 deletions.
23 changes: 18 additions & 5 deletions src/compiler/scala/tools/nsc/interactive/Global.scala
Expand Up @@ -747,13 +747,23 @@ class Global(settings: Settings, reporter: Reporter, projectName: String = "")
val originalTypeParams = sym.owner.typeParams
parseAndEnter(unit)
val pre = adaptToNewRunMap(ThisType(sym.owner))
val newsym = pre.typeSymbol.info.decl(sym.name) filter { alt =>
val rawsym = pre.typeSymbol.info.decl(sym.name)
val newsym = rawsym filter { alt =>
sym.isType || {
try {
val tp1 = pre.memberType(alt) onTypeError NoType
val tp2 = adaptToNewRunMap(sym.tpe) substSym (originalTypeParams, sym.owner.typeParams)
matchesType(tp1, tp2, false)
} catch {
matchesType(tp1, tp2, false) || {
debugLog("getLinkPos matchesType(" + tp1 + ", " + tp2 + ") failed")
val tp3 = adaptToNewRunMap(sym.tpe) substSym (originalTypeParams, alt.owner.typeParams)
matchesType(tp1, tp3, false) || {
debugLog("getLinkPos fallback matchesType(" + tp1 + ", " + tp3 + ") failed")
false
}
}
}
catch {
case ex: ControlThrowable => throw ex
case ex: Throwable =>
println("error in hyperlinking: " + ex)
ex.printStackTrace()
Expand All @@ -762,8 +772,11 @@ class Global(settings: Settings, reporter: Reporter, projectName: String = "")
}
}
if (newsym == NoSymbol) {
debugLog("link not found " + sym + " " + source + " " + pre)
NoPosition
if (rawsym.exists && !rawsym.isOverloaded) rawsym.pos
else {
debugLog("link not found " + sym + " " + source + " " + pre)
NoPosition
}
} else if (newsym.isOverloaded) {
settings.uniqid.value = true
debugLog("link ambiguous " + sym + " " + source + " " + pre + " " + newsym.alternatives)
Expand Down

0 comments on commit dc1e21e

Please sign in to comment.