diff options
author | Martin Odersky <odersky@gmail.com> | 2011-07-12 13:32:33 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2011-07-12 13:32:33 +0000 |
commit | 66862fe9d88b7d6e4036077f584b2cabcdef3ab0 (patch) | |
tree | a15ea410d50d841f215e5fdcd95577e65da5f410 /src/compiler/scala/reflect/internal/ClassfileConstants.scala | |
parent | a10f699d7c443e83472e262ae77a3fe7d9cdc1ba (diff) | |
download | scala-66862fe9d88b7d6e4036077f584b2cabcdef3ab0.tar.gz scala-66862fe9d88b7d6e4036077f584b2cabcdef3ab0.tar.bz2 scala-66862fe9d88b7d6e4036077f584b2cabcdef3ab0.zip |
More work done on implementing reflection.
Diffstat (limited to 'src/compiler/scala/reflect/internal/ClassfileConstants.scala')
-rw-r--r-- | src/compiler/scala/reflect/internal/ClassfileConstants.scala | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/compiler/scala/reflect/internal/ClassfileConstants.scala b/src/compiler/scala/reflect/internal/ClassfileConstants.scala index 0e1671bc1c..839bfe90b8 100644 --- a/src/compiler/scala/reflect/internal/ClassfileConstants.scala +++ b/src/compiler/scala/reflect/internal/ClassfileConstants.scala @@ -329,4 +329,28 @@ object ClassfileConstants { final val breakpoint = 0xca final val impdep1 = 0xfe final val impdep2 = 0xff + + def toScalaFlags(flags: Int, isClass: Boolean): Long = { + import Flags._ + var res = 0l + if ((flags & JAVA_ACC_PRIVATE) != 0) + res = res | PRIVATE + else if ((flags & JAVA_ACC_PROTECTED) != 0) + res = res | PROTECTED + if ((flags & JAVA_ACC_ABSTRACT) != 0 && (flags & JAVA_ACC_ANNOTATION) == 0) + res = res | DEFERRED + if ((flags & JAVA_ACC_FINAL) != 0) + res = res | FINAL + if (((flags & JAVA_ACC_INTERFACE) != 0) && + ((flags & JAVA_ACC_ANNOTATION) == 0)) + res = res | TRAIT | INTERFACE | ABSTRACT + if ((flags & JAVA_ACC_SYNTHETIC) != 0) + res = res | SYNTHETIC + if ((flags & JAVA_ACC_STATIC) != 0) + res = res | STATIC + if (isClass && ((res & DEFERRED) != 0L)) + res = res & ~DEFERRED | ABSTRACT + + res | JAVA + } } |