summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2012-10-08 12:27:40 -0700
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2012-10-08 12:27:40 -0700
commit859ec02495993f225647df50397b042a3172351b (patch)
treed6f878c72625849b90123003eb288e68fbd78693 /src
parent6745756926c989c1551267d6dff6888d9d270c8e (diff)
parentd46f2d519de0f155d37a43927fb3924d2f2fbdb2 (diff)
downloadscala-859ec02495993f225647df50397b042a3172351b.tar.gz
scala-859ec02495993f225647df50397b042a3172351b.tar.bz2
scala-859ec02495993f225647df50397b042a3172351b.zip
Merge pull request #1442 from adriaanm/ticket-6215
SI-6215 Fix compiler crash on private method in value class
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala b/src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala
index 8a9d0e58ec..6dd937c0ad 100644
--- a/src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala
+++ b/src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala
@@ -56,11 +56,11 @@ abstract class ExtensionMethods extends Transform with TypingTransformers {
case OverloadedType(_, alts) =>
val index = alts indexOf imeth
assert(index >= 0, alts+" does not contain "+imeth)
- def altName(index: Int) = newTermName("extension"+index+"$"+imeth.name)
+ def altName(index: Int) = newTermName(imeth.name+"$extension"+index)
altName(index) #:: ((0 until alts.length).toStream filter (index != _) map altName)
case tpe =>
assert(tpe != NoType, imeth.name+" not found in "+imeth.owner+"'s decls: "+imeth.owner.info.decls)
- Stream(newTermName("extension$"+imeth.name))
+ Stream(newTermName(imeth.name+"$extension"))
}
}
@@ -68,10 +68,10 @@ abstract class ExtensionMethods extends Transform with TypingTransformers {
*/
def extensionMethod(imeth: Symbol): Symbol = atPhase(currentRun.refchecksPhase) {
val companionInfo = imeth.owner.companionModule.info
- val candidates = extensionNames(imeth) map (companionInfo.decl(_))
+ val candidates = extensionNames(imeth) map (companionInfo.decl(_)) filter (_.exists)
val matching = candidates filter (alt => normalize(alt.tpe, imeth.owner) matches imeth.tpe)
assert(matching.nonEmpty,
- s"no extension method found for $imeth:${imeth.tpe}+among ${candidates map (c => c.name+":"+c.tpe)} / ${extensionNames(imeth)}")
+ s"no extension method found for $imeth:${imeth.tpe} among ${candidates map (c => c.name+":"+c.tpe)} / ${extensionNames(imeth)}")
matching.head
}