aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorodersky <odersky@gmail.com>2016-07-19 17:58:11 +0200
committerGitHub <noreply@github.com>2016-07-19 17:58:11 +0200
commit2193100a4617033d75f0b924a5347a02d5e8481d (patch)
treea97f77c04e75f0740a27215fd2f4a9cb1d8aaf83 /src
parent5d6c1020e0dd24c10e2a5827f5b7a89bfa925e09 (diff)
parent6c263447cfaea86979b1e41d687e312204430a33 (diff)
downloaddotty-2193100a4617033d75f0b924a5347a02d5e8481d.tar.gz
dotty-2193100a4617033d75f0b924a5347a02d5e8481d.tar.bz2
dotty-2193100a4617033d75f0b924a5347a02d5e8481d.zip
Merge pull request #1400 from dotty-staging/fix/hk-reduce-typerefs
HK reduction: Remove special-case for typerefs
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/config/Config.scala5
-rw-r--r--src/dotty/tools/dotc/core/TypeApplications.scala19
2 files changed, 9 insertions, 15 deletions
diff --git a/src/dotty/tools/dotc/config/Config.scala b/src/dotty/tools/dotc/config/Config.scala
index a50945108..0949d7fee 100644
--- a/src/dotty/tools/dotc/config/Config.scala
+++ b/src/dotty/tools/dotc/config/Config.scala
@@ -98,9 +98,8 @@ object Config {
final val splitProjections = false
/** If this flag is on, always rewrite an application `S[Ts]` where `S` is an alias for
- * `[Xs] -> U` to `[Xs := Ts]U`. If this flag is off, the rewriting is only done if `S` is a
- * reference to an instantiated parameter. Turning this flag on was observed to
- * give a ~6% speedup on the JUnit test suite.
+ * `[Xs] -> U` to `[Xs := Ts]U`.
+ * Turning this flag on was observed to give a ~6% speedup on the JUnit test suite.
*/
final val simplifyApplications = true
diff --git a/src/dotty/tools/dotc/core/TypeApplications.scala b/src/dotty/tools/dotc/core/TypeApplications.scala
index 314233709..cb11d3fdc 100644
--- a/src/dotty/tools/dotc/core/TypeApplications.scala
+++ b/src/dotty/tools/dotc/core/TypeApplications.scala
@@ -470,18 +470,13 @@ class TypeApplications(val self: Type) extends AnyVal {
case dealiased: TypeLambda =>
def tryReduce =
if (!args.exists(_.isInstanceOf[TypeBounds])) {
- val followAlias = stripped match {
- case stripped: TypeRef =>
- stripped.symbol.is(BaseTypeArg)
- case _ =>
- Config.simplifyApplications && {
- dealiased.resType match {
- case AppliedType(tyconBody, _) =>
- variancesConform(typParams, tyconBody.typeParams)
- // Reducing is safe for type inference, as kind of type constructor does not change
- case _ => false
- }
- }
+ val followAlias = Config.simplifyApplications && {
+ dealiased.resType match {
+ case AppliedType(tyconBody, _) =>
+ variancesConform(typParams, tyconBody.typeParams)
+ // Reducing is safe for type inference, as kind of type constructor does not change
+ case _ => false
+ }
}
if ((dealiased eq stripped) || followAlias) dealiased.instantiate(args)
else HKApply(self, args)