diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-04-09 10:10:06 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-04-09 10:10:06 -0700 |
commit | fc65423d8d6a7548393d212e17c8563cf40bcfc0 (patch) | |
tree | 32dc5e8d37cb0d0c28423bc42eb87f77240fde51 | |
parent | c05d2a41dc9b044370abf9ba1ceaafbb2cde5652 (diff) | |
parent | 2885eb0b2d49c33c707cecd2ee7b9588fe3f76ab (diff) | |
download | scala-fc65423d8d6a7548393d212e17c8563cf40bcfc0.tar.gz scala-fc65423d8d6a7548393d212e17c8563cf40bcfc0.tar.bz2 scala-fc65423d8d6a7548393d212e17c8563cf40bcfc0.zip |
Merge pull request #2367 from vigdorchik/si-6387-revert
Revert "SI-6387 Clones accessor before name expansion"
-rw-r--r-- | src/reflect/scala/reflect/internal/Symbols.scala | 35 | ||||
-rw-r--r-- | test/files/run/t7341.check | 0 | ||||
-rwxr-xr-x | test/files/run/t7341.flags | 1 | ||||
-rwxr-xr-x | test/files/run/t7341.scala | 15 | ||||
-rw-r--r-- | test/pending/run/t6387.check (renamed from test/files/run/t6387.check) | 0 | ||||
-rw-r--r-- | test/pending/run/t6387.scala (renamed from test/files/run/t6387.scala) | 0 |
6 files changed, 27 insertions, 24 deletions
diff --git a/src/reflect/scala/reflect/internal/Symbols.scala b/src/reflect/scala/reflect/internal/Symbols.scala index 7274eeafe0..45c16b7302 100644 --- a/src/reflect/scala/reflect/internal/Symbols.scala +++ b/src/reflect/scala/reflect/internal/Symbols.scala @@ -2538,32 +2538,20 @@ trait Symbols extends api.Symbols { self: SymbolTable => } /** change name by appending $$<fully-qualified-name-of-class `base`> - * Do the same for any accessed symbols or setters/getters. - * If the accessor to be renamed is overriding a base symbol, enter - * a cloned symbol with the original name but without ACCESSOR flag. + * Do the same for any accessed symbols or setters/getters */ override def expandName(base: Symbol) { - def expand(sym: Symbol) { - if ((sym eq NoSymbol) || (sym hasFlag EXPANDEDNAME)) () // skip - else sym setFlag EXPANDEDNAME setName nme.expandedName(sym.name.toTermName, base) - } - def cloneAndExpand(accessor: Symbol) { - val clone = accessor.cloneSymbol(accessor.owner, (accessor.flags | ARTIFACT) & ~ACCESSOR) - expand(accessor) - log(s"Expanded overriding accessor to $accessor, but cloned $clone to preserve override") - accessor.owner.info.decls enter clone - } - def expandAccessor(accessor: Symbol) { - if (accessor.isOverridingSymbol) cloneAndExpand(accessor) else expand(accessor) - } - if (hasAccessorFlag && !isDeferred) { - expand(accessed) - } - else if (hasGetter) { - expandAccessor(getter(owner)) - expandAccessor(setter(owner)) + if (!hasFlag(EXPANDEDNAME)) { + setFlag(EXPANDEDNAME) + if (hasAccessorFlag && !isDeferred) { + accessed.expandName(base) + } + else if (hasGetter) { + getter(owner).expandName(base) + setter(owner).expandName(base) + } + name = nme.expandedName(name.toTermName, base) } - expand(this) } protected def doCookJavaRawInfo() { @@ -3235,7 +3223,6 @@ trait Symbols extends api.Symbols { self: SymbolTable => override def companionModule = NoSymbol override def companionSymbol = NoSymbol override def isSubClass(that: Symbol) = false - override def isOverridingSymbol = false override def filter(cond: Symbol => Boolean) = this override def defString: String = toString override def locationString: String = "" diff --git a/test/files/run/t7341.check b/test/files/run/t7341.check new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/test/files/run/t7341.check diff --git a/test/files/run/t7341.flags b/test/files/run/t7341.flags new file mode 100755 index 0000000000..ae08446055 --- /dev/null +++ b/test/files/run/t7341.flags @@ -0,0 +1 @@ +-Xcheckinit
\ No newline at end of file diff --git a/test/files/run/t7341.scala b/test/files/run/t7341.scala new file mode 100755 index 0000000000..dc526c6c19 --- /dev/null +++ b/test/files/run/t7341.scala @@ -0,0 +1,15 @@ +object Obj { + private var cache: Any = () + def returning(f: () => Unit) = () + def foo { + returning(() => cache = ()) + } + + def apply(): Any = { + cache + } +} + +object Test extends App { + Obj() +} diff --git a/test/files/run/t6387.check b/test/pending/run/t6387.check index 83b33d238d..83b33d238d 100644 --- a/test/files/run/t6387.check +++ b/test/pending/run/t6387.check diff --git a/test/files/run/t6387.scala b/test/pending/run/t6387.scala index bbebb5f511..bbebb5f511 100644 --- a/test/files/run/t6387.scala +++ b/test/pending/run/t6387.scala |