Scala Programming Language
  1. Scala Programming Language
  2. SI-7983

regression in implicit divergence checking

    Details

      Description

      package foo.bar.baz
      
      class DivergenceTest {
      
        trait ColumnBase[T]
      
        trait ShapeLevel
        trait Flat extends ShapeLevel
        trait Lower extends Flat
      
        class Shape2[Level <: ShapeLevel, -M, U]
      
        implicit final def columnBaseShape[Level >: Flat <: ShapeLevel, T, C <: ColumnBase[_]]
                                          (implicit ev: C <:< ColumnBase[T]
                                          ): Shape2[Level, C, T] = ???
      
        implicit final def intShape[Level <: ShapeLevel, T]: Shape2[Level, Int, Int] = ???
        implicit final def tuple2Shape[Level <: ShapeLevel, M1,M2, U1,U2]
                                      (implicit u1: Shape2[_ <: Level, M1, U1],
                                                u2: Shape2[_ <: Level, M2, U2]
                                      ): Shape2[Level, (M1,M2), (U1,U2)] = ???
      
        def foo {
          class Coffees extends ColumnBase[Int]
      
          def map1[F, T](f: F)(implicit shape: Shape2[_ <: Flat, F, T]) = ???
      
          map1(((1, null: Coffees), 1))
          map1(((null: Coffees, 1), 1)) // fails
        }
      }
      

      Worked in 2.10.x, fails in 2.11 due to a change in `dominates`.

        Activity

        Show
        Jason Zaugg added a comment - https://github.com/scala/scala/pull/3160

          People

          • Assignee:
            Jason Zaugg
            Reporter:
            Jason Zaugg
          • Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development