Skip to content

Commit

Permalink
Merge pull request #4 from guardian/ld/add-implicit-return-types
Browse files Browse the repository at this point in the history
Add implicit return types
  • Loading branch information
rtyley authored Nov 8, 2024
2 parents 1ae113b + e86e65f commit 9af218a
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 56 deletions.
3 changes: 2 additions & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ libraryDependencies ++= Seq(
scalacOptions ++= Seq(
"-release:11",
"-feature", "-deprecation", "-unchecked",
"-language:experimental.macros"
"-language:experimental.macros",
"-Xfatal-warnings"
)

Test / testOptions +=
Expand Down
16 changes: 8 additions & 8 deletions src/main/scala/play-json.scala
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ package object internals {
b += elem
}
}
b.result
b.result()
}
}
}
Expand Down Expand Up @@ -197,7 +197,7 @@ private[json] class Macros( val c: blackbox.Context ) {
"""
} else if ( isCaseClass( T ) && caseClassFieldsTypes( T ).size == 1 ) {
val ArgType = caseClassFieldsTypes( T ).head._2
val name = TermName( c.freshName )
val name = TermName( c.freshName() )
q"""
implicit def $name = $pkg.Jsonx.formatAuto[$ArgType]
$pkg.Jsonx.formatInline[$T]
Expand All @@ -206,7 +206,7 @@ private[json] class Macros( val c: blackbox.Context ) {
val fieldFormatters = caseClassFieldsTypes( T ).map {
case ( _, t ) => t
}.toVector.distinctWith( _ =:= _ ).map { t =>
val name = TermName( c.freshName )
val name = TermName( c.freshName() )
q"implicit def $name = $pkg.Jsonx.formatAuto[$t]"
}
val t = q"""
Expand All @@ -216,7 +216,7 @@ private[json] class Macros( val c: blackbox.Context ) {
t
} else if ( T.typeSymbol.isClass && T.typeSymbol.asClass.isSealed && T.typeSymbol.asClass.isAbstract ) {
val fieldFormatters = T.typeSymbol.asClass.knownDirectSubclasses.map { t =>
val name = TermName( c.freshName )
val name = TermName( c.freshName() )
q"implicit def $name = Jsonx.formatAuto[$t]"
}
q"""
Expand Down Expand Up @@ -286,7 +286,7 @@ private[json] class Macros( val c: blackbox.Context ) {
}
val ( results, mkResults ) = caseClassFieldsTypes( T ).map {
case ( k, t ) =>
val name = TermName( c.freshName )
val name = TermName( c.freshName() )
val path = q"""(json \ (encoder.encode($k)))"""
val result = q"""{
import $pkg._
Expand Down Expand Up @@ -460,9 +460,9 @@ object SingletonEncoder {
)
)
def decodeName( name: String ) = NameTransformer.decode( name.dropRight( 1 ) )
implicit def simpleName = SingletonEncoder( cls => JsString( decodeName( cls.getSimpleName ) ) )
implicit def simpleNameLowerCase = SingletonEncoder( cls => JsString( camel2underscore( decodeName( cls.getSimpleName ) ) ) )
implicit def simpleNameUpperCase = SingletonEncoder( cls => JsString( camel2underscore( decodeName( cls.getSimpleName ) ).toUpperCase ) )
implicit def simpleName:SingletonEncoder = SingletonEncoder(cls => JsString(decodeName(cls.getSimpleName)))
implicit def simpleNameLowerCase: SingletonEncoder = SingletonEncoder( cls => JsString( camel2underscore( decodeName( cls.getSimpleName ) ) ) )
implicit def simpleNameUpperCase: SingletonEncoder = SingletonEncoder( cls => JsString( camel2underscore( decodeName( cls.getSimpleName ) ).toUpperCase ) )
}

sealed trait NameEncoder {
Expand Down
Loading

0 comments on commit 9af218a

Please sign in to comment.