diff options
author | Paul Phillips <paulp@improving.org> | 2011-07-28 23:35:26 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-07-28 23:35:26 +0000 |
commit | cda84e7f2145673e4e14cb886598fe19cd48585a (patch) | |
tree | f5c7c65e462f4a22f7b4910cc04f069d77e41f7f | |
parent | 5bbb198b246f43b80dba8f4466862b2ca8b9a9cb (diff) | |
download | scala-cda84e7f2145673e4e14cb886598fe19cd48585a.tar.gz scala-cda84e7f2145673e4e14cb886598fe19cd48585a.tar.bz2 scala-cda84e7f2145673e4e14cb886598fe19cd48585a.zip |
Turned off the notFINAL flag which was applied ...
Turned off the notFINAL flag which was applied to expanded name methods
due to java breakage, on the principle of "first, do no harm." If there
is some rationale why these methods must be made final, let's at least
get it documented. Review by dragos.
-rw-r--r-- | src/compiler/scala/reflect/internal/Symbols.scala | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/compiler/scala/reflect/internal/Symbols.scala b/src/compiler/scala/reflect/internal/Symbols.scala index 91f052af6c..af6b561699 100644 --- a/src/compiler/scala/reflect/internal/Symbols.scala +++ b/src/compiler/scala/reflect/internal/Symbols.scala @@ -1639,9 +1639,15 @@ trait Symbols extends api.Symbols { self: SymbolTable => * term symbol rename it by expanding its name to avoid name clashes */ final def makeNotPrivate(base: Symbol) { - if (this hasFlag PRIVATE) { + if (this.isPrivate) { setFlag(notPRIVATE) - if (isMethod && !isDeferred) setFlag(lateFINAL) + // Marking these methods final causes problems for proxies + // which use subclassing. If people write their code with no + // usage of final, we probably shouldn't introduce it ourselves + // unless we know it is safe. + // + // if (isMethod && !isDeferred) + // setFlag(lateFINAL) if (!isStaticModule && !isClassConstructor) { expandName(base) if (isModule) moduleClass.makeNotPrivate(base) |