Skip to content

Commit 62ae525

Browse files
committed
Use full names for code generation in Scala 2 macros
1 parent 7e36908 commit 62ae525

File tree

2 files changed

+44
-21
lines changed

2 files changed

+44
-21
lines changed

schema/shared/src/main/scala-2/zio/blocks/schema/SchemaVersionSpecific.scala

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -89,26 +89,40 @@ object SchemaVersionSpecific {
8989
})
9090
// TODO: use `fieldInfos` to generate remaining `Reflect.Record.fields` and `Reflect.Record.recordBinding`
9191
c.Expr[Schema[A]](
92-
q"""new _root_.zio.blocks.schema.Schema[$tpe](
93-
reflect = _root_.zio.blocks.schema.Reflect.Record[_root_.zio.blocks.schema.binding.Binding, $tpe](
94-
fields = Nil,
95-
typeName = TypeName(
96-
namespace = Namespace(
97-
packages = $packages,
98-
values = $values
92+
q"""{
93+
import _root_.zio.blocks.schema._
94+
import _root_.zio.blocks.schema.binding._
95+
import _root_.zio.blocks.schema.binding.RegisterOffset._
96+
97+
new Schema[$tpe](
98+
reflect = Reflect.Record[Binding, $tpe](
99+
fields = _root_.scala.Nil,
100+
typeName = TypeName(
101+
namespace = Namespace(
102+
packages = $packages,
103+
values = $values
104+
),
105+
name = $name
106+
),
107+
recordBinding = Binding.Record(
108+
constructor = new Constructor[$tpe] {
109+
def usedRegisters: RegisterOffset = ???
110+
111+
def construct(in: Registers, baseOffset: RegisterOffset): $tpe = ???
112+
},
113+
deconstructor = new Deconstructor[$tpe] {
114+
def usedRegisters: RegisterOffset = ???
115+
116+
def deconstruct(out: Registers, baseOffset: RegisterOffset, in: $tpe): Unit = ???
117+
},
118+
defaultValue = _root_.scala.None,
119+
examples = _root_.scala.Nil
99120
),
100-
name = $name
101-
),
102-
recordBinding = Binding.Record(
103-
constructor = null,
104-
deconstructor = null,
105-
defaultValue = None,
106-
examples = Nil
107-
),
108-
doc = Doc.Empty,
109-
modifiers = Nil
121+
doc = Doc.Empty,
122+
modifiers = _root_.scala.Nil
123+
)
110124
)
111-
)"""
125+
}"""
112126
)
113127
} else fail(s"Cannot derive '${typeOf[Schema[_]]}' for '$tpe'.")
114128
}

schema/shared/src/main/scala-3/zio/blocks/schema/SchemaVersionSpecific.scala

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ object SchemaVersionSpecific {
99

1010
def derived[A: Type](using Quotes): Expr[Schema[A]] = {
1111
import quotes.reflect._
12-
import zio.blocks.schema.binding.Binding
12+
import zio.blocks.schema.binding._
13+
import zio.blocks.schema.binding.RegisterOffset._
1314

1415
def fail(msg: String): Nothing = report.errorAndAbort(msg, Position.ofMacroExpansion)
1516

@@ -98,8 +99,16 @@ object SchemaVersionSpecific {
9899
name = ${ Expr(name) }
99100
),
100101
recordBinding = Binding.Record(
101-
constructor = null,
102-
deconstructor = null,
102+
constructor = new Constructor[A] {
103+
def usedRegisters: RegisterOffset = ???
104+
105+
def construct(in: Registers, baseOffset: RegisterOffset): A = ???
106+
},
107+
deconstructor = new Deconstructor[A] {
108+
def usedRegisters: RegisterOffset = ???
109+
110+
def deconstruct(out: Registers, baseOffset: RegisterOffset, in: A): Unit = ???
111+
},
103112
defaultValue = None,
104113
examples = Nil
105114
),

0 commit comments

Comments
 (0)