Skip to content

Instantly share code, notes, and snippets.

@makoConstruct
Created October 19, 2014 23:28
Show Gist options
  • Save makoConstruct/5434b23757d24f6c072e to your computer and use it in GitHub Desktop.
Save makoConstruct/5434b23757d24f6c072e to your computer and use it in GitHub Desktop.
Results of macro expansions concerning https://github.com/julienrf/play-json-variants/issues/11
//no annotations, executing:
performing macro expansion julienrf.variants.Variants.format[controllers.Application.SA] at source-/home/mako/programming/calf/app/controllers/Application.scala,line-23,offset=545
play.api.libs.json.Format[SA](play.api.libs.json.Reads[SA](((json) => json.$bslash(Impl.this.defaultDiscriminator).validate[String].flatMap(<empty> match {
}))), play.api.libs.json.Writes[SA](<empty> match {
}))
Apply(TypeApply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Format")), List(Ident(controllers.Application.SA))), List(Apply(TypeApply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Reads")), List(Ident(controllers.Application.SA))), List(Function(List(ValDef(Modifiers(PARAM), newTermName("json"), TypeTree(), EmptyTree)), Apply(Select(TypeApply(Select(Apply(Select(Ident(newTermName("json")), newTermName("$bslash")), List(Select(This(newTypeName("Impl")), newTermName("defaultDiscriminator")))), newTermName("validate")), List(Ident(newTypeName("String")))), newTermName("flatMap")), List(Match(EmptyTree, List())))))), Apply(TypeApply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Writes")), List(Ident(controllers.Application.SA))), List(Match(EmptyTree, List())))))
performing macro expansion julienrf.variants.Variants.format[controllers.Application.SB] at source-/home/mako/programming/calf/app/controllers/Application.scala,line-28,offset=688
play.api.libs.json.Format[SB](play.api.libs.json.Reads[SB](((json) => json.$bslash(Impl.this.defaultDiscriminator).validate[String].flatMap(<empty> match {
}))), play.api.libs.json.Writes[SB](<empty> match {
}))
Apply(TypeApply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Format")), List(Ident(controllers.Application.SB))), List(Apply(TypeApply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Reads")), List(Ident(controllers.Application.SB))), List(Function(List(ValDef(Modifiers(PARAM), newTermName("json"), TypeTree(), EmptyTree)), Apply(Select(TypeApply(Select(Apply(Select(Ident(newTermName("json")), newTermName("$bslash")), List(Select(This(newTypeName("Impl")), newTermName("defaultDiscriminator")))), newTermName("validate")), List(Ident(newTypeName("String")))), newTermName("flatMap")), List(Match(EmptyTree, List())))))), Apply(TypeApply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Writes")), List(Ident(controllers.Application.SB))), List(Match(EmptyTree, List())))))
//annotations, not executing:
performing macro expansion julienrf.variants.Variants.format[controllers.Application.SA] at source-/home/mako/programming/calf/app/controllers/Application.scala,line-23,offset=556
play.api.libs.json.Format[SA](play.api.libs.json.Reads[SA](((json) => json.$bslash(Impl.this.defaultDiscriminator).validate[String].flatMap(<empty> match {
case "Saone" => play.api.libs.json.Json.fromJson(json)(play.api.libs.json.Json.reads[Saone])
}))), play.api.libs.json.Writes[SA](<empty> match {
case ($1$ @ (_: Saone)) => play.api.libs.json.Json.toJson($1$)(play.api.libs.json.Json.writes[Saone]).as[play.api.libs.json.JsObject].$plus(Impl.this.defaultDiscriminator.$minus$greater(play.api.libs.json.JsString("Saone")))
}))
Apply(TypeApply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Format")), List(Ident(controllers.Application.SA))), List(Apply(TypeApply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Reads")), List(Ident(controllers.Application.SA))), List(Function(List(ValDef(Modifiers(PARAM), newTermName("json"), TypeTree(), EmptyTree)), Apply(Select(TypeApply(Select(Apply(Select(Ident(newTermName("json")), newTermName("$bslash")), List(Select(This(newTypeName("Impl")), newTermName("defaultDiscriminator")))), newTermName("validate")), List(Ident(newTypeName("String")))), newTermName("flatMap")), List(Match(EmptyTree, List(CaseDef(Literal(Constant("Saone")), EmptyTree, Apply(Apply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Json")), newTermName("fromJson")), List(Ident(newTermName("json")))), List(TypeApply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Json")), newTermName("reads")), List(Ident(controllers.Application.Saone))))))))))))), Apply(TypeApply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Writes")), List(Ident(controllers.Application.SA))), List(Match(EmptyTree, List(CaseDef(Bind(newTermName("$1$"), Typed(Ident(nme.WILDCARD), Ident(controllers.Application.Saone))), EmptyTree, Apply(Select(TypeApply(Select(Apply(Apply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Json")), newTermName("toJson")), List(Ident(newTermName("$1$")))), List(TypeApply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Json")), newTermName("writes")), List(Ident(controllers.Application.Saone))))), newTermName("as")), List(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTypeName("JsObject")))), newTermName("$plus")), List(Apply(Select(Select(This(newTypeName("Impl")), newTermName("defaultDiscriminator")), newTermName("$minus$greater")), List(Apply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("JsString")), List(Literal(Constant("Saone")))))))))))))))
performing macro expansion play.api.libs.json.Json.reads[controllers.Application.Saone] at source-/home/mako/programming/calf/app/controllers/Application.scala,line-23,offset=556
{
import play.api.libs.functional.syntax._;
play.api.libs.json.JsPath.$bslash("a").read(json.this.Reads.IntReads).map(((a) => Saone.apply(a)))
}
Block(List(Import(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("functional")), newTermName("syntax")), List(ImportSelector(nme.WILDCARD, -1, null, -1)))), Apply(Select(Apply(Select(Apply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("JsPath")), newTermName("$bslash")), List(Literal(Constant("a")))), newTermName("read")), List(Select(Select(This(newTypeName("json")), play.api.libs.json.Reads), newTermName("IntReads")))), newTermName("map")), List(Function(List(ValDef(Modifiers(PARAM), newTermName("a"), TypeTree(), EmptyTree)), Apply(Select(Ident(newTermName("Saone")), newTermName("apply")), List(Ident(newTermName("a"))))))))
performing macro expansion play.api.libs.json.Json.writes[controllers.Application.Saone] at source-/home/mako/programming/calf/app/controllers/Application.scala,line-23,offset=556
{
import play.api.libs.functional.syntax._;
play.api.libs.json.JsPath.$bslash("a").write(json.this.Writes.IntWrites).contramap(play.api.libs.functional.syntax.unlift(Saone.unapply))
}
Block(List(Import(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("functional")), newTermName("syntax")), List(ImportSelector(nme.WILDCARD, -1, null, -1)))), Apply(Select(Apply(Select(Apply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("JsPath")), newTermName("$bslash")), List(Literal(Constant("a")))), newTermName("write")), List(Select(Select(This(newTypeName("json")), play.api.libs.json.Writes), newTermName("IntWrites")))), newTermName("contramap")), List(Apply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("functional")), newTermName("syntax")), newTermName("unlift")), List(Select(Ident(newTermName("Saone")), newTermName("unapply")))))))
performing macro expansion julienrf.variants.Variants.format[controllers.Application.SB] at source-/home/mako/programming/calf/app/controllers/Application.scala,line-28,offset=710
play.api.libs.json.Format[SB](play.api.libs.json.Reads[SB](((json) => json.$bslash(Impl.this.defaultDiscriminator).validate[String].flatMap(<empty> match {
case "Sbone" => play.api.libs.json.Json.fromJson(json)(play.api.libs.json.Json.reads[Sbone])
case "Sbomo" => play.api.libs.json.Json.fromJson(json)(play.api.libs.json.Json.reads[Sbomo])
}))), play.api.libs.json.Writes[SB](<empty> match {
case ($2$ @ (_: Sbone)) => play.api.libs.json.Json.toJson($2$)(play.api.libs.json.Json.writes[Sbone]).as[play.api.libs.json.JsObject].$plus(Impl.this.defaultDiscriminator.$minus$greater(play.api.libs.json.JsString("Sbone")))
case ($3$ @ (_: Sbomo)) => play.api.libs.json.Json.toJson($3$)(play.api.libs.json.Json.writes[Sbomo]).as[play.api.libs.json.JsObject].$plus(Impl.this.defaultDiscriminator.$minus$greater(play.api.libs.json.JsString("Sbomo")))
}))
Apply(TypeApply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Format")), List(Ident(controllers.Application.SB))), List(Apply(TypeApply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Reads")), List(Ident(controllers.Application.SB))), List(Function(List(ValDef(Modifiers(PARAM), newTermName("json"), TypeTree(), EmptyTree)), Apply(Select(TypeApply(Select(Apply(Select(Ident(newTermName("json")), newTermName("$bslash")), List(Select(This(newTypeName("Impl")), newTermName("defaultDiscriminator")))), newTermName("validate")), List(Ident(newTypeName("String")))), newTermName("flatMap")), List(Match(EmptyTree, List(CaseDef(Literal(Constant("Sbone")), EmptyTree, Apply(Apply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Json")), newTermName("fromJson")), List(Ident(newTermName("json")))), List(TypeApply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Json")), newTermName("reads")), List(Ident(controllers.Application.Sbone)))))), CaseDef(Literal(Constant("Sbomo")), EmptyTree, Apply(Apply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Json")), newTermName("fromJson")), List(Ident(newTermName("json")))), List(TypeApply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Json")), newTermName("reads")), List(Ident(controllers.Application.Sbomo))))))))))))), Apply(TypeApply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Writes")), List(Ident(controllers.Application.SB))), List(Match(EmptyTree, List(CaseDef(Bind(newTermName("$2$"), Typed(Ident(nme.WILDCARD), Ident(controllers.Application.Sbone))), EmptyTree, Apply(Select(TypeApply(Select(Apply(Apply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Json")), newTermName("toJson")), List(Ident(newTermName("$2$")))), List(TypeApply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Json")), newTermName("writes")), List(Ident(controllers.Application.Sbone))))), newTermName("as")), List(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTypeName("JsObject")))), newTermName("$plus")), List(Apply(Select(Select(This(newTypeName("Impl")), newTermName("defaultDiscriminator")), newTermName("$minus$greater")), List(Apply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("JsString")), List(Literal(Constant("Sbone"))))))))), CaseDef(Bind(newTermName("$3$"), Typed(Ident(nme.WILDCARD), Ident(controllers.Application.Sbomo))), EmptyTree, Apply(Select(TypeApply(Select(Apply(Apply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Json")), newTermName("toJson")), List(Ident(newTermName("$3$")))), List(TypeApply(Select(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("Json")), newTermName("writes")), List(Ident(controllers.Application.Sbomo))))), newTermName("as")), List(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTypeName("JsObject")))), newTermName("$plus")), List(Apply(Select(Select(This(newTypeName("Impl")), newTermName("defaultDiscriminator")), newTermName("$minus$greater")), List(Apply(Select(Select(Select(Select(Ident(newTermName("play")), newTermName("api")), newTermName("libs")), newTermName("json")), newTermName("JsString")), List(Literal(Constant("Sbomo")))))))))))))))
performing macro expansion play.api.libs.json.Json.reads[controllers.Application.Sbone] at source-/home/mako/programming/calf/app/controllers/Application.scala,line-28,offset=710
macro expansion has failed: No implicit Reads for controllers.Application.Saone available.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment