From cda84e7f2145673e4e14cb886598fe19cd48585a Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Thu, 28 Jul 2011 23:35:26 +0000 Subject: 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. --- src/compiler/scala/reflect/internal/Symbols.scala | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src') 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) -- cgit v1.2.3