diff --git a/compile/interface/API.scala b/compile/interface/API.scala index af72e9a66..3c174201f 100644 --- a/compile/interface/API.scala +++ b/compile/interface/API.scala @@ -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) diff --git a/compile/interface/Analyzer.scala b/compile/interface/Analyzer.scala index b4d2dd65d..32c79d764 100644 --- a/compile/interface/Analyzer.scala +++ b/compile/interface/Analyzer.scala @@ -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