diff --git a/src/main/java/org/sablecc/sablecc/Inlining.java b/src/main/java/org/sablecc/sablecc/Inlining.java index a1686f6d4c63d9118318e2716944215f8071b2aa..0450a29d026e02d3f51f02a2ffc97f4d16434358 100644 --- a/src/main/java/org/sablecc/sablecc/Inlining.java +++ b/src/main/java/org/sablecc/sablecc/Inlining.java @@ -247,7 +247,7 @@ public class Inlining { mapOfNewTermNames = new HashMap<>(); - LinkedList listElems = inlineList(aParsed_alt.getElems(), + List<PElem> listElems = inlineList(aParsed_alt.getElems(), prod_to_inline.getAlternative(j).getElems(), mapOfNewTermNames); AAltTransform aAltTransform = ((AAltTransform)aParsed_alt.getAltTransform()).clone(); @@ -345,22 +345,14 @@ public class Inlining public void caseAListTerm(AListTerm node) { AListTerm parent = (AListTerm)node_.parent(); - LinkedList oldlistTerms = parent.getListTerms(); - LinkedList newlistTerms = new LinkedList(); + List<PListTerm> oldlistTerms = parent.getListTerms(); + List<PListTerm> newlistTerms = new LinkedList<>(); - Object[] oldListTermsArray = (Object[]) oldlistTerms.toArray(); - for(int i=0; i<oldListTermsArray.length; i++) + for(PListTerm oldListTerm : oldlistTerms) { - if(oldListTermsArray[i] != node_) + if(oldListTerm != node_) { - if(oldListTermsArray[i] instanceof PTerm) - { - newlistTerms.add( ((PTerm)oldListTermsArray[i]).clone() ); - } - else - { - newlistTerms.add( ((PListTerm)oldListTermsArray[i]).clone() ); - } + newlistTerms.add(oldListTerm.clone()); } else { @@ -404,12 +396,12 @@ public class Inlining return resultList; } - public LinkedList inlineList(LinkedList oldElemsList, + public List<PElem> inlineList(List<PElem> oldElemsList, AElem[] inliningProductionsElems, Map<String, String> mapOfNewTermNames) { int position = 0; - AElem[] listElems = (AElem[]) oldElemsList.toArray(new AElem[0]); + AElem[] listElems = oldElemsList.toArray(new AElem[0]); for(int i=0; i<listElems.length; i++) { //We are looking for the position of the element inside the alternative. @@ -429,7 +421,7 @@ public class Inlining } } - LinkedList list = new LinkedList(); + List<PElem> list = new LinkedList<>(); int elemPosition = 1; //Before the inlined element (old alternative elements) @@ -445,19 +437,18 @@ public class Inlining } // After the inlined element (old alternative elements) - for(int i=position+1; i<listElems.length; i++) + for(int i=position+1; i<oldElemsList.size(); i++) { list.add(((AElem)oldElemsList.get(i)).clone()); } - AElem[] listOfAltElems = (AElem[]) list.toArray(new AElem[0]); + AElem[] listOfAltElems = list.toArray(new AElem[0]); for(int i=0; i<listOfAltElems.length; i++) { String old_name = listOfAltElems[i].getId().getText(); - TId elemName = (TId)listOfAltElems[i].getElemName(); + TId elemName = listOfAltElems[i].getElemName(); if(elemName != null) { - elemName = (TId)elemName; old_name = elemName.getText(); } @@ -496,13 +487,13 @@ public class Inlining ); } - private List cloneList(List list) + @SuppressWarnings("unchecked") + private <T extends Node> List<T> cloneList(List<T> list) { - List clone = new LinkedList(); + List<T> clone = new LinkedList<>(); - for(Iterator i = list.iterator(); i.hasNext();) - { - clone.add(((Node) i.next()).clone()); + for (final T node : list) { + clone.add((T)node.clone()); } return clone;