Skip to content

Type#contains is broken for hk types #207

Open
@retronym

Description

@retronym

I tried to fix this in one incarnation of (scala/scala#5263)

But this changed behaviour:

  • Existential extrapolation was fixed, which changes overload resolution, requiring (minor) changes to scalaz.
  • packedType now fails to determine that a captured existential skolem originated from outside the packing scope. The status quo depends on the fact that TypeRef#normalize caches (removing that cache would change behaviour). I was able to restore current behaviour by using the old implementation of contains in one spot in packedType, which restored compatibility with slick.
  • Specs failed with an as-yet-undiagnosed problem.
common/src/main/scala/org/specs2/control/package.scala:44: value >> is not a member of org.specs2.control.package.Action[Unit]
   warn(message) >> ActionT.fail[IO, Logs, Logger, A](failureMessage)
                 ^
common/src/main/scala/org/specs2/control/package.scala:55: value >> is not a member of org.specs2.control.package.Action[Unit]
   log(t.getMessage) >>
                     ^
common/src/main/scala/org/specs2/io/FileSystem.scala:47: value void is not a member of org.specs2.control.Action[Boolean]
   action.andFinally(deleteFile(path).void)
                                      ^
common/src/main/scala/org/specs2/io/FileSystem.scala:51: value void is not a member of org.specs2.control.ActionT[scalaz.effect.IO,org.specs2.control.Logs,org.specs2.control.Logger,Boolean]
   Actions.safe(path.toFile.mkdirs).void

Noting some interaction between #185 and the problem with getting different instances of captured existential skolems from as seen from that makes us rely on the caching of normalize.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions