diff options
author | odersky <odersky@gmail.com> | 2016-07-19 17:58:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-19 17:58:11 +0200 |
commit | 2193100a4617033d75f0b924a5347a02d5e8481d (patch) | |
tree | a97f77c04e75f0740a27215fd2f4a9cb1d8aaf83 /src | |
parent | 5d6c1020e0dd24c10e2a5827f5b7a89bfa925e09 (diff) | |
parent | 6c263447cfaea86979b1e41d687e312204430a33 (diff) | |
download | dotty-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.scala | 5 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/TypeApplications.scala | 19 |
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) |