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

unchecked warnings from invisible type parameters

    Details

      Description

      f2 below issues unchecked warnings, none of the others do. Notice the warning is about T, but doesn't materialize unless the type constructor is parameterized (and not if the case class synthesizes it.)

      object Test {
        class Foo[T](val x: T) ; object Foo { def unapply[T](x: Foo[T]) = Some(x.x) }
        def f1[T](x: Foo[T]) = x match { case Foo(y) => y }
        def f2[M[_], T](x: M[T]) = x match { case Foo(y) => y }
      
        case class Bar[T](x: T)
        def f3[T](x: Bar[T]) = x match { case Bar(y) => y }
        def f4[M[_], T](x: M[T]) = x match { case Bar(y) => y }
      }
      // 
      // ./b.scala:4: warning: non variable type-argument T in type pattern Test.Foo[T] is unchecked since it is eliminated by erasure
      //   def f2[M[_], T](x: M[T]) = x match { case Foo(y) => y }
      //                                                ^
      // one warning found
      

        Activity

        Hide
        Jason Zaugg added a comment -
        Show
        Jason Zaugg added a comment - Works now: https://github.com/scala/scala/pull/629

          People

          • Assignee:
            Paul Phillips
            Reporter:
            Paul Phillips
          • Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development