File tree Expand file tree Collapse file tree 2 files changed +23
-1
lines changed
codegen/src/main/scala/overflowdb/codegen
integration-tests/tests/src/test/scala Expand file tree Collapse file tree 2 files changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -1681,10 +1681,15 @@ class CodeGen(schema: Schema) {
1681
1681
1682
1682
val classNameNewNode = s " New $nodeClassName"
1683
1683
1684
- val productElementAccessors = fieldDescriptions.reverse.zipWithIndex.map {
1684
+ val productElements = fieldDescriptions.reverse.zipWithIndex
1685
+ val productElementAccessors = productElements.map {
1685
1686
case (fieldDescription, index) =>
1686
1687
s " case $index => this. ${fieldDescription.name}"
1687
1688
}.mkString(" \n " )
1689
+ val productElementNames = productElements.map {
1690
+ case (fieldDescription, index) =>
1691
+ s """ case $index => " ${fieldDescription.name}" """
1692
+ }.mkString(" \n " )
1688
1693
1689
1694
s """ object $classNameNewNode {
1690
1695
| def apply(): $classNameNewNode = new $classNameNewNode
@@ -1711,6 +1716,12 @@ class CodeGen(schema: Schema) {
1711
1716
| case _ => null
1712
1717
| }
1713
1718
|
1719
+ | override def productElementName(n: Int): String =
1720
+ | n match {
1721
+ | $productElementNames
1722
+ | case _ => ""
1723
+ | }
1724
+ |
1714
1725
| override def productPrefix = " $classNameNewNode"
1715
1726
| override def productArity = ${fieldDescriptions.size}
1716
1727
|
Original file line number Diff line number Diff line change @@ -21,6 +21,17 @@ class Schema02Test extends AnyWordSpec with Matchers {
21
21
}
22
22
23
23
" NewNode" can {
24
+ " be used as a product, e.g. for pretty printing" in {
25
+ val newNode = NewNode1 ().name(" A" ).order(1 )
26
+
27
+ newNode.productPrefix shouldBe " NewNode1"
28
+ newNode.productArity shouldBe 2
29
+ newNode.productElementName(0 ) shouldBe " order"
30
+ newNode.productElement(0 ) shouldBe Some (1 )
31
+ newNode.productElementName(1 ) shouldBe " name"
32
+ newNode.productElement(1 ) shouldBe " A"
33
+ }
34
+
24
35
" get copied and mutated" in {
25
36
val original = NewNode1 ().name(" A" ).order(1 )
26
37
You can’t perform that action at this time.
0 commit comments