Uploaded image for project: '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
      

        Attachments

          Activity

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

            People

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

              Dates

              • Created:
                Updated:
                Resolved: