@@ -1285,7 +1285,7 @@ object JsonCodecMaker {
1285
1285
}
1286
1286
}
1287
1287
1288
- case class FieldInfo (symbol : Symbol , mappedName : String , getter : Symbol ,
1288
+ case class FieldInfo (symbol : Symbol , mappedName : String , field : Symbol ,
1289
1289
defaultValue : Option [Term ], resolvedTpe : TypeRepr , isStringified : Boolean )
1290
1290
1291
1291
case class ClassInfo (tpe : TypeRepr , fields : Seq [FieldInfo ])
@@ -1314,7 +1314,13 @@ object JsonCodecMaker {
1314
1314
val tpeClassSym = tpe.classSymbol.getOrElse(fail(s " expected that ${tpe.show} has classSymbol " ))
1315
1315
1316
1316
// lazy val module = companion(tpe).asModule // don't lookup for the companion when there are no default values for constructor params
1317
- val getters = tpeClassSym.methodMembers.collect{ case m : Symbol if m.flags.is(Flags .FieldAccessor ) && m.paramSymss.isEmpty => m }
1317
+ // val getters = tpeClassSym.methodMembers.collect{ case m: Symbol if m.flags.is(Flags.FieldAccessor) && m.paramSymss.isEmpty => m }
1318
+ val fields = tpeClassSym.fieldMembers
1319
+ if (tpeClassSym.name == " Nested" ) {
1320
+ println(" !!tpeClassSym.name==Nested" )
1321
+ println(s " members = ${tpeClassSym.methodMembers}" )
1322
+ println(s " fields = ${fields}" )
1323
+ }
1318
1324
val annotations = tpeClassSym.fieldMembers.collect {
1319
1325
case m : Symbol if hasSupportedAnnotation(m) =>
1320
1326
val name = decodeName(m).trim // FIXME: Why is there a space at the end of field name?!
@@ -1345,8 +1351,12 @@ object JsonCodecMaker {
1345
1351
case Left ((message, expr)) => fail(" Can't interpret fieldNameMapper:" + message)
1346
1352
case Right (optValue) => optValue.getOrElse(name)
1347
1353
}(_.partiallyMappedName)
1348
- val getter = getters.find(_.name == symbol.name).getOrElse {
1349
- fail(s " ' $name' parameter of ' $tpe' should be defined as 'val' or 'var' in the primary constructor. " )
1354
+ // val getter = getters.find(_.name == symbol.name).getOrElse {
1355
+ // println(s"!!!fail (name - parameters: ):getters = $getters, name=${symbol.name}")
1356
+ // fail(s"'$name' parameter of '$tpe' should be defined as 'val' or 'var' in the primary constructor.")
1357
+ // }
1358
+ val field = fields.find(_.name == symbol.name).getOrElse{
1359
+ fail(s " ' $name' parameter of ' $tpe' should be defined as 'val' or 'var' in the primary constructor. " )
1350
1360
}
1351
1361
// ???
1352
1362
// val paramType = tpe.memberType(sym)
@@ -1358,7 +1368,7 @@ object JsonCodecMaker {
1358
1368
// else None
1359
1369
val isStringified = annotationOption.exists(_.stringified)
1360
1370
val fieldType = tpe.memberType(symbol) // paramType(tpe, symbol) -- ???
1361
- Some (FieldInfo (symbol, mappedName, getter , defaultValue, fieldType, isStringified))
1371
+ Some (FieldInfo (symbol, mappedName, field , defaultValue, fieldType, isStringified))
1362
1372
}
1363
1373
}
1364
1374
case _ => fail(s " ' $tpe' has a primary constructor with multiple parameter lists. " +
@@ -2512,7 +2522,7 @@ object JsonCodecMaker {
2512
2522
fDefault match {
2513
2523
case Some (d) =>
2514
2524
if (f.resolvedTpe <:< TypeRepr .of[Iterable [? ]] && cfg.transientEmpty) {
2515
- ' { val v = $ { Select (x.asTerm, f.getter ).asExprOf[Iterable [? ]] }
2525
+ ' { val v = $ { Select (x.asTerm, f.field ).asExprOf[Iterable [? ]] }
2516
2526
if (! v.isEmpty && v != $ {d.asExprOf[ft]}) {
2517
2527
$ {genWriteConstantKey(f.mappedName, out)}
2518
2528
$ {genWriteVal(' v , f.resolvedTpe :: types, f.isStringified, None , out)}
@@ -2522,7 +2532,7 @@ object JsonCodecMaker {
2522
2532
typeArg1(f.resolvedTpe).asType match
2523
2533
case ' [t1] =>
2524
2534
' {
2525
- val v = $ { Select (x.asTerm, f.getter ).asExprOf[Option [t1]] }
2535
+ val v = $ { Select (x.asTerm, f.field ).asExprOf[Option [t1]] }
2526
2536
if ((v ne None ) && v != $ {d.asExprOf[ft]}) {
2527
2537
$ {genWriteConstantKey(f.mappedName, out)}
2528
2538
// val vg = v.get
@@ -2539,15 +2549,15 @@ object JsonCodecMaker {
2539
2549
} else
2540
2550
' { ! $ {withEqualsFor(f.resolvedTpe, v, da)( (x1, x2) => genArrayEquals(f.resolvedTpe, x1, x2))} }
2541
2551
' {
2542
- val v = $ { Select (x.asTerm, f.getter ).asExprOf[ft & Array [? ]] }
2552
+ val v = $ { Select (x.asTerm, f.field ).asExprOf[ft & Array [? ]] }
2543
2553
if ($ {cond(' v )}) {
2544
2554
$ {genWriteConstantKey(f.mappedName, out)}
2545
2555
$ {genWriteVal( ' v , f.resolvedTpe :: types, f.isStringified, None , out)}
2546
2556
}
2547
2557
}
2548
2558
} else {
2549
2559
' {
2550
- val v = $ { Select (x.asTerm, f.getter ).asExprOf[ft] }
2560
+ val v = $ { Select (x.asTerm, f.field ).asExprOf[ft] }
2551
2561
if (v != $ {d.asExprOf[ft]}) {
2552
2562
$ {genWriteConstantKey(f.mappedName, out)}
2553
2563
$ {genWriteVal(' v , f.resolvedTpe :: types, f.isStringified, None , out)}
@@ -2557,7 +2567,7 @@ object JsonCodecMaker {
2557
2567
case None =>
2558
2568
if (f.resolvedTpe <:< TypeRepr .of[Iterable [_]] && cfg.transientEmpty) {
2559
2569
' {
2560
- val v = $ { Select (x.asTerm, f.getter ).asExprOf[ft & Iterable [? ]] }
2570
+ val v = $ { Select (x.asTerm, f.field ).asExprOf[ft & Iterable [? ]] }
2561
2571
if (! v.isEmpty) {
2562
2572
$ {genWriteConstantKey(f.mappedName, out)}
2563
2573
$ {genWriteVal(' v , f.resolvedTpe :: types, f.isStringified, None , out)}
@@ -2567,7 +2577,7 @@ object JsonCodecMaker {
2567
2577
typeArg1(f.resolvedTpe).asType match
2568
2578
case ' [tf] =>
2569
2579
' {
2570
- val v = $ { Select (x.asTerm, f.getter ).asExprOf[Option [tf]] }
2580
+ val v = $ { Select (x.asTerm, f.field ).asExprOf[Option [tf]] }
2571
2581
if (v ne None ) {
2572
2582
$ {genWriteConstantKey(f.mappedName, out)}
2573
2583
$ {genWriteVal(' { v.get }, typeArg1(f.resolvedTpe) :: types, f.isStringified, None , out)}
@@ -2576,14 +2586,14 @@ object JsonCodecMaker {
2576
2586
case _ => fail(s " Can't resolve type of ${f.resolvedTpe.show}" )
2577
2587
} else if (f.resolvedTpe <:< TypeRepr .of[Array [_]] && cfg.transientEmpty) {
2578
2588
' {
2579
- val v = $ { Select (x.asTerm, f.getter ).asExprOf[ft & Array [? ]] }
2589
+ val v = $ { Select (x.asTerm, f.field ).asExprOf[ft & Array [? ]] }
2580
2590
if (v.length > 0 ) {
2581
2591
$ {genWriteConstantKey(f.mappedName, out)}
2582
2592
$ {genWriteVal(' v , f.resolvedTpe :: types, f.isStringified, None , out)}
2583
2593
}
2584
2594
}
2585
2595
} else {
2586
- val v = Select (x.asTerm, f.getter ).asExprOf[ft]
2596
+ val v = Select (x.asTerm, f.field ).asExprOf[ft]
2587
2597
' {
2588
2598
$ {genWriteConstantKey(f.mappedName, out)}
2589
2599
$ {genWriteVal( v , f.resolvedTpe :: types, f.isStringified, None , out)}
0 commit comments