diff --git a/compile/interface/src/main/scala/xsbt/API.scala b/compile/interface/src/main/scala/xsbt/API.scala index 52218d145..b64770cb5 100644 --- a/compile/interface/src/main/scala/xsbt/API.scala +++ b/compile/interface/src/main/scala/xsbt/API.scala @@ -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) diff --git a/sbt/src/sbt-test/source-dependencies/abstract-override/A.scala b/sbt/src/sbt-test/source-dependencies/abstract-override/A.scala new file mode 100644 index 000000000..43b95b9e9 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/abstract-override/A.scala @@ -0,0 +1,3 @@ +trait A { + def x: Int +} diff --git a/sbt/src/sbt-test/source-dependencies/abstract-override/B.scala b/sbt/src/sbt-test/source-dependencies/abstract-override/B.scala new file mode 100644 index 000000000..c7569ba51 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/abstract-override/B.scala @@ -0,0 +1,3 @@ +trait B extends A { + override def x = 2 +} \ No newline at end of file diff --git a/sbt/src/sbt-test/source-dependencies/abstract-override/C.scala b/sbt/src/sbt-test/source-dependencies/abstract-override/C.scala new file mode 100644 index 000000000..24d656d4a --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/abstract-override/C.scala @@ -0,0 +1,3 @@ +trait C extends A { + def x = 5 +} \ No newline at end of file diff --git a/sbt/src/sbt-test/source-dependencies/abstract-override/D.scala b/sbt/src/sbt-test/source-dependencies/abstract-override/D.scala new file mode 100644 index 000000000..1f0d0a274 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/abstract-override/D.scala @@ -0,0 +1 @@ +trait D extends C with B \ No newline at end of file diff --git a/sbt/src/sbt-test/source-dependencies/abstract-override/changes/C2.scala b/sbt/src/sbt-test/source-dependencies/abstract-override/changes/C2.scala new file mode 100644 index 000000000..5cb6be980 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/abstract-override/changes/C2.scala @@ -0,0 +1,3 @@ +trait C extends A { + abstract override def x = super.x + 5 +} \ No newline at end of file diff --git a/sbt/src/sbt-test/source-dependencies/abstract-override/test b/sbt/src/sbt-test/source-dependencies/abstract-override/test new file mode 100644 index 000000000..8021d5ce2 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/abstract-override/test @@ -0,0 +1,3 @@ +> compile +$ copy-file changes/C2.scala C.scala +-> compile \ No newline at end of file