From 7a1b275449287468a827a7781a012b6db3cd635c Mon Sep 17 00:00:00 2001 From: dgelessus <dgelessus@users.noreply.github.com> Date: Wed, 6 Apr 2022 14:06:06 +0200 Subject: [PATCH] Port node list setter fixes from SableCC 3.6 This fixes the SableCC inlining bug that causes problems for our LTL parser. --- src/main/java/org/sablecc/sablecc/node/AAlt.java | 7 ++++++- .../org/sablecc/sablecc/node/AAltTransform.java | 7 ++++++- src/main/java/org/sablecc/sablecc/node/AAst.java | 7 ++++++- .../java/org/sablecc/sablecc/node/AAstAlt.java | 7 ++++++- .../java/org/sablecc/sablecc/node/AAstProd.java | 7 ++++++- .../java/org/sablecc/sablecc/node/AConcat.java | 7 ++++++- .../java/org/sablecc/sablecc/node/AGrammar.java | 7 ++++++- .../java/org/sablecc/sablecc/node/AHelpers.java | 7 ++++++- .../java/org/sablecc/sablecc/node/AIgnTokens.java | 7 ++++++- .../java/org/sablecc/sablecc/node/AListTerm.java | 7 ++++++- .../org/sablecc/sablecc/node/ANewListTerm.java | 7 ++++++- .../java/org/sablecc/sablecc/node/ANewTerm.java | 7 ++++++- src/main/java/org/sablecc/sablecc/node/AProd.java | 14 ++++++++++++-- .../org/sablecc/sablecc/node/AProductions.java | 7 ++++++- .../java/org/sablecc/sablecc/node/ARegExp.java | 7 ++++++- .../java/org/sablecc/sablecc/node/AStateList.java | 7 ++++++- .../java/org/sablecc/sablecc/node/AStates.java | 7 ++++++- .../java/org/sablecc/sablecc/node/ATokens.java | 7 ++++++- .../resources/org/sablecc/sablecc/alternatives.txt | 7 ++++++- 19 files changed, 120 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/sablecc/sablecc/node/AAlt.java b/src/main/java/org/sablecc/sablecc/node/AAlt.java index 6cdd013..156c428 100644 --- a/src/main/java/org/sablecc/sablecc/node/AAlt.java +++ b/src/main/java/org/sablecc/sablecc/node/AAlt.java @@ -77,8 +77,12 @@ public final class AAlt extends PAlt public void setElems(List<PElem> list) { + for(PElem e : this._elems_) + { + e.parent(null); + } this._elems_.clear(); - this._elems_.addAll(list); + for(PElem e : list) { if(e.parent() != null) @@ -87,6 +91,7 @@ public final class AAlt extends PAlt } e.parent(this); + this._elems_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/AAltTransform.java b/src/main/java/org/sablecc/sablecc/node/AAltTransform.java index 5e92bd1..81ad162 100644 --- a/src/main/java/org/sablecc/sablecc/node/AAltTransform.java +++ b/src/main/java/org/sablecc/sablecc/node/AAltTransform.java @@ -77,8 +77,12 @@ public final class AAltTransform extends PAltTransform public void setTerms(List<PTerm> list) { + for(PTerm e : this._terms_) + { + e.parent(null); + } this._terms_.clear(); - this._terms_.addAll(list); + for(PTerm e : list) { if(e.parent() != null) @@ -87,6 +91,7 @@ public final class AAltTransform extends PAltTransform } e.parent(this); + this._terms_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/AAst.java b/src/main/java/org/sablecc/sablecc/node/AAst.java index f324a73..bf3fc1f 100644 --- a/src/main/java/org/sablecc/sablecc/node/AAst.java +++ b/src/main/java/org/sablecc/sablecc/node/AAst.java @@ -42,8 +42,12 @@ public final class AAst extends PAst public void setProds(List<PAstProd> list) { + for(PAstProd e : this._prods_) + { + e.parent(null); + } this._prods_.clear(); - this._prods_.addAll(list); + for(PAstProd e : list) { if(e.parent() != null) @@ -52,6 +56,7 @@ public final class AAst extends PAst } e.parent(this); + this._prods_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/AAstAlt.java b/src/main/java/org/sablecc/sablecc/node/AAstAlt.java index 3f75eb8..21fa526 100644 --- a/src/main/java/org/sablecc/sablecc/node/AAstAlt.java +++ b/src/main/java/org/sablecc/sablecc/node/AAstAlt.java @@ -72,8 +72,12 @@ public final class AAstAlt extends PAstAlt public void setElems(List<PElem> list) { + for(PElem e : this._elems_) + { + e.parent(null); + } this._elems_.clear(); - this._elems_.addAll(list); + for(PElem e : list) { if(e.parent() != null) @@ -82,6 +86,7 @@ public final class AAstAlt extends PAstAlt } e.parent(this); + this._elems_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/AAstProd.java b/src/main/java/org/sablecc/sablecc/node/AAstProd.java index 902d942..470f33d 100644 --- a/src/main/java/org/sablecc/sablecc/node/AAstProd.java +++ b/src/main/java/org/sablecc/sablecc/node/AAstProd.java @@ -72,8 +72,12 @@ public final class AAstProd extends PAstProd public void setAlts(List<PAstAlt> list) { + for(PAstAlt e : this._alts_) + { + e.parent(null); + } this._alts_.clear(); - this._alts_.addAll(list); + for(PAstAlt e : list) { if(e.parent() != null) @@ -82,6 +86,7 @@ public final class AAstProd extends PAstProd } e.parent(this); + this._alts_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/AConcat.java b/src/main/java/org/sablecc/sablecc/node/AConcat.java index 328986f..194b8a8 100644 --- a/src/main/java/org/sablecc/sablecc/node/AConcat.java +++ b/src/main/java/org/sablecc/sablecc/node/AConcat.java @@ -42,8 +42,12 @@ public final class AConcat extends PConcat public void setUnExps(List<PUnExp> list) { + for(PUnExp e : this._unExps_) + { + e.parent(null); + } this._unExps_.clear(); - this._unExps_.addAll(list); + for(PUnExp e : list) { if(e.parent() != null) @@ -52,6 +56,7 @@ public final class AConcat extends PConcat } e.parent(this); + this._unExps_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/AGrammar.java b/src/main/java/org/sablecc/sablecc/node/AGrammar.java index 8da0a7c..57d4ef7 100644 --- a/src/main/java/org/sablecc/sablecc/node/AGrammar.java +++ b/src/main/java/org/sablecc/sablecc/node/AGrammar.java @@ -72,8 +72,12 @@ public final class AGrammar extends PGrammar public void setPackage(List<TPkgId> list) { + for(TPkgId e : this._package_) + { + e.parent(null); + } this._package_.clear(); - this._package_.addAll(list); + for(TPkgId e : list) { if(e.parent() != null) @@ -82,6 +86,7 @@ public final class AGrammar extends PGrammar } e.parent(this); + this._package_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/AHelpers.java b/src/main/java/org/sablecc/sablecc/node/AHelpers.java index a6ad653..d9df229 100644 --- a/src/main/java/org/sablecc/sablecc/node/AHelpers.java +++ b/src/main/java/org/sablecc/sablecc/node/AHelpers.java @@ -42,8 +42,12 @@ public final class AHelpers extends PHelpers public void setHelperDefs(List<PHelperDef> list) { + for(PHelperDef e : this._helperDefs_) + { + e.parent(null); + } this._helperDefs_.clear(); - this._helperDefs_.addAll(list); + for(PHelperDef e : list) { if(e.parent() != null) @@ -52,6 +56,7 @@ public final class AHelpers extends PHelpers } e.parent(this); + this._helperDefs_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/AIgnTokens.java b/src/main/java/org/sablecc/sablecc/node/AIgnTokens.java index 308ed8b..f608e6e 100644 --- a/src/main/java/org/sablecc/sablecc/node/AIgnTokens.java +++ b/src/main/java/org/sablecc/sablecc/node/AIgnTokens.java @@ -42,8 +42,12 @@ public final class AIgnTokens extends PIgnTokens public void setListId(List<TId> list) { + for(TId e : this._listId_) + { + e.parent(null); + } this._listId_.clear(); - this._listId_.addAll(list); + for(TId e : list) { if(e.parent() != null) @@ -52,6 +56,7 @@ public final class AIgnTokens extends PIgnTokens } e.parent(this); + this._listId_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/AListTerm.java b/src/main/java/org/sablecc/sablecc/node/AListTerm.java index fa01dab..b2a57d9 100644 --- a/src/main/java/org/sablecc/sablecc/node/AListTerm.java +++ b/src/main/java/org/sablecc/sablecc/node/AListTerm.java @@ -72,8 +72,12 @@ public final class AListTerm extends PTerm public void setListTerms(List<PListTerm> list) { + for(PListTerm e : this._listTerms_) + { + e.parent(null); + } this._listTerms_.clear(); - this._listTerms_.addAll(list); + for(PListTerm e : list) { if(e.parent() != null) @@ -82,6 +86,7 @@ public final class AListTerm extends PTerm } e.parent(this); + this._listTerms_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/ANewListTerm.java b/src/main/java/org/sablecc/sablecc/node/ANewListTerm.java index 274ed5a..0a378f8 100644 --- a/src/main/java/org/sablecc/sablecc/node/ANewListTerm.java +++ b/src/main/java/org/sablecc/sablecc/node/ANewListTerm.java @@ -102,8 +102,12 @@ public final class ANewListTerm extends PListTerm public void setParams(List<PTerm> list) { + for(PTerm e : this._params_) + { + e.parent(null); + } this._params_.clear(); - this._params_.addAll(list); + for(PTerm e : list) { if(e.parent() != null) @@ -112,6 +116,7 @@ public final class ANewListTerm extends PListTerm } e.parent(this); + this._params_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/ANewTerm.java b/src/main/java/org/sablecc/sablecc/node/ANewTerm.java index 9ed4904..f71060f 100644 --- a/src/main/java/org/sablecc/sablecc/node/ANewTerm.java +++ b/src/main/java/org/sablecc/sablecc/node/ANewTerm.java @@ -102,8 +102,12 @@ public final class ANewTerm extends PTerm public void setParams(List<PTerm> list) { + for(PTerm e : this._params_) + { + e.parent(null); + } this._params_.clear(); - this._params_.addAll(list); + for(PTerm e : list) { if(e.parent() != null) @@ -112,6 +116,7 @@ public final class ANewTerm extends PTerm } e.parent(this); + this._params_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/AProd.java b/src/main/java/org/sablecc/sablecc/node/AProd.java index b5db8fb..8dac357 100644 --- a/src/main/java/org/sablecc/sablecc/node/AProd.java +++ b/src/main/java/org/sablecc/sablecc/node/AProd.java @@ -107,8 +107,12 @@ public final class AProd extends PProd public void setProdTransform(List<PElem> list) { + for(PElem e : this._prodTransform_) + { + e.parent(null); + } this._prodTransform_.clear(); - this._prodTransform_.addAll(list); + for(PElem e : list) { if(e.parent() != null) @@ -117,6 +121,7 @@ public final class AProd extends PProd } e.parent(this); + this._prodTransform_.add(e); } } @@ -127,8 +132,12 @@ public final class AProd extends PProd public void setAlts(List<PAlt> list) { + for(PAlt e : this._alts_) + { + e.parent(null); + } this._alts_.clear(); - this._alts_.addAll(list); + for(PAlt e : list) { if(e.parent() != null) @@ -137,6 +146,7 @@ public final class AProd extends PProd } e.parent(this); + this._alts_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/AProductions.java b/src/main/java/org/sablecc/sablecc/node/AProductions.java index c65832b..1704b89 100644 --- a/src/main/java/org/sablecc/sablecc/node/AProductions.java +++ b/src/main/java/org/sablecc/sablecc/node/AProductions.java @@ -42,8 +42,12 @@ public final class AProductions extends PProductions public void setProds(List<PProd> list) { + for(PProd e : this._prods_) + { + e.parent(null); + } this._prods_.clear(); - this._prods_.addAll(list); + for(PProd e : list) { if(e.parent() != null) @@ -52,6 +56,7 @@ public final class AProductions extends PProductions } e.parent(this); + this._prods_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/ARegExp.java b/src/main/java/org/sablecc/sablecc/node/ARegExp.java index f4d9226..3950ef3 100644 --- a/src/main/java/org/sablecc/sablecc/node/ARegExp.java +++ b/src/main/java/org/sablecc/sablecc/node/ARegExp.java @@ -42,8 +42,12 @@ public final class ARegExp extends PRegExp public void setConcats(List<PConcat> list) { + for(PConcat e : this._concats_) + { + e.parent(null); + } this._concats_.clear(); - this._concats_.addAll(list); + for(PConcat e : list) { if(e.parent() != null) @@ -52,6 +56,7 @@ public final class ARegExp extends PRegExp } e.parent(this); + this._concats_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/AStateList.java b/src/main/java/org/sablecc/sablecc/node/AStateList.java index 821711a..1fe6417 100644 --- a/src/main/java/org/sablecc/sablecc/node/AStateList.java +++ b/src/main/java/org/sablecc/sablecc/node/AStateList.java @@ -102,8 +102,12 @@ public final class AStateList extends PStateList public void setStateLists(List<PStateListTail> list) { + for(PStateListTail e : this._stateLists_) + { + e.parent(null); + } this._stateLists_.clear(); - this._stateLists_.addAll(list); + for(PStateListTail e : list) { if(e.parent() != null) @@ -112,6 +116,7 @@ public final class AStateList extends PStateList } e.parent(this); + this._stateLists_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/AStates.java b/src/main/java/org/sablecc/sablecc/node/AStates.java index 27ccc36..1374512 100644 --- a/src/main/java/org/sablecc/sablecc/node/AStates.java +++ b/src/main/java/org/sablecc/sablecc/node/AStates.java @@ -42,8 +42,12 @@ public final class AStates extends PStates public void setListId(List<TId> list) { + for(TId e : this._listId_) + { + e.parent(null); + } this._listId_.clear(); - this._listId_.addAll(list); + for(TId e : list) { if(e.parent() != null) @@ -52,6 +56,7 @@ public final class AStates extends PStates } e.parent(this); + this._listId_.add(e); } } diff --git a/src/main/java/org/sablecc/sablecc/node/ATokens.java b/src/main/java/org/sablecc/sablecc/node/ATokens.java index 107b774..1755173 100644 --- a/src/main/java/org/sablecc/sablecc/node/ATokens.java +++ b/src/main/java/org/sablecc/sablecc/node/ATokens.java @@ -42,8 +42,12 @@ public final class ATokens extends PTokens public void setTokenDefs(List<PTokenDef> list) { + for(PTokenDef e : this._tokenDefs_) + { + e.parent(null); + } this._tokenDefs_.clear(); - this._tokenDefs_.addAll(list); + for(PTokenDef e : list) { if(e.parent() != null) @@ -52,6 +56,7 @@ public final class ATokens extends PTokens } e.parent(this); + this._tokenDefs_.add(e); } } diff --git a/src/main/resources/org/sablecc/sablecc/alternatives.txt b/src/main/resources/org/sablecc/sablecc/alternatives.txt index 123ba61..faee29b 100644 --- a/src/main/resources/org/sablecc/sablecc/alternatives.txt +++ b/src/main/resources/org/sablecc/sablecc/alternatives.txt @@ -147,8 +147,12 @@ Macro:GetSetList public void set$0$(List<$2$> list) { + for($2$ e : this._$1$_) + { + e.parent(null); + } this._$1$_.clear(); - this._$1$_.addAll(list); + for($2$ e : list) { if(e.parent() != null) @@ -157,6 +161,7 @@ Macro:GetSetList } e.parent(this); + this._$1$_.add(e); } } -- GitLab