Skip to content

Commit 82de5f8

Browse files
author
Roman Janusz
committed
fix generated annotation applied explicitly on val getter
1 parent 75fc216 commit 82de5f8

File tree

3 files changed

+5
-1
lines changed

3 files changed

+5
-1
lines changed

core/src/test/scala/com/avsystem/commons/serialization/CodecTestData.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import com.avsystem.commons.annotation.AnnotationAggregate
55
import com.avsystem.commons.meta.{AutoOptionalParams, MacroInstances}
66
import com.avsystem.commons.misc.{AutoNamedEnum, NamedEnumCompanion, TypedKey}
77

8+
import scala.annotation.meta.getter
9+
810
object CodecTestData {
911
def col[T <: JCollection[Int]](col: T): T = {
1012
col.add(1)
@@ -382,6 +384,7 @@ object CodecTestData {
382384
case class Generator(value: String) extends GeneratorBase {
383385
def abstractUpper: String = value.toUpperCase
384386
@generated val valUpper: String = value.toUpperCase
387+
@(generated@getter) val getterUpper: String = value.toUpperCase
385388
@generated var varUpper: String = value.toUpperCase
386389
@generated val lazyValUpper: String = value.toUpperCase
387390
}

core/src/test/scala/com/avsystem/commons/serialization/SimpleGenCodecTest.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,7 @@ class SimpleGenCodecTest extends SimpleIOCodecTest {
393393
"upper" -> "V",
394394
"abstractUpper" -> "V",
395395
"valUpper" -> "V",
396+
"getterUpper" -> "V",
396397
"varUpper" -> "V",
397398
"lazyValUpper" -> "V"
398399
)

macros/src/main/scala/com/avsystem/commons/macros/serialization/CodecMacroCommons.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ abstract class CodecMacroCommons(ctx: blackbox.Context) extends AbstractMacroCom
6262
val ts = sym.asTerm
6363
// do not treat val/var's underlying field as a generated member,
6464
// pretend that the annotation is actually applied on its getter
65-
ts.getter == NoSymbol && hasAnnotation(sym, GeneratedAnnotType) ||
65+
(ts.getter == ts || ts.getter == NoSymbol) && hasAnnotation(ts, GeneratedAnnotType) ||
6666
ts.isGetter && hasAnnotation(ts.accessed, GeneratedAnnotType)
6767
}
6868
}

0 commit comments

Comments
 (0)