summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2011-03-15 16:18:48 +0000
committerMartin Odersky <odersky@gmail.com>2011-03-15 16:18:48 +0000
commite23435247ba5b1f0073505d90cfd031090c5c565 (patch)
tree21cb45850812a637bea813b04b3c01d948095881
parente6a60a05a11ca365f3cd58d3ec4de92de1d86cde (diff)
downloadscala-e23435247ba5b1f0073505d90cfd031090c5c565.tar.gz
scala-e23435247ba5b1f0073505d90cfd031090c5c565.tar.bz2
scala-e23435247ba5b1f0073505d90cfd031090c5c565.zip
Fixes problem with getLinkPos, which sometimes ...
Fixes problem with getLinkPos, which sometimes failed on first try.
-rw-r--r--src/compiler/scala/tools/nsc/interactive/Global.scala9
-rw-r--r--src/compiler/scala/tools/nsc/transform/Mixin.scala3
2 files changed, 6 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/interactive/Global.scala b/src/compiler/scala/tools/nsc/interactive/Global.scala
index 3fad69821f..fd70907a57 100644
--- a/src/compiler/scala/tools/nsc/interactive/Global.scala
+++ b/src/compiler/scala/tools/nsc/interactive/Global.scala
@@ -71,7 +71,7 @@ class Global(settings: Settings, reporter: Reporter)
SynchronizedMap[AbstractFile, RichCompilationUnit] {
override def put(key: AbstractFile, value: RichCompilationUnit) = {
val r = super.put(key, value)
- if (r.isEmpty) debugLog("added uhnit for "+key)
+ if (r.isEmpty) debugLog("added unit for "+key)
r
}
override def remove(key: AbstractFile) = {
@@ -621,6 +621,7 @@ class Global(settings: Settings, reporter: Reporter)
informIDE("getLinkPos "+sym+" "+source)
respond(response) {
val preExisting = unitOfFile isDefinedAt source.file
+ val originalTypeParams = sym.owner.typeParams
reloadSources(List(source))
parseAndEnter(getUnit(source).get)
val owner = sym.owner
@@ -629,8 +630,8 @@ class Global(settings: Settings, reporter: Reporter)
val newsym = pre.decl(sym.name) filter { alt =>
sym.isType || {
try {
- val tp1 = adaptToNewRunMap(pre.memberType(alt) onTypeError NoType)
- val tp2 = adaptToNewRunMap(sym.tpe)
+ val tp1 = pre.memberType(alt) onTypeError NoType
+ val tp2 = adaptToNewRunMap(sym.tpe) substSym (originalTypeParams, owner.typeParams)
matchesType(tp1, tp2, false)
} catch {
case ex: Throwable =>
@@ -858,7 +859,7 @@ class Global(settings: Settings, reporter: Reporter)
}
}
- /** Parses and enteres given source file, stroring parse tree in response */
+ /** Parses and enters given source file, stroring parse tree in response */
private def getParsedEnteredNow(source: SourceFile, response: Response[Tree]) {
respond(response) {
onUnitOf(source) { unit =>
diff --git a/src/compiler/scala/tools/nsc/transform/Mixin.scala b/src/compiler/scala/tools/nsc/transform/Mixin.scala
index 48742f4fcd..05224ae37b 100644
--- a/src/compiler/scala/tools/nsc/transform/Mixin.scala
+++ b/src/compiler/scala/tools/nsc/transform/Mixin.scala
@@ -1180,8 +1180,7 @@ abstract class Mixin extends InfoTransform with ast.TreeDSL {
assert(args.isEmpty)
val sym1 = sym.overridingSymbol(currentOwner.enclClass)
typedPos(tree.pos)((transformSuper(qual) DOT sym1)())
- }
- else {
+ } else {
staticCall(atPhase(phase.prev)(sym.overridingSymbol(implClass(sym.owner))))
}
} else {