Avoid copy-paste of Flags.MACRO with source-compatibility trickery.

This commit is contained in:
Jason Zaugg 2012-03-04 19:07:33 +01:00
parent 72e41c3329
commit a1cc62a598
2 changed files with 11 additions and 2 deletions

View File

@ -273,9 +273,9 @@ final class API(val global: Global, val callback: xsbti.AnalysisCallback) extend
}
private def getModifiers(s: Symbol): xsbti.api.Modifiers =
{
import Flags._; val MACRO = 0x00008000 // From Flags.MACRO in 2.10.0+
import Flags._
new xsbti.api.Modifiers(s.hasFlag(ABSTRACT) || s.hasFlag(DEFERRED), s.hasFlag(OVERRIDE),
s.isFinal, s.hasFlag(SEALED), isImplicit(s), s.hasFlag(LAZY), s.hasFlag(MACRO))
s.isFinal, s.hasFlag(SEALED), isImplicit(s), s.hasFlag(LAZY), hasMacro(s))
}
private def isImplicit(s: Symbol) = s.hasFlag(Flags.IMPLICIT)

View File

@ -130,12 +130,21 @@ abstract class Compat
def LOCALCHILD = sourceCompatibilityOnly
def NullaryMethodType = NullaryMethodTpe
def MACRO = DummyValue
}
// in 2.9, NullaryMethodType was added to Type
object NullaryMethodTpe {
def unapply(t: Type): Option[Type] = None
}
val DummyValue = 0
def hasMacro(s: Symbol): Boolean =
{
val MACRO = Flags.MACRO // will be DummyValue for versions before 2.10
MACRO != DummyValue && s.hasFlag(MACRO)
}
private[this] def sourceCompatibilityOnly: Nothing = throw new RuntimeException("For source compatibility only: should not get here.")
private[this] final implicit def miscCompat(n: AnyRef): MiscCompat = new MiscCompat