title: Self-type annotation hinders instantiation of inner class. Why?
body: <p>Given the abstract definitions of the <code>Outer</code> class and its <code>Inner</code> class I would like to instantiate the concrete <code>Inner1</code> class defined within <code>Outer1</code> trait.</p>
  
  <pre><code>abstract class Outer {
    type Inner_Tp &lt;: Inner;
    abstract class Inner {
      self: Inner_Tp =&gt;
    }
  }
  
  trait Outer1 {
    self: Outer =&gt;
    protected class Inner1 extends Inner {
      self: Inner_Tp =&gt;
    }
    def Inner1() = new Inner1()
  }
  </code></pre>
  
  <p>The Scala compiler prematurely terminates the compilation giving me the following error message: "error: class Inner1 cannot be instantiated because it does not conform to its self-type Outer1.this.Inner1 with Outer1.this.Inner_Tp". <strong>Why?</strong></p>
  
  <p>After all the <code>Inner1</code> class is defined within an abstract context being its <code>Outer1</code> trait. I would like to postpone the definition of <code>type Inner_Tp</code> until the trait gets mixed into some concrete class.</p>