@@ -3,7 +3,7 @@ package com.github.plokhotnyuk.jsoniter_scala.macros
3
3
import java .lang .Character ._
4
4
import java .time ._
5
5
6
- import com .github .plokhotnyuk .jsoniter_scala .core .{JsonValueCodec , JsonReader , JsonWriter }
6
+ import com .github .plokhotnyuk .jsoniter_scala .core .{JsonReader , JsonValueCodec , JsonWriter }
7
7
8
8
import scala .annotation .StaticAnnotation
9
9
import scala .annotation .meta .field
@@ -296,7 +296,7 @@ object JsonCodecMaker {
296
296
def getFieldAnnotations (tpe : Type ): Map [String , FieldAnnotations ] = tpe.members.collect {
297
297
case m : TermSymbol if m.annotations.exists(a => a.tree.tpe =:= c.weakTypeOf[named]
298
298
|| a.tree.tpe =:= c.weakTypeOf[transient] || a.tree.tpe =:= c.weakTypeOf[stringified]) =>
299
- val fieldName = m.name.toString.trim // FIXME: Why is there a space at the end of field name?!
299
+ val fieldName = m.name.decodedName. toString.trim // FIXME: Why is there a space at the end of field name?!
300
300
val named = m.annotations.filter(_.tree.tpe =:= c.weakTypeOf[named])
301
301
if (named.size > 1 ) fail(s " Duplicated ' ${typeOf[named]}' defined for ' $fieldName' of ' $tpe'. " )
302
302
val trans = m.annotations.filter(_.tree.tpe =:= c.weakTypeOf[transient])
@@ -328,12 +328,12 @@ object JsonCodecMaker {
328
328
def getDefaults (tpe : Type ): Map [String , Tree ] = {
329
329
val module = getModule(tpe)
330
330
getParams(tpe).zipWithIndex.collect { case (p, i) if p.isParamWithDefault =>
331
- (p.name.toString, q " $module. ${TermName (" $lessinit$greater$default$" + (i + 1 ))}" )
331
+ (p.name.decodedName. toString, q " $module. ${TermName (" $lessinit$greater$default$" + (i + 1 ))}" )
332
332
}(breakOut)
333
333
}
334
334
335
335
def getMembers (annotations : Map [String , FieldAnnotations ], tpe : c.universe.Type ): Seq [MethodSymbol ] = {
336
- def nonTransient (m : MethodSymbol ): Boolean = annotations.get(m.name.toString).fold(true )(! _.transient)
336
+ def nonTransient (m : MethodSymbol ): Boolean = annotations.get(m.name.decodedName. toString).fold(true )(! _.transient)
337
337
338
338
tpe.members.collect {
339
339
case m : MethodSymbol if m.isCaseAccessor && nonTransient(m) => m
@@ -355,11 +355,8 @@ object JsonCodecMaker {
355
355
def getStringified (annotations : Map [String , FieldAnnotations ], name : String ): Boolean =
356
356
annotations.get(name).fold(false )(_.stringified)
357
357
358
- def fixMinuses (name : String ): String =
359
- if (name.indexOf(" $minus" ) == - 1 ) name else name.replace(" $minus" , " -" )
360
-
361
358
def getMappedName (annotations : Map [String , FieldAnnotations ], defaultName : String ): String =
362
- annotations.get(defaultName).fold(codecConfig.fieldNameMapper(fixMinuses( defaultName) ))(_.name)
359
+ annotations.get(defaultName).fold(codecConfig.fieldNameMapper(defaultName))(_.name)
363
360
364
361
def getCollisions (names : Traversable [String ]): Traversable [String ] =
365
362
names.groupBy(identity).collect { case (x, xs) if xs.size > 1 => x }
@@ -614,7 +611,7 @@ object JsonCodecMaker {
614
611
} else if (tpe.typeSymbol.asClass.isCaseClass) withDecoderFor(methodKey, default) {
615
612
val annotations = getFieldAnnotations(tpe)
616
613
617
- def name (m : MethodSymbol ): String = getMappedName(annotations, m.name.toString)
614
+ def name (m : MethodSymbol ): String = getMappedName(annotations, m.name.decodedName. toString)
618
615
619
616
def hashCode (m : MethodSymbol ): Int = {
620
617
val cs = name(m).toCharArray
@@ -626,7 +623,7 @@ object JsonCodecMaker {
626
623
(if (discriminator.isEmpty) Seq .empty else Seq (codecConfig.discriminatorFieldName)) ++ members.map(name))
627
624
val params = getParams(tpe)
628
625
val required = params.collect {
629
- case p if ! p.isParamWithDefault && ! isContainer(p.typeSignature) => p.name.toString
626
+ case p if ! p.isParamWithDefault && ! isContainer(p.typeSignature) => p.name.decodedName. toString
630
627
}
631
628
val reqVarNum = required.size
632
629
val lastReqVarIndex = reqVarNum >> 5
@@ -652,14 +649,15 @@ object JsonCodecMaker {
652
649
val defaults = getDefaults(tpe)
653
650
val readVars = members.map { m =>
654
651
val tpe = methodType(m)
655
- q " var ${TermName (s " _ ${m.name}" )}: $tpe = ${defaults.getOrElse(m.name.toString, nullValue(tpe))}"
652
+ q " var ${TermName (s " _ ${m.name}" )}: $tpe = ${defaults.getOrElse(m.name.decodedName. toString, nullValue(tpe))}"
656
653
}
657
654
val readFields = groupByOrdered(members)(hashCode).map { case (hashCode, ms) =>
658
655
val checkNameAndReadValue = ms.foldRight(unexpectedFieldHandler) { case (m, acc) =>
656
+ val decodedName = m.name.decodedName.toString
659
657
val varName = TermName (s " _ ${m.name}" )
660
- val isStringified = getStringified(annotations, m.name.toString )
658
+ val isStringified = getStringified(annotations, decodedName )
661
659
val readValue = q " $varName = ${genReadVal(methodType(m), q " $varName" , isStringified)}"
662
- val resetReqFieldFlag = bitmasks.getOrElse(m.name.toString , EmptyTree )
660
+ val resetReqFieldFlag = bitmasks.getOrElse(decodedName , EmptyTree )
663
661
q """ if (in.isCharBufEqualsTo(l, ${name(m)})) {
664
662
.. $readValue
665
663
.. $resetReqFieldFlag
@@ -788,9 +786,10 @@ object JsonCodecMaker {
788
786
val defaults = getDefaults(tpe)
789
787
val writeFields = members.map { m =>
790
788
val tpe = methodType(m)
791
- val name = getMappedName(annotations, m.name.toString)
792
- val isStringified = getStringified(annotations, m.name.toString)
793
- defaults.get(m.name.toString) match {
789
+ val decodedName = m.name.decodedName.toString
790
+ val mappedName = getMappedName(annotations, decodedName)
791
+ val isStringified = getStringified(annotations, decodedName)
792
+ defaults.get(decodedName) match {
794
793
case Some (d) =>
795
794
if (isContainer(tpe)) {
796
795
val nonEmptyAndDefaultMatchingCheck =
@@ -805,13 +804,13 @@ object JsonCodecMaker {
805
804
else genWriteVal(q " v " , tpe, isStringified)
806
805
q """ val v = x. $m
807
806
if ( $nonEmptyAndDefaultMatchingCheck) {
808
- .. ${genWriteConstantKey(name )}
807
+ .. ${genWriteConstantKey(mappedName )}
809
808
.. $writeVal
810
809
} """
811
810
} else {
812
811
q """ val v = x. $m
813
812
if (v != $d) {
814
- .. ${genWriteConstantKey(name )}
813
+ .. ${genWriteConstantKey(mappedName )}
815
814
.. ${genWriteVal(q " v " , tpe, isStringified)}
816
815
} """
817
816
}
@@ -823,11 +822,11 @@ object JsonCodecMaker {
823
822
else genWriteVal(q " v " , tpe, isStringified)
824
823
q """ val v = x. $m
825
824
if ( $nonEmptyCheck) {
826
- .. ${genWriteConstantKey(name )}
825
+ .. ${genWriteConstantKey(mappedName )}
827
826
.. $writeVal
828
827
} """
829
828
} else {
830
- q """ .. ${genWriteConstantKey(name )}
829
+ q """ .. ${genWriteConstantKey(mappedName )}
831
830
.. ${genWriteVal(q " x. $m" , tpe, isStringified)}"""
832
831
}
833
832
}
0 commit comments