title: Scala not resolving X as Y, even though X extends Y
body: <p>[See snippet Below]
  I read that I have a X which is a Piece, and I have a Player that requires a Piece. The player Me attempts to define this Piece with Piece X. Yet the Scala does not recognize X as a piece, rather it sees 'X.type'. What does X.type mean? I'm not exactly sure what my problem is so I'm having a hard time searching.</p>
  
  <p>I don't see how this can be type shadowing [ See <a href="https://stackoverflow.com/questions/17090756/scala-really-weird-type-mismatch">Scala really weird Type Mismatch</a> ], since I don't specify another 'Piece', rather I only specify that I require a 'Piece'.</p>
  
  <p>It seems like there is something preventing Scala to resolve X as a Piece.</p>
  
  <p>To try in REPL</p>
  
  <pre><code>trait Piece { val piece: Char }
  case class X extends Piece { val piece: Char = 'X' }
  
  trait Player { val piece: Piece }
  case class Me extends Player { val piece: Piece = X }
  </code></pre>
  
  <p>Result</p>
  
  <pre><code>error: type mismatch;
   found   : X.type
   required: Piece
         case class Max extends Player { val piece: Piece = X }
  </code></pre>