diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2015-06-07 12:51:51 +0200 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2015-08-11 14:28:05 +1000 |
commit | 658b62a4425ff7b774cd95e3323d9627b5af3c72 (patch) | |
tree | 63cc1a49a574b4f2489171bd0c4e55a169e05b18 /src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala | |
parent | 2bde3928833ae194fc7e2094b8955112b70fd31f (diff) | |
download | scala-658b62a4425ff7b774cd95e3323d9627b5af3c72.tar.gz scala-658b62a4425ff7b774cd95e3323d9627b5af3c72.tar.bz2 scala-658b62a4425ff7b774cd95e3323d9627b5af3c72.zip |
Allow BCode to emit default interface methods
A DefDef owned by a trait may now have have a method body.
Such a method must be emitted without ACC_ABSTRACT, and
with the code attribute.
Tested by intercepting the compile pipeline and adding the
DEFAULTMETHOD flag and a method body before running
the backend.
Diffstat (limited to 'src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala b/src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala index 45d9cc3ff3..88d07ce917 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala @@ -571,7 +571,7 @@ class BTypesFromSymbols[G <: Global](val global: G) extends BTypes { import asm.Opcodes._ GenBCode.mkFlags( if (privateFlag) ACC_PRIVATE else ACC_PUBLIC, - if (sym.isDeferred || sym.hasAbstractFlag) ACC_ABSTRACT else 0, + if ((sym.isDeferred && !sym.hasFlag(symtab.Flags.JAVA_DEFAULTMETHOD))|| sym.hasAbstractFlag) ACC_ABSTRACT else 0, if (sym.isInterface) ACC_INTERFACE else 0, if (finalFlag && !sym.hasAbstractFlag) ACC_FINAL else 0, if (sym.isStaticMember) ACC_STATIC else 0, |