diff options
author | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2013-09-05 13:32:08 -0700 |
---|---|---|
committer | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2013-09-05 13:32:08 -0700 |
commit | 46335e4d7433bfb8e275b4afb3694c7c6d07b767 (patch) | |
tree | 5bcb9cd608f61082ecae6bfd9477a5fdb097c569 /src/reflect/scala/reflect/internal/ExistentialsAndSkolems.scala | |
parent | 5044f1c1e863ca75c6f49462d370e48b51f3e8c7 (diff) | |
parent | d46519da657ada39d9928308709cdb80ddcd53ce (diff) | |
download | scala-46335e4d7433bfb8e275b4afb3694c7c6d07b767.tar.gz scala-46335e4d7433bfb8e275b4afb3694c7c6d07b767.tar.bz2 scala-46335e4d7433bfb8e275b4afb3694c7c6d07b767.zip |
Merge remote-tracking branch 'scala/2.10.x' into merge-2.10.x
Conflicts:
bincompat-backward.whitelist.conf
bincompat-forward.whitelist.conf
src/reflect/scala/reflect/internal/SymbolTable.scala
src/reflect/scala/reflect/internal/util/WeakHashSet.scala
src/reflect/scala/reflect/runtime/JavaMirrors.scala
Diffstat (limited to 'src/reflect/scala/reflect/internal/ExistentialsAndSkolems.scala')
-rw-r--r-- | src/reflect/scala/reflect/internal/ExistentialsAndSkolems.scala | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/ExistentialsAndSkolems.scala b/src/reflect/scala/reflect/internal/ExistentialsAndSkolems.scala index 073f124630..0eeca4aace 100644 --- a/src/reflect/scala/reflect/internal/ExistentialsAndSkolems.scala +++ b/src/reflect/scala/reflect/internal/ExistentialsAndSkolems.scala @@ -19,6 +19,9 @@ trait ExistentialsAndSkolems { * can be deskolemized to the original type parameter. (A skolem is a * representation of a bound variable when viewed inside its scope.) * !!!Adriaan: this does not work for hk types. + * + * Skolems will be created at level 0, rather than the current value + * of `skolemizationLevel`. (See SI-7782) */ def deriveFreshSkolems(tparams: List[Symbol]): List[Symbol] = { class Deskolemizer extends LazyType { @@ -30,7 +33,11 @@ trait ExistentialsAndSkolems { sym setInfo sym.deSkolemize.info.substSym(typeParams, typeSkolems) } } - (new Deskolemizer).typeSkolems + + val saved = skolemizationLevel + skolemizationLevel = 0 + try new Deskolemizer().typeSkolems + finally skolemizationLevel = saved } def isRawParameter(sym: Symbol) = // is it a type parameter leaked by a raw type? |