summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-04-05 23:17:52 -0700
committerPaul Phillips <paulp@improving.org>2012-04-06 11:57:42 -0700
commit22c229e4ed2100d662fe05f9a610186ce1ebbb5a (patch)
treedf3fa1536693a92f84ffe8f054de43a0e5e987be /src/compiler
parent72f6f0e57ca490b36cef62a3be2a8b3261476cd2 (diff)
downloadscala-22c229e4ed2100d662fe05f9a610186ce1ebbb5a.tar.gz
scala-22c229e4ed2100d662fe05f9a610186ce1ebbb5a.tar.bz2
scala-22c229e4ed2100d662fe05f9a610186ce1ebbb5a.zip
Style tweaks to b28ece2f4b .
We don't use Option[Symbol].
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/transform/Mixin.scala12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Mixin.scala b/src/compiler/scala/tools/nsc/transform/Mixin.scala
index d0bba1d3c6..ed410a76db 100644
--- a/src/compiler/scala/tools/nsc/transform/Mixin.scala
+++ b/src/compiler/scala/tools/nsc/transform/Mixin.scala
@@ -121,7 +121,7 @@ abstract class Mixin extends InfoTransform with ast.TreeDSL {
* @param member The symbol statically referred to by the superaccessor in the trait
* @param mixinClass The mixin class that produced the superaccessor
*/
- private def rebindSuper(base: Symbol, member: Symbol, mixinClass: Symbol): Option[Symbol] =
+ private def rebindSuper(base: Symbol, member: Symbol, mixinClass: Symbol): Symbol =
afterPickler {
var bcs = base.info.baseClasses.dropWhile(mixinClass !=).tail
var sym: Symbol = NoSymbol
@@ -136,7 +136,7 @@ abstract class Mixin extends InfoTransform with ast.TreeDSL {
sym = member.matchingSymbol(bcs.head, base.thisType).suchThat(sym => !sym.hasFlag(DEFERRED | BRIDGE))
bcs = bcs.tail
}
- if (sym != NoSymbol) Some(sym) else None
+ sym
}
// --------- type transformation -----------------------------------------------
@@ -338,9 +338,13 @@ abstract class Mixin extends InfoTransform with ast.TreeDSL {
else if (mixinMember.isSuperAccessor) { // mixin super accessors
val superAccessor = addMember(clazz, mixinMember.cloneSymbol(clazz)) setPos clazz.pos
assert(superAccessor.alias != NoSymbol, superAccessor)
+
rebindSuper(clazz, mixinMember.alias, mixinClass) match {
- case Some(alias1) => superAccessor.asInstanceOf[TermSymbol] setAlias alias1
- case None => unit.error(clazz.pos, "Member "+ mixinMember.alias +" of mixin "+ mixinClass +" is missing a concrete super implementation.")
+ case NoSymbol =>
+ unit.error(clazz.pos, "Member %s of mixin %s is missing a concrete super implementation.".format(
+ mixinMember.alias, mixinClass))
+ case alias1 =>
+ superAccessor.asInstanceOf[TermSymbol] setAlias alias1
}
}
else if (mixinMember.isMethod && mixinMember.isModule && mixinMember.hasNoFlags(LIFTED | BRIDGE)) {