From dd81bf81bee885c47a44d064f399814143766618 Mon Sep 17 00:00:00 2001
From: dgelessus <dgelessus@users.noreply.github.com>
Date: Mon, 25 Apr 2022 11:49:11 +0200
Subject: [PATCH] Use generics in ResolveProdTransformIds and related code

---
 .../GenerateAlternativeCodeForParser.java     |  8 ++--
 .../sablecc/ResolveProdTransformIds.java      | 14 +++---
 .../sablecc/sablecc/ResolveTransformIds.java  | 46 +++++++------------
 3 files changed, 28 insertions(+), 40 deletions(-)

diff --git a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
index ba2dfea..2b89df8 100644
--- a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
+++ b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
@@ -223,7 +223,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
         if( !listSimpleTermTransform.contains(node.getId().getText() ) )
         {
           String type = CTP.positionsMap.get( realcurrentAlt+"."+node.getId().getText() );
-          LinkedList list = transformIds.getProdTransformIds().prod_transforms.get(type);
+          List<String> list = transformIds.getProdTransformIds().prod_transforms.get(type);
           if( list.indexOf( node.getSimpleTermTail().getText() ) >= 0 )
           {
             positionMap = list.indexOf( node.getSimpleTermTail().getText() );
@@ -233,7 +233,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
         if(simpleTermOrsimpleListTermTypes.get(node) != null)
         {
           String type = simpleTermOrsimpleListTermTypes.get(node);
-          LinkedList list = transformIds.getProdTransformIds().prod_transforms.get(type);
+          List<String> list = transformIds.getProdTransformIds().prod_transforms.get(type);
           if( list.indexOf( node.getSimpleTermTail().getText() ) >= 0 )
           {
             positionMap = list.indexOf( node.getSimpleTermTail().getText() );
@@ -299,7 +299,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
         if( !listSimpleTermTransform.contains(node.getId().getText()) )
         {
           String type = CTP.positionsMap.get( realcurrentAlt+"."+node.getId().getText() );
-          LinkedList list = transformIds.getProdTransformIds().prod_transforms.get(type);
+          List<String> list = transformIds.getProdTransformIds().prod_transforms.get(type);
           if( list.indexOf( node.getSimpleTermTail().getText() ) >= 0 )
           {
             positionMap = list.indexOf( node.getSimpleTermTail().getText() );
@@ -309,7 +309,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
         if(simpleTermOrsimpleListTermTypes.get(node) != null)
         {
           String type = simpleTermOrsimpleListTermTypes.get(node);
-          LinkedList list = transformIds.getProdTransformIds().prod_transforms.get(type);
+          List<String> list = transformIds.getProdTransformIds().prod_transforms.get(type);
           if( list.indexOf( node.getSimpleTermTail().getText() ) >= 0 )
           {
             positionMap = list.indexOf( node.getSimpleTermTail().getText() );
diff --git a/src/main/java/org/sablecc/sablecc/ResolveProdTransformIds.java b/src/main/java/org/sablecc/sablecc/ResolveProdTransformIds.java
index 064041b..d615942 100644
--- a/src/main/java/org/sablecc/sablecc/ResolveProdTransformIds.java
+++ b/src/main/java/org/sablecc/sablecc/ResolveProdTransformIds.java
@@ -25,12 +25,12 @@ public class ResolveProdTransformIds extends DepthFirstAdapter
 {
   private ResolveAstIds transformIds;
 
-  private LinkedList listElems;
+  private List<String> listElems;
 
   private String prod_name;
 
-  public LinkedList listProdTransformList = new LinkedList();
-  private LinkedList listProdTransformContainsList;
+  public List<String> listProdTransformList = new LinkedList<>();
+  private List<String> listProdTransformContainsList;
 
   //Map of production transformation element type. The key of this map
   //is the node of this element in the AST.
@@ -41,10 +41,10 @@ public class ResolveProdTransformIds extends DepthFirstAdapter
   public final Map<String, String> prodTransformElemTypesString = new HashMap<>();
 
   //Map of Productions which transformations contains list elements.
-  public Map<String, LinkedList> mapProdTransformContainsList = new TreeMap<>();
+  public Map<String, List<String>> mapProdTransformContainsList = new TreeMap<>();
 
   //Map of all Production transformations elements.
-  public final Map<String, LinkedList> prod_transforms = new TreeMap<>();
+  public final Map<String, List<String>> prod_transforms = new TreeMap<>();
 
   public ResolveProdTransformIds(ResolveAstIds ids)
   {
@@ -58,9 +58,9 @@ public class ResolveProdTransformIds extends DepthFirstAdapter
 
     PElem[] temp = production.getProdTransform().toArray(new PElem[0]);
 
-    listProdTransformContainsList = new LinkedList();
+    listProdTransformContainsList = new LinkedList<>();
 
-    listElems = new LinkedList();
+    listElems = new LinkedList<>();
 
     if( temp.length > 1 )
     {
diff --git a/src/main/java/org/sablecc/sablecc/ResolveTransformIds.java b/src/main/java/org/sablecc/sablecc/ResolveTransformIds.java
index dc26aee..75f90f7 100644
--- a/src/main/java/org/sablecc/sablecc/ResolveTransformIds.java
+++ b/src/main/java/org/sablecc/sablecc/ResolveTransformIds.java
@@ -43,7 +43,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
   //This Map contains the type of any term of alternative transformation(altTransform)
   public final Map<Node, String> altTransformElemTypes = new HashMap<>();
 
-  public final Map<String, LinkedList> mapSimpleTermProdTransformation = new HashMap<>();
+  public final Map<String, List<String>> mapSimpleTermProdTransformation = new HashMap<>();
 
   public final Map<Node, String> simpleTermOrsimpleListTermTypes = new HashMap<>();
 
@@ -340,8 +340,8 @@ public class ResolveTransformIds extends DepthFirstAdapter
     }
   }
 
-  private LinkedList listL;
-  private LinkedList listP;
+  private List<String> listL;
+  private List<String> listP;
   private String lastSimpleTerm;
 
   @Override
@@ -421,7 +421,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
           {
             if(prodTransformIds.prod_transforms.get(typeOfExplicitElemName) != null)
             {
-              listL = (LinkedList)prodTransformIds.prod_transforms.get(typeOfExplicitElemName).clone();
+              listL = new LinkedList<>(prodTransformIds.prod_transforms.get(typeOfExplicitElemName));
               mapSimpleTermProdTransformation.put(currentAlt+"."+tmpName, listL);
             }
           }
@@ -435,7 +435,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
           listP = prodTransformIds.prod_transforms.get(name);
           if(prodTransformIds.prod_transforms.get(name) != null)
           {
-            listP = (LinkedList)prodTransformIds.prod_transforms.get(name).clone();
+            listP = new LinkedList<>(prodTransformIds.prod_transforms.get(name));
             mapSimpleTermProdTransformation.put(currentAlt+".P"+tmpName, listP);
           }
         }
@@ -449,7 +449,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
 
       boolean blistL = false;
 
-      if( ( (typeOfExplicitElemName != null) && (listL!= null) && (listL.size()==1) && ResolveIds.name((String)listL.getFirst()).equals(typeOfExplicitElemName.substring(1)) ) ||
+      if( ( (typeOfExplicitElemName != null) && (listL!= null) && (listL.size()==1) && ResolveIds.name(listL.get(0)).equals(typeOfExplicitElemName.substring(1)) ) ||
           ( (typeOfExplicitElemName == null) && (listP!= null) && (listP.size()==1) && listP.contains(node.getId().getText()) ) )
       {
         blistL = true;
@@ -482,17 +482,13 @@ public class ResolveTransformIds extends DepthFirstAdapter
         }
         else
         {
-          ListIterator iter = null;
-
           if(listL != null)
           {
-            iter = listL.listIterator();
-
             position = listL.indexOf(strTermTail);
 
-            while(iter.hasNext())
+            for(Iterator<String> iter = listL.listIterator(); iter.hasNext();)
             {
-              if( strTermTail.equals((String)iter.next()) )
+              if( strTermTail.equals(iter.next()) )
               {
                 iter.remove();
                 break;
@@ -502,13 +498,11 @@ public class ResolveTransformIds extends DepthFirstAdapter
 
           if(listP != null)
           {
-            iter = listP.listIterator();
-
             position = listP.indexOf(strTermTail);
 
-            while(iter.hasNext())
+            for(Iterator<String> iter = listP.listIterator(); iter.hasNext();)
             {
-              if( strTermTail.equals((String)iter.next()) )
+              if( strTermTail.equals(iter.next()) )
               {
                 iter.remove();
                 break;
@@ -650,7 +644,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
           {
             if(prodTransformIds.prod_transforms.get(typeOfExplicitElemName) != null)
             {
-              listL = (LinkedList)prodTransformIds.prod_transforms.get(typeOfExplicitElemName).clone();
+              listL = new LinkedList<>(prodTransformIds.prod_transforms.get(typeOfExplicitElemName));
               mapSimpleTermProdTransformation.put(currentAlt+"."+tmpName, listL);
             }
           }
@@ -664,7 +658,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
           listP = prodTransformIds.prod_transforms.get(name);
           if(prodTransformIds.prod_transforms.get(name) != null)
           {
-            listP = (LinkedList)prodTransformIds.prod_transforms.get(name).clone();
+            listP = new LinkedList<>(prodTransformIds.prod_transforms.get(name));
             mapSimpleTermProdTransformation.put(currentAlt+".P"+tmpName, listP);
           }
         }
@@ -678,7 +672,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
 
       boolean blistL = false;
 
-      if( ( (typeOfExplicitElemName != null) && (listL!= null) && (listL.size()==1) && ResolveIds.name((String)listL.getFirst()).equals(typeOfExplicitElemName.substring(1)) ) ||
+      if( ( (typeOfExplicitElemName != null) && (listL!= null) && (listL.size()==1) && ResolveIds.name(listL.get(0)).equals(typeOfExplicitElemName.substring(1)) ) ||
           ( (typeOfExplicitElemName == null) && (listP!= null) && (listP.size()==1) && listP.contains(node.getId().getText()) ) )
       {
         blistL = true;
@@ -710,17 +704,13 @@ public class ResolveTransformIds extends DepthFirstAdapter
         }
         else
         {
-          ListIterator iter = null;
-
           if(listL != null)
           {
-            iter = listL.listIterator();
-
             position = listL.indexOf(strTermTail);
 
-            while(iter.hasNext())
+            for(Iterator<String> iter = listL.iterator(); iter.hasNext();)
             {
-              if( strTermTail.equals((String)iter.next()) )
+              if( strTermTail.equals(iter.next()) )
               {
                 iter.remove();
                 break;
@@ -730,13 +720,11 @@ public class ResolveTransformIds extends DepthFirstAdapter
 
           if(listP != null)
           {
-            iter = listP.listIterator();
-
             position = listP.indexOf(strTermTail);
 
-            while(iter.hasNext())
+            for(Iterator<String> iter = listP.iterator(); iter.hasNext();)
             {
-              if( strTermTail.equals((String)iter.next()) )
+              if( strTermTail.equals(iter.next()) )
               {
                 iter.remove();
                 break;
-- 
GitLab