diff options
author | Paul Phillips <paulp@improving.org> | 2012-04-05 23:17:52 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-04-06 11:57:42 -0700 |
commit | 22c229e4ed2100d662fe05f9a610186ce1ebbb5a (patch) | |
tree | df3fa1536693a92f84ffe8f054de43a0e5e987be /src | |
parent | 72f6f0e57ca490b36cef62a3be2a8b3261476cd2 (diff) | |
download | scala-22c229e4ed2100d662fe05f9a610186ce1ebbb5a.tar.gz scala-22c229e4ed2100d662fe05f9a610186ce1ebbb5a.tar.bz2 scala-22c229e4ed2100d662fe05f9a610186ce1ebbb5a.zip |
Style tweaks to b28ece2f4b .
We don't use Option[Symbol].
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Mixin.scala | 12 |
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)) { |