title: this.type incorrectly compiled?
body: <p>When porting my <a href="http://subscript-lang.org" rel="nofollow">project</a> from Scala 2.10 to 2.11 I got a sudden compilation error with type parametrization. I tried to modify and pinpoint; still something strange went wrong. Could someone explain?
  BTW I was happy with this regression (or progression), since it motivated me to simplify the code.</p>
  
  <pre><code>trait TNode {type N &lt;:  Node {type T = this.type}}
  trait  Node {type T &lt;: TNode {type N = this.type}; def t: T}
  
  trait TNodeCode[R] extends TNode {type N &lt;:  NodeCode[R]; val code: ()=&gt;N=&gt;R}
  trait  NodeCode[R] extends  Node {type T &lt;: TNodeCode[R]}
  
  object Test {
    def executeCode[R](n: Node, code: =&gt;()=&gt;R): R = {null.asInstanceOf[R]}
  
    def executeTCode[N &lt;: NodeCode[R], R](n: N): R = {
      executeCode(n, ()=&gt;n.t.code.apply.apply(n))
      // compile error:                       ^
      //   type mismatch; found: n.type (with underlying type N) required: _1.N where val _1: n.T
    }
  }
  </code></pre>