aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-10-19 15:32:30 +0200
committerMartin Odersky <odersky@gmail.com>2014-10-26 16:24:01 +0100
commit0f3a903bebdac5eeaa84b2f8fdd0298bd15468f2 (patch)
treebaad7c679295ffa079e11be30f7a8650720a12ad /src/dotty/tools/dotc/core
parent8b38acbd349a033ba29285397fb54530a25e16e0 (diff)
downloaddotty-0f3a903bebdac5eeaa84b2f8fdd0298bd15468f2.tar.gz
dotty-0f3a903bebdac5eeaa84b2f8fdd0298bd15468f2.tar.bz2
dotty-0f3a903bebdac5eeaa84b2f8fdd0298bd15468f2.zip
TreeTypeMap needs to map declarations of mapped classes
... and these mappings have to be part of the applied substitutions. Without the patch, the postCondition of FirstTransform fails for TreeInfo.scala and others, because it selects symbols which are not defined in the mapped class. Unrelated bugfix: JavaArray derives from Object.
Diffstat (limited to 'src/dotty/tools/dotc/core')
-rw-r--r--src/dotty/tools/dotc/core/Symbols.scala2
-rw-r--r--src/dotty/tools/dotc/core/Types.scala2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/core/Symbols.scala b/src/dotty/tools/dotc/core/Symbols.scala
index 0174f75cf..cedc0adc8 100644
--- a/src/dotty/tools/dotc/core/Symbols.scala
+++ b/src/dotty/tools/dotc/core/Symbols.scala
@@ -267,7 +267,7 @@ trait Symbols { this: Context =>
* Cross symbol references are brought over from originals to copies.
* Do not copy any symbols if all attributes of all symbols stay the same.
*/
- def mapSymbols(originals: List[Symbol], ttmap: TreeTypeMap) =
+ def mapSymbols(originals: List[Symbol], ttmap: TreeTypeMap): List[Symbol] =
if (originals forall (sym =>
(ttmap.mapType(sym.info) eq sym.info) &&
!(ttmap.oldOwners contains sym.owner)))
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala
index d93e4eb09..33ce71ad3 100644
--- a/src/dotty/tools/dotc/core/Types.scala
+++ b/src/dotty/tools/dotc/core/Types.scala
@@ -116,6 +116,8 @@ object Types {
tp.tp1.derivesFrom(cls) || tp.tp2.derivesFrom(cls)
case tp: OrType =>
tp.tp1.derivesFrom(cls) && tp.tp2.derivesFrom(cls)
+ case tp: JavaArrayType =>
+ cls == defn.ObjectClass
case _ =>
false
}