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

In-place silent type checking, adaptToMemberWithArgs, filter/withFilter => "erroneous or inaccessible type"

    Details

      Description

      object Test {
        def BrokenMethod(): HasFilter[(Int, String)] = ???
      
        trait HasFilter[B] {
          def filter(p: B => Boolean) = ???
        }
      
        trait HasWithFilter {
          def withFilter = ???
        }
      
        object addWithFilter {
          trait NoImplicit
          implicit def enrich(v: Any)
                             (implicit F0: NoImplicit): HasWithFilter = ???
        }
      
        BrokenMethod().withFilter(_ => true) // okay
        BrokenMethod().filter(_ => true)     // okay
      
        locally {
          import addWithFilter._
          BrokenMethod().withFilter((_: (Int, String)) => true) // okay
        }
      
        locally {
          import addWithFilter._
          // adaptToMemberWithArgs sets the type of the tree `x`
          // to ErrorType (while in silent mode, so the error is not
          // reported. Later, when the fallback from `withFilter`
          // to `filter` is attempted, the closure is taken to have
          // have the type `<error> => Boolean`, which conforms to
          // `(B => Boolean)`. Only later during pickling does the
          // defensive check for erroneous types in the tree pick up
          // the problem.
          BrokenMethod().withFilter(x => true) // erroneous or inaccessible type.
        }
      }
      
      

      This shares a root cause with SI-7223.

      Contrary to my expectation, this code compiles under Scala 2.9.2.

        Issue Links

          Activity

          Show
          Jason Zaugg added a comment - WIP: https://github.com/retronym/scala/compare/ticket/7239 https://scala-webapps.epfl.ch/jenkins/job/scala-checkin-manual/857/console
          Show
          Jason Zaugg added a comment - https://github.com/scala/scala/pull/2253

            People

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

              Dates

              • Created:
                Updated:
                Resolved:

                Development