title: Playframeworks json Writes implicit requires explicit type, why?
body: <p>This doesn't compile:</p>
  
  <pre><code>package model
  
  import play.api.libs.json._
  
  case class Dog(id: Long, name: String, kind: String) {
  
    def asJson() = Json.toJson(this)
  }
  
  object Dog {
    implicit val writes = Json.writes[Dog]
  }
  </code></pre>
  
  <p>The error:</p>
  
  <pre><code>53. Waiting for source changes... (press enter to interrupt)
  [info] Compiling 1 Scala source to /Users/pablo/projects/mvp/target/scala-2.10/classes...
  [error] /Users/pablo/projects/mvp/app/models/model2.scala:7: No Json deserializer found for type model.Dog. Try to implement an implicit Writes or Format for this type.
  [error]   def asJson() = Json.toJson(this)
  [error]                             ^
  [error] one error found
  [error] (compile:compile) Compilation failed
  </code></pre>
  
  <p>Changing the companion object (note the explicit types):</p>
  
  <pre><code>object Dog {
    implicit val writes: Writes[Dog] = Json.writes[Dog]
  }
  </code></pre>
  
  <p>Fixes the issue. Why is that?</p>