title: Implicit conversions not working with type parameters
body: <p>I am having an issue with implicit conversions not working under certain circumstances (higher kinded types). Given a system, an expression type, and two specific expression sub types:</p>
  
  <pre><code>trait Sys[S &lt;: Sys[S]]
  
  object Expr {
    trait Var  [S &lt;: Sys[S], A] extends Expr[S, A]
    trait Const[S &lt;: Sys[S], A] extends Expr[S, A]
  }
  trait Expr[S &lt;: Sys[S], A]
  </code></pre>
  
  <p>And a pimp class for expression operations:</p>
  
  <pre><code>class RichDoubleExpr[S &lt;: Sys[S]](ex: Expr[S, Double]) {
    def gugu(): String = "yes"
  }
  </code></pre>
  
  <p>Then let there be implicit conversions from primitives to expressions, and from expressions to expression ops:</p>
  
  <pre><code>implicit def const[S &lt;: Sys[S]](d: Double): Expr[S, Double] = 
    new Expr.Const[S, Double] {}
  
  implicit def exprOps[S &lt;: Sys[S], A &lt;% Expr[S, Double]](v: A): RichDoubleExpr[S] = 
    new RichDoubleExpr( v )
  </code></pre>
  
  <p>The following works (thus implicit method <code>const</code>):</p>
  
  <pre><code>3.4.gugu()
  </code></pre>
  
  <p>The following <strong>does not</strong> work (thus implicit method <code>exprOps</code>):</p>
  
  <pre><code>def test[S &lt;: Sys[S]]: String = {
    val v = new Expr.Var[S, Double] {}
    v.gugu()
  }
  </code></pre>
  
  <p>with the following error:</p>
  
  <pre><code>error: No implicit view available from java.lang.Object with
     Expr.Var[S,Double] =&gt; Expr[S,Double].
            v.gugu()
            ^
  </code></pre>
  
  <p>Now, since <code>Expr.Var</code> extends <code>Expr</code> and the type parameters are identical, that error message clearly doesn't make sense to me. Any ideas how to fix this?</p>