From e9d98c4e767f4068b3b104b3a2ac98f3a6d4411d Mon Sep 17 00:00:00 2001
From: dgelessus <dgelessus@users.noreply.github.com>
Date: Wed, 6 Apr 2022 16:45:28 +0200
Subject: [PATCH] Generate properly typed clone methods in productions

---
 src/main/java/org/sablecc/sablecc/node/PAlt.java           | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PAltTransform.java  | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PAst.java           | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PAstAlt.java        | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PAstProd.java       | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PBasic.java         | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PBinOp.java         | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PChar.java          | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PConcat.java        | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PElem.java          | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PGrammar.java       | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PHelperDef.java     | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PHelpers.java       | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PIgnTokens.java     | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PListTerm.java      | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PProd.java          | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PProdName.java      | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PProductions.java   | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PRegExp.java        | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PSet.java           | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PSpecifier.java     | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PStateList.java     | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PStateListTail.java | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PStates.java        | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PTerm.java          | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PTokenDef.java      | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PTokens.java        | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PTransition.java    | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PUnExp.java         | 3 ++-
 src/main/java/org/sablecc/sablecc/node/PUnOp.java          | 3 ++-
 src/main/resources/org/sablecc/sablecc/productions.txt     | 3 ++-
 31 files changed, 62 insertions(+), 31 deletions(-)

