mirror of https://github.com/sbt/sbt.git
Properly track 'abstract override' modifier. Ref #726.
This commit is contained in:
parent
0e7d212604
commit
bef8ce05b9
|
|
@ -278,8 +278,10 @@ final class API(val global: CallbackGlobal) extends Compat
|
|||
private def getModifiers(s: Symbol): xsbti.api.Modifiers =
|
||||
{
|
||||
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), hasMacro(s))
|
||||
val absOver = s.hasFlag(ABSOVERRIDE)
|
||||
val abs = s.hasFlag(ABSTRACT) || s.hasFlag(DEFERRED) || absOver
|
||||
val over = s.hasFlag(OVERRIDE) || absOver
|
||||
new xsbti.api.Modifiers(abs, over, s.isFinal, s.hasFlag(SEALED), isImplicit(s), s.hasFlag(LAZY), hasMacro(s))
|
||||
}
|
||||
|
||||
private def isImplicit(s: Symbol) = s.hasFlag(Flags.IMPLICIT)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
trait A {
|
||||
def x: Int
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
trait B extends A {
|
||||
override def x = 2
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
trait C extends A {
|
||||
def x = 5
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
trait D extends C with B
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
trait C extends A {
|
||||
abstract override def x = super.x + 5
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
> compile
|
||||
$ copy-file changes/C2.scala C.scala
|
||||
-> compile
|
||||
Loading…
Reference in New Issue