aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Types.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-07-22 18:43:24 +0200
committerMartin Odersky <odersky@gmail.com>2014-07-22 18:43:24 +0200
commitababb2ce2675619c997cb4bfa143b454e4076850 (patch)
treee2d22d801e06e046e2f18a51705eee5d332e1d52 /src/dotty/tools/dotc/core/Types.scala
parente8d2733c3e496d811bb1002418b08ba1abe3ee8b (diff)
downloaddotty-ababb2ce2675619c997cb4bfa143b454e4076850.tar.gz
dotty-ababb2ce2675619c997cb4bfa143b454e4076850.tar.bz2
dotty-ababb2ce2675619c997cb4bfa143b454e4076850.zip
Defined substitution which follows aliases
Used in FullParameterization to substitute type parameters. Fixes test failure for t2399.scala
Diffstat (limited to 'src/dotty/tools/dotc/core/Types.scala')
-rw-r--r--src/dotty/tools/dotc/core/Types.scala13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala
index 1d1c326a0..8149cce78 100644
--- a/src/dotty/tools/dotc/core/Types.scala
+++ b/src/dotty/tools/dotc/core/Types.scala
@@ -818,10 +818,17 @@ object Types {
}
}
-/* Not needed yet:
+ /** Same as `subst` but follows aliases as a fallback. When faced with a reference
+ * to an alias type, where normal substiution does not yield a new type, the
+ * substitution is instead applied to the alias. If that yields a new type,
+ * this type is returned, outherwise the original type (not the alias) is returned.
+ * A use case for this method is if one wants to substitute the type parameters
+ * of a class and also wants to substitute any parameter accessors that alias
+ * the type parameters.
+ */
final def substDealias(from: List[Symbol], to: List[Type])(implicit ctx: Context): Type =
- new ctx.SubstDealiasMap(from, to).apply(this)
-*/
+ ctx.substDealias(this, from, to, null)
+
/** Substitute all types of the form `PolyParam(from, N)` by
* `PolyParam(to, N)`.
*/