diff --git a/src/main/java/org/sablecc/sablecc/node/PAlt.java b/src/main/java/org/sablecc/sablecc/node/PAlt.java
index cdd9a4a..0b5516f 100644
--- a/src/main/java/org/sablecc/sablecc/node/PAlt.java
+++ b/src/main/java/org/sablecc/sablecc/node/PAlt.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PAlt extends Node
 {
-    // Empty body
+    @Override
+    public abstract PAlt clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PAltTransform.java b/src/main/java/org/sablecc/sablecc/node/PAltTransform.java
index 88fa131..35b5362 100644
--- a/src/main/java/org/sablecc/sablecc/node/PAltTransform.java
+++ b/src/main/java/org/sablecc/sablecc/node/PAltTransform.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PAltTransform extends Node
 {
-    // Empty body
+    @Override
+    public abstract PAltTransform clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PAst.java b/src/main/java/org/sablecc/sablecc/node/PAst.java
index a452a40..ef1f009 100644
--- a/src/main/java/org/sablecc/sablecc/node/PAst.java
+++ b/src/main/java/org/sablecc/sablecc/node/PAst.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PAst extends Node
 {
-    // Empty body
+    @Override
+    public abstract PAst clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PAstAlt.java b/src/main/java/org/sablecc/sablecc/node/PAstAlt.java
index 55198fc..4dc2c2b 100644
--- a/src/main/java/org/sablecc/sablecc/node/PAstAlt.java
+++ b/src/main/java/org/sablecc/sablecc/node/PAstAlt.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PAstAlt extends Node
 {
-    // Empty body
+    @Override
+    public abstract PAstAlt clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PAstProd.java b/src/main/java/org/sablecc/sablecc/node/PAstProd.java
index e1953d3..6b85532 100644
--- a/src/main/java/org/sablecc/sablecc/node/PAstProd.java
+++ b/src/main/java/org/sablecc/sablecc/node/PAstProd.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PAstProd extends Node
 {
-    // Empty body
+    @Override
+    public abstract PAstProd clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PBasic.java b/src/main/java/org/sablecc/sablecc/node/PBasic.java
index 8059acc..70bcd90 100644
--- a/src/main/java/org/sablecc/sablecc/node/PBasic.java
+++ b/src/main/java/org/sablecc/sablecc/node/PBasic.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PBasic extends Node
 {
-    // Empty body
+    @Override
+    public abstract PBasic clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PBinOp.java b/src/main/java/org/sablecc/sablecc/node/PBinOp.java
index 002602c..2b2e9ef 100644
--- a/src/main/java/org/sablecc/sablecc/node/PBinOp.java
+++ b/src/main/java/org/sablecc/sablecc/node/PBinOp.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PBinOp extends Node
 {
-    // Empty body
+    @Override
+    public abstract PBinOp clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PChar.java b/src/main/java/org/sablecc/sablecc/node/PChar.java
index d78fe0f..bf0fc3c 100644
--- a/src/main/java/org/sablecc/sablecc/node/PChar.java
+++ b/src/main/java/org/sablecc/sablecc/node/PChar.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PChar extends Node
 {
-    // Empty body
+    @Override
+    public abstract PChar clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PConcat.java b/src/main/java/org/sablecc/sablecc/node/PConcat.java
index 773b215..c5c9870 100644
--- a/src/main/java/org/sablecc/sablecc/node/PConcat.java
+++ b/src/main/java/org/sablecc/sablecc/node/PConcat.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PConcat extends Node
 {
-    // Empty body
+    @Override
+    public abstract PConcat clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PElem.java b/src/main/java/org/sablecc/sablecc/node/PElem.java
index f456e5c..9ead049 100644
--- a/src/main/java/org/sablecc/sablecc/node/PElem.java
+++ b/src/main/java/org/sablecc/sablecc/node/PElem.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PElem extends Node
 {
-    // Empty body
+    @Override
+    public abstract PElem clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PGrammar.java b/src/main/java/org/sablecc/sablecc/node/PGrammar.java
index 39cba9b..3609b3d 100644
--- a/src/main/java/org/sablecc/sablecc/node/PGrammar.java
+++ b/src/main/java/org/sablecc/sablecc/node/PGrammar.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PGrammar extends Node
 {
-    // Empty body
+    @Override
+    public abstract PGrammar clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PHelperDef.java b/src/main/java/org/sablecc/sablecc/node/PHelperDef.java
index 45fd6fa..3c73a8c 100644
--- a/src/main/java/org/sablecc/sablecc/node/PHelperDef.java
+++ b/src/main/java/org/sablecc/sablecc/node/PHelperDef.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PHelperDef extends Node
 {
-    // Empty body
+    @Override
+    public abstract PHelperDef clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PHelpers.java b/src/main/java/org/sablecc/sablecc/node/PHelpers.java
index a97168f..66e7c21 100644
--- a/src/main/java/org/sablecc/sablecc/node/PHelpers.java
+++ b/src/main/java/org/sablecc/sablecc/node/PHelpers.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PHelpers extends Node
 {
-    // Empty body
+    @Override
+    public abstract PHelpers clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PIgnTokens.java b/src/main/java/org/sablecc/sablecc/node/PIgnTokens.java
index b2a6876..5af5223 100644
--- a/src/main/java/org/sablecc/sablecc/node/PIgnTokens.java
+++ b/src/main/java/org/sablecc/sablecc/node/PIgnTokens.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PIgnTokens extends Node
 {
-    // Empty body
+    @Override
+    public abstract PIgnTokens clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PListTerm.java b/src/main/java/org/sablecc/sablecc/node/PListTerm.java
index 52a45c0..da5bde5 100644
--- a/src/main/java/org/sablecc/sablecc/node/PListTerm.java
+++ b/src/main/java/org/sablecc/sablecc/node/PListTerm.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PListTerm extends Node
 {
-    // Empty body
+    @Override
+    public abstract PListTerm clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PProd.java b/src/main/java/org/sablecc/sablecc/node/PProd.java
index 9a08cf8..5eae94a 100644
--- a/src/main/java/org/sablecc/sablecc/node/PProd.java
+++ b/src/main/java/org/sablecc/sablecc/node/PProd.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PProd extends Node
 {
-    // Empty body
+    @Override
+    public abstract PProd clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PProdName.java b/src/main/java/org/sablecc/sablecc/node/PProdName.java
index 437a52a..eff659c 100644
--- a/src/main/java/org/sablecc/sablecc/node/PProdName.java
+++ b/src/main/java/org/sablecc/sablecc/node/PProdName.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PProdName extends Node
 {
-    // Empty body
+    @Override
+    public abstract PProdName clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PProductions.java b/src/main/java/org/sablecc/sablecc/node/PProductions.java
index 0a61e72..f12d223 100644
--- a/src/main/java/org/sablecc/sablecc/node/PProductions.java
+++ b/src/main/java/org/sablecc/sablecc/node/PProductions.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PProductions extends Node
 {
-    // Empty body
+    @Override
+    public abstract PProductions clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PRegExp.java b/src/main/java/org/sablecc/sablecc/node/PRegExp.java
index e3f7a6e..c9ae467 100644
--- a/src/main/java/org/sablecc/sablecc/node/PRegExp.java
+++ b/src/main/java/org/sablecc/sablecc/node/PRegExp.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PRegExp extends Node
 {
-    // Empty body
+    @Override
+    public abstract PRegExp clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PSet.java b/src/main/java/org/sablecc/sablecc/node/PSet.java
index 91668ff..5d2b31e 100644
--- a/src/main/java/org/sablecc/sablecc/node/PSet.java
+++ b/src/main/java/org/sablecc/sablecc/node/PSet.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PSet extends Node
 {
-    // Empty body
+    @Override
+    public abstract PSet clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PSpecifier.java b/src/main/java/org/sablecc/sablecc/node/PSpecifier.java
index ec0fcdc..787ba31 100644
--- a/src/main/java/org/sablecc/sablecc/node/PSpecifier.java
+++ b/src/main/java/org/sablecc/sablecc/node/PSpecifier.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PSpecifier extends Node
 {
-    // Empty body
+    @Override
+    public abstract PSpecifier clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PStateList.java b/src/main/java/org/sablecc/sablecc/node/PStateList.java
index 5ca56fe..24b52b2 100644
--- a/src/main/java/org/sablecc/sablecc/node/PStateList.java
+++ b/src/main/java/org/sablecc/sablecc/node/PStateList.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PStateList extends Node
 {
-    // Empty body
+    @Override
+    public abstract PStateList clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PStateListTail.java b/src/main/java/org/sablecc/sablecc/node/PStateListTail.java
index bc7de2f..b50809e 100644
--- a/src/main/java/org/sablecc/sablecc/node/PStateListTail.java
+++ b/src/main/java/org/sablecc/sablecc/node/PStateListTail.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PStateListTail extends Node
 {
-    // Empty body
+    @Override
+    public abstract PStateListTail clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PStates.java b/src/main/java/org/sablecc/sablecc/node/PStates.java
index d494b18..df92627 100644
--- a/src/main/java/org/sablecc/sablecc/node/PStates.java
+++ b/src/main/java/org/sablecc/sablecc/node/PStates.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PStates extends Node
 {
-    // Empty body
+    @Override
+    public abstract PStates clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PTerm.java b/src/main/java/org/sablecc/sablecc/node/PTerm.java
index 4deeffc..cea2601 100644
--- a/src/main/java/org/sablecc/sablecc/node/PTerm.java
+++ b/src/main/java/org/sablecc/sablecc/node/PTerm.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PTerm extends Node
 {
-    // Empty body
+    @Override
+    public abstract PTerm clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PTokenDef.java b/src/main/java/org/sablecc/sablecc/node/PTokenDef.java
index 1c66c90..96e71a7 100644
--- a/src/main/java/org/sablecc/sablecc/node/PTokenDef.java
+++ b/src/main/java/org/sablecc/sablecc/node/PTokenDef.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PTokenDef extends Node
 {
-    // Empty body
+    @Override
+    public abstract PTokenDef clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PTokens.java b/src/main/java/org/sablecc/sablecc/node/PTokens.java
index 4e0aa26..daa2a57 100644
--- a/src/main/java/org/sablecc/sablecc/node/PTokens.java
+++ b/src/main/java/org/sablecc/sablecc/node/PTokens.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PTokens extends Node
 {
-    // Empty body
+    @Override
+    public abstract PTokens clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PTransition.java b/src/main/java/org/sablecc/sablecc/node/PTransition.java
index ef0f1f4..e91c82d 100644
--- a/src/main/java/org/sablecc/sablecc/node/PTransition.java
+++ b/src/main/java/org/sablecc/sablecc/node/PTransition.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PTransition extends Node
 {
-    // Empty body
+    @Override
+    public abstract PTransition clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PUnExp.java b/src/main/java/org/sablecc/sablecc/node/PUnExp.java
index aad69b0..1561ea6 100644
--- a/src/main/java/org/sablecc/sablecc/node/PUnExp.java
+++ b/src/main/java/org/sablecc/sablecc/node/PUnExp.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PUnExp extends Node
 {
-    // Empty body
+    @Override
+    public abstract PUnExp clone();
 }
diff --git a/src/main/java/org/sablecc/sablecc/node/PUnOp.java b/src/main/java/org/sablecc/sablecc/node/PUnOp.java
index de03247..45a73f9 100644
--- a/src/main/java/org/sablecc/sablecc/node/PUnOp.java
+++ b/src/main/java/org/sablecc/sablecc/node/PUnOp.java
@@ -4,5 +4,6 @@ package org.sablecc.sablecc.node;
 
 public abstract class PUnOp extends Node
 {
-    // Empty body
+    @Override
+    public abstract PUnOp clone();
 }
diff --git a/src/main/resources/org/sablecc/sablecc/productions.txt b/src/main/resources/org/sablecc/sablecc/productions.txt
index fae6241..061f218 100644
--- a/src/main/resources/org/sablecc/sablecc/productions.txt
+++ b/src/main/resources/org/sablecc/sablecc/productions.txt
@@ -12,7 +12,8 @@ package $0$;
 
 public abstract class $1$ extends Node
 {
-    // Empty body
+    @Override
+    public abstract $1$ clone();
 }
 
 $
-- 
GitLab