From 0aae6d9910df2a736a58271804311f6cb9404afb Mon Sep 17 00:00:00 2001 From: Sam Harwell Date: Mon, 30 Sep 2013 18:44:37 -0500 Subject: [PATCH 01/12] Improved usage of generic reflection types --- src/org/antlr/works/IDE.java | 8 +-- .../components/GrammarDocumentFactory.java | 6 +- .../antlr/works/debugger/DebuggerEngine.java | 6 +- .../works/debugger/panels/DBEventsPanel.java | 2 +- .../antlr/works/grammar/RefactorEngine.java | 2 +- src/org/antlr/works/stats/Statistics.java | 2 +- .../stringtemplate/STDocumentFactory.java | 6 +- .../antlr/xjlib/appkit/app/XJApplication.java | 10 ++-- .../appkit/app/XJApplicationDelegate.java | 5 +- .../antlr/xjlib/appkit/app/XJPreferences.java | 2 +- .../appkit/document/XJDocumentFactory.java | 14 ++--- .../xjlib/appkit/utils/BrowserLauncher.java | 58 +++++++++---------- 12 files changed, 62 insertions(+), 59 deletions(-) diff --git a/src/org/antlr/works/IDE.java b/src/org/antlr/works/IDE.java index e6a4088b..cbcac03c 100644 --- a/src/org/antlr/works/IDE.java +++ b/src/org/antlr/works/IDE.java @@ -278,7 +278,7 @@ public String getMessage() { } public static String getApplicationPath() { - Class c = XJApplication.getAppDelegate().getClass(); + Class c = XJApplication.getAppDelegate().getClass(); URL url = c.getProtectionDomain().getCodeSource().getLocation(); String p; if(url == null) { @@ -332,7 +332,7 @@ public static String getApplicationPath() { return p; } - public static void debugVerbose(Console console, Class c, String s) { + public static void debugVerbose(Console console, Class c, String s) { if(AWPrefs.getDebugVerbose()) { String message = c.getName()+": "+s; if(console != null) @@ -398,7 +398,7 @@ public void appWillTerminate() { StatisticsAW.shared().close(); } - public Class appPreferencesPanelClass() { + public Class appPreferencesPanelClass() { return AWPrefsDialog.class; } @@ -418,7 +418,7 @@ public boolean useDesktopMode() { return AWPrefs.getUseDesktopMode(); } - public Class appPreferencesClass() { + public Class appPreferencesClass() { return IDE.class; } diff --git a/src/org/antlr/works/components/GrammarDocumentFactory.java b/src/org/antlr/works/components/GrammarDocumentFactory.java index e8d37025..d0f3b361 100644 --- a/src/org/antlr/works/components/GrammarDocumentFactory.java +++ b/src/org/antlr/works/components/GrammarDocumentFactory.java @@ -2,7 +2,9 @@ import org.antlr.works.utils.Localizable; import org.antlr.xjlib.appkit.document.XJDataPlainText; -import org.antlr.xjlib.appkit.document.XJDocumentFactory;/* +import org.antlr.xjlib.appkit.document.XJDocumentFactory; +import org.antlr.xjlib.appkit.frame.XJWindow; +/* [The "BSD licence"] Copyright (c) 2005-07 Jean Bovet @@ -36,7 +38,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT public class GrammarDocumentFactory extends XJDocumentFactory { // todo provide factory? - public GrammarDocumentFactory(Class windowClass) { + public GrammarDocumentFactory(Class windowClass) { super(GrammarDocument.class, windowClass, XJDataPlainText.class, diff --git a/src/org/antlr/works/debugger/DebuggerEngine.java b/src/org/antlr/works/debugger/DebuggerEngine.java index e15f013a..0bb31623 100644 --- a/src/org/antlr/works/debugger/DebuggerEngine.java +++ b/src/org/antlr/works/debugger/DebuggerEngine.java @@ -225,10 +225,8 @@ public static String compileFiles(Console console, String[] files, String output System.arraycopy(files, 0, args, 2, files.length); Class javac = Class.forName("com.sun.tools.javac.Main"); - Class[] p = new Class[] { String[].class }; - Method m = javac.getMethod("compile", p); - Object[] a = new Object[] { args }; - Object r = m.invoke(javac.newInstance(), a); + Method m = javac.getMethod("compile", String[].class); + Object r = m.invoke(javac.newInstance(), (Object)args); result = (Integer) r; //result = com.sun.tools.javac.Main.compile(args); } diff --git a/src/org/antlr/works/debugger/panels/DBEventsPanel.java b/src/org/antlr/works/debugger/panels/DBEventsPanel.java index 7b49d8e5..906a4598 100644 --- a/src/org/antlr/works/debugger/panels/DBEventsPanel.java +++ b/src/org/antlr/works/debugger/panels/DBEventsPanel.java @@ -155,7 +155,7 @@ public String getColumnName(int column) { return super.getColumnName(column); } - public Class getColumnClass(int columnIndex) { + public Class getColumnClass(int columnIndex) { switch(columnIndex) { case INFO_COLUMN_COUNT: return String.class; case INFO_COLUMN_EVENT: return String.class; diff --git a/src/org/antlr/works/grammar/RefactorEngine.java b/src/org/antlr/works/grammar/RefactorEngine.java index 06427de1..b61cfa2e 100644 --- a/src/org/antlr/works/grammar/RefactorEngine.java +++ b/src/org/antlr/works/grammar/RefactorEngine.java @@ -74,7 +74,7 @@ public boolean renameToken(ATEToken t, String name) { public static boolean ignoreScopeForDoubleQuoteLiteral(ATEScope scope) { if(scope == null) return false; - Class c = scope.getClass(); + Class c = scope.getClass(); return c.equals(ElementAction.class) || c.equals(ElementBlock.class) || c.equals(ElementRewriteBlock.class) || c.equals(ElementRewriteFunction.class) || c.equals(ElementArgumentBlock.class); } diff --git a/src/org/antlr/works/stats/Statistics.java b/src/org/antlr/works/stats/Statistics.java index a27ed421..e685d434 100644 --- a/src/org/antlr/works/stats/Statistics.java +++ b/src/org/antlr/works/stats/Statistics.java @@ -87,7 +87,7 @@ public String appVersionLong() { return IDE.VERSION; } - public Class appPreferencesClass() { + public Class appPreferencesClass() { return IDE.class; } diff --git a/src/org/antlr/works/stringtemplate/STDocumentFactory.java b/src/org/antlr/works/stringtemplate/STDocumentFactory.java index c7746174..31d058f9 100644 --- a/src/org/antlr/works/stringtemplate/STDocumentFactory.java +++ b/src/org/antlr/works/stringtemplate/STDocumentFactory.java @@ -1,7 +1,9 @@ package org.antlr.works.stringtemplate; import org.antlr.xjlib.appkit.document.XJDataPlainText; -import org.antlr.xjlib.appkit.document.XJDocumentFactory;/* +import org.antlr.xjlib.appkit.document.XJDocumentFactory; +import org.antlr.xjlib.appkit.frame.XJWindow; +/* [The "BSD licence"] Copyright (c) 2005-07 Jean Bovet @@ -35,7 +37,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT public class STDocumentFactory extends XJDocumentFactory { // todo provide factory? - public STDocumentFactory(Class windowClass) { + public STDocumentFactory(Class windowClass) { super(STDocument.class, windowClass, XJDataPlainText.class, diff --git a/src/org/antlr/xjlib/appkit/app/XJApplication.java b/src/org/antlr/xjlib/appkit/app/XJApplication.java index fccdec85..5ca1f1fa 100755 --- a/src/org/antlr/xjlib/appkit/app/XJApplication.java +++ b/src/org/antlr/xjlib/appkit/app/XJApplication.java @@ -31,6 +31,8 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT package org.antlr.xjlib.appkit.app; +import org.antlr.xjlib.appkit.app.MacOS.XJApplicationMacOS; +import org.antlr.xjlib.appkit.document.XJData; import org.antlr.xjlib.appkit.document.XJDocument; import org.antlr.xjlib.appkit.document.XJDocumentFactory; import org.antlr.xjlib.appkit.frame.XJFrame; @@ -101,7 +103,7 @@ public static synchronized XJApplicationInterface shared() { if(shared == null) { if(XJSystem.isMacOS()) { try { - shared = (XJApplication)Class.forName("org.antlr.xjlib.appkit.app.MacOS.XJApplicationMacOS").newInstance(); + shared = new XJApplicationMacOS(); } catch (Exception e) { e.printStackTrace(); System.err.println("XJApplication: cannot instanciate the MacOS application ("+e+")"); @@ -258,7 +260,7 @@ public void displayAbout() { public void displayPrefs() { if(prefs == null) { try { - prefs = (XJPanel)delegate.appPreferencesPanelClass().newInstance(); + prefs = delegate.appPreferencesPanelClass().newInstance(); prefs.setDelegate(this); prefs.awake(); } catch (Exception e) { @@ -323,7 +325,7 @@ protected void removePreferencesMenuItem() { // *** XJDocument - public static void addDocumentFactory(Class documentClass, Class windowClass, Class dataClass, String ext, String description) { + public static void addDocumentFactory(Class documentClass, Class windowClass, Class dataClass, String ext, String description) { addDocumentFactory(new XJDocumentFactory(documentClass, windowClass, dataClass, ext, description)); } @@ -650,7 +652,7 @@ public boolean useDesktopMode() { return useDesktopMode; } - public Class getPreferencesClass() { + public Class getPreferencesClass() { if(delegate == null) return XJApplication.class; else diff --git a/src/org/antlr/xjlib/appkit/app/XJApplicationDelegate.java b/src/org/antlr/xjlib/appkit/app/XJApplicationDelegate.java index e095bdc5..fe6d1695 100755 --- a/src/org/antlr/xjlib/appkit/app/XJApplicationDelegate.java +++ b/src/org/antlr/xjlib/appkit/app/XJApplicationDelegate.java @@ -32,7 +32,6 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT package org.antlr.xjlib.appkit.app; import org.antlr.xjlib.appkit.frame.XJPanel; -import org.antlr.xjlib.appkit.frame.XJDialog; import org.antlr.xjlib.appkit.menu.XJMenu; import org.antlr.xjlib.appkit.document.XJDocument; @@ -44,12 +43,12 @@ public abstract class XJApplicationDelegate { public String appVersionLong() { return null; } public void appDidLaunch(String[] args, List documentsToOpenAtStartup) {} public void appWillTerminate() {} - public Class appPreferencesPanelClass() { return null; } + public Class appPreferencesPanelClass() { return null; } public XJPanel appInstanciateAboutPanel() { return null; } public void appShowHelp() {} public boolean appHasPreferencesMenuItem() { return false; } public boolean appShouldQuitAfterLastWindowClosed() { return false; } - public Class appPreferencesClass() { return null; } + public Class appPreferencesClass() { return null; } public boolean supportsPersistence() { return true; } public boolean useDesktopMode() { return false; } public boolean displayNewDocumentWizard(XJDocument document) { return false; } diff --git a/src/org/antlr/xjlib/appkit/app/XJPreferences.java b/src/org/antlr/xjlib/appkit/app/XJPreferences.java index 40ab6f27..f44378c1 100755 --- a/src/org/antlr/xjlib/appkit/app/XJPreferences.java +++ b/src/org/antlr/xjlib/appkit/app/XJPreferences.java @@ -50,7 +50,7 @@ public class XJPreferences { protected Preferences prefs = null; protected Map bindings = new HashMap(); - public XJPreferences(Class c) { + public XJPreferences(Class c) { this.prefs = Preferences.userNodeForPackage(c); } diff --git a/src/org/antlr/xjlib/appkit/document/XJDocumentFactory.java b/src/org/antlr/xjlib/appkit/document/XJDocumentFactory.java index ccb46bac..c70da8a5 100755 --- a/src/org/antlr/xjlib/appkit/document/XJDocumentFactory.java +++ b/src/org/antlr/xjlib/appkit/document/XJDocumentFactory.java @@ -38,13 +38,13 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT public class XJDocumentFactory { - private Class documentClass; - private Class windowClass; - private Class dataClass; + private Class documentClass; + private Class windowClass; + private Class dataClass; private String ext; private String description; - public XJDocumentFactory(Class documentClass, Class windowClass, Class dataClass, String ext, String description) { + public XJDocumentFactory(Class documentClass, Class windowClass, Class dataClass, String ext, String description) { this.documentClass = documentClass; this.windowClass = windowClass; this.dataClass = dataClass; @@ -65,11 +65,11 @@ public String getDescriptionString() { } public XJDocument createDocument() throws IllegalAccessException, InstantiationException { - XJDocument document = (XJDocument)documentClass.newInstance(); - document.setDocumentData((XJData)dataClass.newInstance()); + XJDocument document = documentClass.newInstance(); + document.setDocumentData(dataClass.newInstance()); document.setDocumentFileType(getExtensions(), getDescriptionString()); - XJWindow window = (XJWindow)windowClass.newInstance(); + XJWindow window = windowClass.newInstance(); window.addDocument(document); document.setWindow(window); diff --git a/src/org/antlr/xjlib/appkit/utils/BrowserLauncher.java b/src/org/antlr/xjlib/appkit/utils/BrowserLauncher.java index 1d26ca39..0b5221ea 100755 --- a/src/org/antlr/xjlib/appkit/utils/BrowserLauncher.java +++ b/src/org/antlr/xjlib/appkit/utils/BrowserLauncher.java @@ -71,10 +71,10 @@ public class BrowserLauncher { private static boolean loadedWithoutErrors; /** The com.apple.mrj.MRJFileUtils class */ - private static Class mrjFileUtilsClass; + private static Class mrjFileUtilsClass; /** The com.apple.mrj.MRJOSType class */ - private static Class mrjOSTypeClass; + private static Class mrjOSTypeClass; /** The com.apple.MacOS.AEDesc class */ private static Class aeDescClass; @@ -259,18 +259,18 @@ private static boolean loadClasses() { case MRJ_2_0: try { Class aeTargetClass = Class.forName("com.apple.MacOS.AETarget"); - Class osUtilsClass = Class.forName("com.apple.MacOS.OSUtils"); + Class osUtilsClass = Class.forName("com.apple.MacOS.OSUtils"); Class appleEventClass = Class.forName("com.apple.MacOS.AppleEvent"); - Class aeClass = Class.forName("com.apple.MacOS.ae"); + Class aeClass = Class.forName("com.apple.MacOS.ae"); aeDescClass = Class.forName("com.apple.MacOS.AEDesc"); - aeTargetConstructor = aeTargetClass.getDeclaredConstructor(new Class [] { int.class }); - appleEventConstructor = appleEventClass.getDeclaredConstructor(new Class[] { int.class, int.class, aeTargetClass, int.class, int.class }); - aeDescConstructor = aeDescClass.getDeclaredConstructor(new Class[] { String.class }); + aeTargetConstructor = aeTargetClass.getDeclaredConstructor(int.class); + appleEventConstructor = appleEventClass.getDeclaredConstructor(int.class, int.class, aeTargetClass, int.class, int.class); + aeDescConstructor = aeDescClass.getDeclaredConstructor(String.class); - makeOSType = osUtilsClass.getDeclaredMethod("makeOSType", new Class [] { String.class }); - putParameter = appleEventClass.getDeclaredMethod("putParameter", new Class[] { int.class, aeDescClass }); - sendNoReply = appleEventClass.getDeclaredMethod("sendNoReply", new Class[] { }); + makeOSType = osUtilsClass.getDeclaredMethod("makeOSType", String.class); + putParameter = appleEventClass.getDeclaredMethod("putParameter", int.class, aeDescClass); + sendNoReply = appleEventClass.getDeclaredMethod("sendNoReply"); Field keyDirectObjectField = aeClass.getDeclaredField("keyDirectObject"); keyDirectObject = (Integer) keyDirectObjectField.get(null); @@ -298,9 +298,9 @@ private static boolean loadClasses() { mrjOSTypeClass = Class.forName("com.apple.mrj.MRJOSType"); Field systemFolderField = mrjFileUtilsClass.getDeclaredField("kSystemFolderType"); kSystemFolderType = systemFolderField.get(null); - findFolder = mrjFileUtilsClass.getDeclaredMethod("findFolder", new Class[] { mrjOSTypeClass }); - getFileCreator = mrjFileUtilsClass.getDeclaredMethod("getFileCreator", new Class[] { File.class }); - getFileType = mrjFileUtilsClass.getDeclaredMethod("getFileType", new Class[] { File.class }); + findFolder = mrjFileUtilsClass.getDeclaredMethod("findFolder", mrjOSTypeClass); + getFileCreator = mrjFileUtilsClass.getDeclaredMethod("getFileCreator", File.class); + getFileType = mrjFileUtilsClass.getDeclaredMethod("getFileType", File.class); } catch (ClassNotFoundException cnfe) { errorMessage = cnfe.getMessage(); return false; @@ -321,8 +321,8 @@ private static boolean loadClasses() { case MRJ_3_0: try { Class linker = Class.forName("com.apple.mrj.jdirect.Linker"); - Constructor constructor = linker.getConstructor(new Class[]{ Class.class }); - linkage = constructor.newInstance(new Object[] { BrowserLauncher.class }); + Constructor constructor = linker.getConstructor(Class.class); + linkage = constructor.newInstance(BrowserLauncher.class); } catch (ClassNotFoundException cnfe) { errorMessage = cnfe.getMessage(); return false; @@ -343,7 +343,7 @@ private static boolean loadClasses() { case MRJ_3_1: try { mrjFileUtilsClass = Class.forName("com.apple.mrj.MRJFileUtils"); - openURL = mrjFileUtilsClass.getDeclaredMethod("openURL", new Class[] { String.class }); + openURL = mrjFileUtilsClass.getDeclaredMethod("openURL", String.class); } catch (ClassNotFoundException cnfe) { errorMessage = cnfe.getMessage(); return false; @@ -374,10 +374,10 @@ private static Object locateBrowser() { switch (jvm) { case MRJ_2_0: try { - Integer finderCreatorCode = (Integer) makeOSType.invoke(null, new Object[] { FINDER_CREATOR }); - Object aeTarget = aeTargetConstructor.newInstance(new Object[] { finderCreatorCode }); - Integer gurlType = (Integer) makeOSType.invoke(null, new Object[] { GURL_EVENT }); - Object appleEvent = appleEventConstructor.newInstance(new Object[] { gurlType, gurlType, aeTarget, kAutoGenerateReturnID, kAnyTransactionID }); + Integer finderCreatorCode = (Integer) makeOSType.invoke(null, FINDER_CREATOR); + Object aeTarget = aeTargetConstructor.newInstance(finderCreatorCode); + Integer gurlType = (Integer) makeOSType.invoke(null, GURL_EVENT); + Object appleEvent = appleEventConstructor.newInstance(gurlType, gurlType, aeTarget, kAutoGenerateReturnID, kAnyTransactionID); // Don't set browser = appleEvent because then the next time we call // locateBrowser(), we'll get the same AppleEvent, to which we'll already have // added the relevant parameter. Instead, regenerate the AppleEvent every time. @@ -400,7 +400,7 @@ private static Object locateBrowser() { case MRJ_2_1: File systemFolder; try { - systemFolder = (File) findFolder.invoke(null, new Object[] { kSystemFolderType }); + systemFolder = (File) findFolder.invoke(null, kSystemFolderType); } catch (IllegalArgumentException iare) { browser = null; errorMessage = iare.getMessage(); @@ -427,9 +427,9 @@ private static Object locateBrowser() { // applications being picked up on certain Mac OS 9 systems, // especially German ones, and sending a GURL event to those // applications results in a logout under Multiple Users. - Object fileType = getFileType.invoke(null, new Object[] { file }); + Object fileType = getFileType.invoke(null, file); if (FINDER_TYPE.equals(fileType.toString())) { - Object fileCreator = getFileCreator.invoke(null, new Object[] { file }); + Object fileCreator = getFileCreator.invoke(null, file); if (FINDER_CREATOR.equals(fileCreator.toString())) { browser = file.toString(); // Actually the Finder, but that's OK return browser; @@ -488,9 +488,9 @@ public static void openURL(String url) throws IOException { case MRJ_2_0: Object aeDesc; try { - aeDesc = aeDescConstructor.newInstance(new Object[] { url }); - putParameter.invoke(browser, new Object[] { keyDirectObject, aeDesc }); - sendNoReply.invoke(browser, new Object[] { }); + aeDesc = aeDescConstructor.newInstance(url); + putParameter.invoke(browser, keyDirectObject, aeDesc); + sendNoReply.invoke(browser); } catch (InvocationTargetException ite) { throw new IOException("InvocationTargetException while creating AEDesc: " + ite.getMessage()); } catch (IllegalAccessException iae) { @@ -528,7 +528,7 @@ public static void openURL(String url) throws IOException { break; case MRJ_3_1: try { - openURL.invoke(null, new Object[] { url }); + openURL.invoke(null, url); } catch (InvocationTargetException ite) { throw new IOException("InvocationTargetException while calling openURL: " + ite.getMessage()); } catch (IllegalAccessException iae) { @@ -574,7 +574,7 @@ private static boolean openUnixBrowser(String browser, String url) { Process process; try { // First, attempt to open the URL in a currently running session of Netscape - process = Runtime.getRuntime().exec(new String[] { (String) browser, + process = Runtime.getRuntime().exec(new String[] { browser, NETSCAPE_REMOTE_PARAMETER, NETSCAPE_OPEN_PARAMETER_START + url + @@ -582,7 +582,7 @@ private static boolean openUnixBrowser(String browser, String url) { try { int exitCode = process.waitFor(); if (exitCode != 0) { // if Netscape was not open - Runtime.getRuntime().exec(new String[] { (String) browser, url }); + Runtime.getRuntime().exec(new String[] { browser, url }); exitCode = 0; } success = (exitCode == 0); From 39c17bd9e96de166d9bedce9cf468590a32e2a14 Mon Sep 17 00:00:00 2001 From: Sam Harwell Date: Mon, 30 Sep 2013 18:49:43 -0500 Subject: [PATCH 02/12] Properly implement generic Comparable interface --- src/org/antlr/works/ate/swing/ATERenderingToken.java | 11 +++++------ src/org/antlr/works/ate/syntax/misc/ATEToken.java | 11 +++++------ .../antlr/works/grammar/element/ElementImport.java | 7 +++---- .../antlr/works/grammar/element/ElementReference.java | 7 +++---- src/org/antlr/works/grammar/element/ElementRule.java | 7 +++---- .../element/ElementTemplateReference.java | 7 +++---- .../stringtemplate/element/ElementTemplateRule.java | 7 +++---- 7 files changed, 25 insertions(+), 32 deletions(-) diff --git a/src/org/antlr/works/ate/swing/ATERenderingToken.java b/src/org/antlr/works/ate/swing/ATERenderingToken.java index ac386d10..618643a9 100644 --- a/src/org/antlr/works/ate/swing/ATERenderingToken.java +++ b/src/org/antlr/works/ate/swing/ATERenderingToken.java @@ -37,7 +37,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -public abstract class ATERenderingToken implements Comparable { +public abstract class ATERenderingToken implements Comparable { protected int index; @@ -52,11 +52,10 @@ public void setIndex(int index) { public abstract void drawToken(ATERenderingView view, ATERenderingToken t, Graphics g, FontMetrics metrics, int x, int y, char c, Document doc, AttributeSet attribute, Segment text) throws BadLocationException; - public int compareTo(Object o) { - if(!(o instanceof ATERenderingToken)) return 0; - ATERenderingToken other = (ATERenderingToken) o; - if(index > other.index) return 1; - if(index < other.index) return -1; + public int compareTo(ATERenderingToken o) { + if(o == null) return 1; + if(index > o.index) return 1; + if(index < o.index) return -1; return 0; } } diff --git a/src/org/antlr/works/ate/syntax/misc/ATEToken.java b/src/org/antlr/works/ate/syntax/misc/ATEToken.java index 3cc7c2c5..d38f416b 100644 --- a/src/org/antlr/works/ate/syntax/misc/ATEToken.java +++ b/src/org/antlr/works/ate/syntax/misc/ATEToken.java @@ -31,7 +31,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT package org.antlr.works.ate.syntax.misc; -public class ATEToken implements Comparable { +public class ATEToken implements Comparable { public int type; @@ -112,13 +112,12 @@ public boolean equals(Object otherObject) { } } - public int compareTo(Object o) { - if(o instanceof ATEToken) { - ATEToken otherToken = (ATEToken)o; - return this.getAttribute().compareTo(otherToken.getAttribute()); - } else { + public int compareTo(ATEToken o) { + if (o == null) { return 1; } + + return this.getAttribute().compareTo(o.getAttribute()); } public String toString() { diff --git a/src/org/antlr/works/grammar/element/ElementImport.java b/src/org/antlr/works/grammar/element/ElementImport.java index 80b3175a..844d160f 100644 --- a/src/org/antlr/works/grammar/element/ElementImport.java +++ b/src/org/antlr/works/grammar/element/ElementImport.java @@ -32,7 +32,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -public class ElementImport implements Comparable, Jumpable { +public class ElementImport implements Comparable, Jumpable { public ElementGrammarName name; public ATEToken token; @@ -54,9 +54,8 @@ public int getEndIndex() { return token.end; } - public int compareTo(Object o) { - ElementReference otherRef = (ElementReference)o; - return token.compareTo(otherRef.token); + public int compareTo(ElementReference o) { + return token.compareTo(o.token); } public boolean containsIndex(int index) { diff --git a/src/org/antlr/works/grammar/element/ElementReference.java b/src/org/antlr/works/grammar/element/ElementReference.java index f19a3089..476c7ae0 100644 --- a/src/org/antlr/works/grammar/element/ElementReference.java +++ b/src/org/antlr/works/grammar/element/ElementReference.java @@ -32,7 +32,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -public class ElementReference implements Comparable, Jumpable { +public class ElementReference implements Comparable, Jumpable { public ElementRule rule; public ATEToken token; @@ -54,9 +54,8 @@ public int getEndIndex() { return token.end; } - public int compareTo(Object o) { - ElementReference otherRef = (ElementReference)o; - return token.compareTo(otherRef.token); + public int compareTo(ElementReference o) { + return token.compareTo(o.token); } public boolean containsIndex(int index) { diff --git a/src/org/antlr/works/grammar/element/ElementRule.java b/src/org/antlr/works/grammar/element/ElementRule.java index 1deb6cec..17b806d6 100644 --- a/src/org/antlr/works/grammar/element/ElementRule.java +++ b/src/org/antlr/works/grammar/element/ElementRule.java @@ -45,7 +45,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -public class ElementRule extends ElementScopable implements Comparable, EditorPersistentObject, ATEFoldingEntity, ATEGutterItem { +public class ElementRule extends ElementScopable implements Comparable, EditorPersistentObject, ATEFoldingEntity, ATEGutterItem { public String name; public ATEToken start; @@ -337,9 +337,8 @@ public boolean containsIndex(int index) { return index >= getStartIndex() && index <= getEndIndex(); } - public int compareTo(Object o) { - ElementRule otherRule = (ElementRule) o; - return this.name.compareTo(otherRule.name); + public int compareTo(ElementRule o) { + return this.name.compareTo(o.name); } public int getUniqueIdentifier() { diff --git a/src/org/antlr/works/stringtemplate/element/ElementTemplateReference.java b/src/org/antlr/works/stringtemplate/element/ElementTemplateReference.java index b52a69ec..56664f0c 100644 --- a/src/org/antlr/works/stringtemplate/element/ElementTemplateReference.java +++ b/src/org/antlr/works/stringtemplate/element/ElementTemplateReference.java @@ -32,7 +32,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -public class ElementTemplateReference implements Comparable, Jumpable { +public class ElementTemplateReference implements Comparable, Jumpable { public ElementTemplateRule rule; public ATEToken token; @@ -54,9 +54,8 @@ public int getEndIndex() { return token.end; } - public int compareTo(Object o) { - ElementTemplateReference otherRef = (ElementTemplateReference)o; - return token.compareTo(otherRef.token); + public int compareTo(ElementTemplateReference o) { + return token.compareTo(o.token); } public boolean containsIndex(int index) { diff --git a/src/org/antlr/works/stringtemplate/element/ElementTemplateRule.java b/src/org/antlr/works/stringtemplate/element/ElementTemplateRule.java index 5dd38229..b0eb45fa 100644 --- a/src/org/antlr/works/stringtemplate/element/ElementTemplateRule.java +++ b/src/org/antlr/works/stringtemplate/element/ElementTemplateRule.java @@ -39,7 +39,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -public class ElementTemplateRule extends ElementTemplateScopable implements Comparable, ATEFoldingEntity { +public class ElementTemplateRule extends ElementTemplateScopable implements Comparable, ATEFoldingEntity { public String name; public ATEToken start; @@ -117,9 +117,8 @@ public boolean containsIndex(int index) { return index >= getStartIndex() && index <= getEndIndex(); } - public int compareTo(Object o) { - ElementTemplateRule otherRule = (ElementTemplateRule) o; - return this.name.compareTo(otherRule.name); + public int compareTo(ElementTemplateRule o) { + return this.name.compareTo(o.name); } public int getUniqueIdentifier() { From 6906f025c451364ebb1c50f93eb74eb9cfbea1e9 Mon Sep 17 00:00:00 2001 From: Sam Harwell Date: Mon, 30 Sep 2013 18:56:52 -0500 Subject: [PATCH 03/12] Remove unnecessary class NumberSet --- .../works/debugger/panels/DBControlPanel.java | 6 +- .../antlr/works/debugger/tivo/DBRecorder.java | 20 +++---- src/org/antlr/works/utils/NumberSet.java | 59 ------------------- 3 files changed, 13 insertions(+), 72 deletions(-) delete mode 100644 src/org/antlr/works/utils/NumberSet.java diff --git a/src/org/antlr/works/debugger/panels/DBControlPanel.java b/src/org/antlr/works/debugger/panels/DBControlPanel.java index f15696fd..0dbea848 100644 --- a/src/org/antlr/works/debugger/panels/DBControlPanel.java +++ b/src/org/antlr/works/debugger/panels/DBControlPanel.java @@ -7,7 +7,6 @@ import org.antlr.works.prefs.AWPrefs; import org.antlr.works.stats.StatisticsAW; import org.antlr.works.utils.IconManager; -import org.antlr.works.utils.NumberSet; import org.antlr.works.utils.Toolbar; import org.antlr.xjlib.appkit.swing.XJRollOverButton; @@ -15,6 +14,7 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.HashSet; import java.util.Set; /* @@ -229,8 +229,8 @@ public JComponent createInfoLabelPanel() { return infoLabel; } - public Set getBreakEvent() { - NumberSet set = new NumberSet(); + public Set getBreakEvent() { + Set set = new HashSet(); if(breakAllButton.isSelected()) set.add(DBEvent.ALL); diff --git a/src/org/antlr/works/debugger/tivo/DBRecorder.java b/src/org/antlr/works/debugger/tivo/DBRecorder.java index ee18ac68..4ac095f0 100644 --- a/src/org/antlr/works/debugger/tivo/DBRecorder.java +++ b/src/org/antlr/works/debugger/tivo/DBRecorder.java @@ -38,7 +38,6 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT import org.antlr.works.debugger.events.*; import org.antlr.works.prefs.AWPrefs; import org.antlr.works.utils.Console; -import org.antlr.works.utils.NumberSet; import org.antlr.xjlib.appkit.utils.XJAlert; import org.antlr.xjlib.appkit.utils.XJDialogProgress; import org.antlr.xjlib.appkit.utils.XJDialogProgressDelegate; @@ -92,7 +91,7 @@ protected void dispatch(String line) { protected List events; protected int position; - protected NumberSet breakEvents = new NumberSet(); + protected Set breakEvents = new HashSet(); protected int stoppedOnEvent = DBEvent.NO_EVENT; protected boolean ignoreBreakpoints = false; protected StepOver stepOver = new StepOver(); @@ -199,11 +198,12 @@ public void setPositionToEnd() { position = events.size()-1; } - public void setBreakEvents(Set events) { - this.breakEvents.replaceAll(events); + public void setBreakEvents(Set events) { + this.breakEvents.clear(); + this.breakEvents.addAll(events); } - public Set getBreakEvents() { + public Set getBreakEvents() { return breakEvents; } @@ -303,7 +303,7 @@ public boolean isAtEnd() { return e.getEventType() == DBEvent.TERMINATE; } - public void stepBackward(Set breakEvents) { + public void stepBackward(Set breakEvents) { setIgnoreBreakpoints(false); stepContinue(breakEvents); stepMove(-1); @@ -312,7 +312,7 @@ public void stepBackward(Set breakEvents) { playEvents(true); } - public synchronized void stepForward(Set breakEvents) { + public synchronized void stepForward(Set breakEvents) { setIgnoreBreakpoints(false); stepContinue(breakEvents); if(stepMove(1)) { @@ -334,7 +334,7 @@ public void stepOver() { fastForward(); } - public void stepContinue(Set breakEvents) { + public void stepContinue(Set breakEvents) { setBreakEvents(breakEvents); queryGrammarBreakpoints(); setStatus(STATUS_RUNNING); @@ -374,7 +374,7 @@ public void goToStart() { public void goToEnd() { setIgnoreBreakpoints(true); - stepContinue(new NumberSet(DBEvent.TERMINATE)); + stepContinue(Collections.singleton(DBEvent.TERMINATE)); if(stepMove(1)) playEvents(false); else @@ -382,7 +382,7 @@ public void goToEnd() { } public void fastForward() { - stepForward(new NumberSet(DBEvent.TERMINATE)); + stepForward(Collections.singleton(DBEvent.TERMINATE)); } public void connect(String address, int port) { diff --git a/src/org/antlr/works/utils/NumberSet.java b/src/org/antlr/works/utils/NumberSet.java deleted file mode 100644 index aa15f6b7..00000000 --- a/src/org/antlr/works/utils/NumberSet.java +++ /dev/null @@ -1,59 +0,0 @@ -package org.antlr.works.utils; - -import java.util.HashSet; -import java.util.Set; -/* - -[The "BSD licence"] -Copyright (c) 2005-2006 Jean Bovet -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -public class NumberSet extends HashSet { - - public NumberSet() { - super(); - } - - public NumberSet(int value) { - super(); - add(new Integer(value)); - } - - public void add(int value) { - add(new Integer(value)); - } - - public boolean contains(int value) { - return contains(new Integer(value)); - } - - public void replaceAll(Set s) { - clear(); - addAll(s); - } -} From 7d2b82db232dcf2078ae5b9bcb7a8f71e27f7725 Mon Sep 17 00:00:00 2001 From: Sam Harwell Date: Mon, 30 Sep 2013 19:52:08 -0500 Subject: [PATCH 04/12] Avoid using obsolete collection types where possible --- .../ate/syntax/generic/ATESyntaxParser.java | 10 +++--- .../works/debugger/panels/DBStackPanel.java | 13 ++++---- .../antlr/works/debugger/tivo/DBPlayer.java | 12 +++---- .../debugger/tivo/DBPlayerContextInfo.java | 32 ++++++++++--------- .../antlr/works/debugger/tivo/DBRecorder.java | 8 ++--- .../antlr/works/debugger/tree/DBASTModel.java | 25 ++++++++------- .../antlr/works/debugger/tree/DBASTPanel.java | 5 +-- .../works/debugger/tree/DBParseTreeModel.java | 27 ++++++++-------- src/org/antlr/works/editor/EditorRules.java | 10 +++--- .../visualization/graphics/GContext.java | 9 +++--- .../serializable/SXMLEncoder.java | 24 +++++++------- src/org/antlr/xjlib/appkit/undo/XJUndo.java | 11 ++++--- 12 files changed, 96 insertions(+), 90 deletions(-) diff --git a/src/org/antlr/works/ate/syntax/generic/ATESyntaxParser.java b/src/org/antlr/works/ate/syntax/generic/ATESyntaxParser.java index 3370a5e8..58011c2f 100644 --- a/src/org/antlr/works/ate/syntax/generic/ATESyntaxParser.java +++ b/src/org/antlr/works/ate/syntax/generic/ATESyntaxParser.java @@ -1,9 +1,9 @@ package org.antlr.works.ate.syntax.generic; +import java.util.ArrayList; +import java.util.List; import org.antlr.works.ate.syntax.misc.ATEToken; -import java.util.List; -import java.util.Stack; /* [The "BSD licence"] @@ -38,7 +38,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT public abstract class ATESyntaxParser { private List tokens; - private Stack marks = new Stack(); + private List marks = new ArrayList(); private int position; private ATEToken t0; @@ -73,11 +73,11 @@ public int getPosition() { } public void mark() { - marks.push(position); + marks.add(position); } public void rewind() { - position = marks.pop(); + position = marks.remove(marks.size() - 1); clearTokenCache(); } diff --git a/src/org/antlr/works/debugger/panels/DBStackPanel.java b/src/org/antlr/works/debugger/panels/DBStackPanel.java index 374bbed3..a1a3babf 100644 --- a/src/org/antlr/works/debugger/panels/DBStackPanel.java +++ b/src/org/antlr/works/debugger/panels/DBStackPanel.java @@ -10,7 +10,8 @@ import javax.swing.table.AbstractTableModel; import java.awt.*; import java.util.ArrayList; -import java.util.Stack; +import java.util.List; + /* [The "BSD licence"] @@ -49,7 +50,7 @@ public class DBStackPanel extends DetachablePanel { private XJTableView infoTableView; private DBStackPanel.RuleTableDataModel ruleTableDataModel; - private Stack rules = new Stack(); + private List rules = new ArrayList(); public DBStackPanel(DebuggerTab debuggerTab) { super("Stack", debuggerTab); @@ -89,20 +90,20 @@ public void run() { } public void pushRule(DBEventEnterRule rule) { - rules.push(rule); + rules.add(rule); ruleTableDataModel.add(rule.name); } public void popRule() { - ruleTableDataModel.remove(rules.peek().name); - rules.pop(); + ruleTableDataModel.remove(rules.get(rules.size() - 1).name); + rules.remove(rules.size() - 1); } public DBEventEnterRule peekRule() { if(rules.isEmpty()) { return null; } else { - return rules.peek(); + return rules.get(rules.size() - 1); } } diff --git a/src/org/antlr/works/debugger/tivo/DBPlayer.java b/src/org/antlr/works/debugger/tivo/DBPlayer.java index 0b3e3cd5..7a37ccb7 100644 --- a/src/org/antlr/works/debugger/tivo/DBPlayer.java +++ b/src/org/antlr/works/debugger/tivo/DBPlayer.java @@ -37,8 +37,8 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT import org.antlr.works.debugger.input.DBInputProcessor; import org.antlr.works.debugger.input.DBInputTextTokenInfo; +import java.util.ArrayList; import java.util.List; -import java.util.Stack; public class DBPlayer { @@ -46,7 +46,7 @@ public class DBPlayer { protected DBInputProcessor processor; protected DBPlayerContextInfo contextInfo; - protected Stack markStack; + protected List markStack; protected int resyncing = 0; protected int eventPlayedCount = 0; @@ -54,7 +54,7 @@ public class DBPlayer { public DBPlayer(DebuggerTab debuggerTab) { this.debuggerTab = debuggerTab; contextInfo = new DBPlayerContextInfo(); - markStack = new Stack(); + markStack = new ArrayList(); } public void close() { @@ -317,13 +317,13 @@ public void playLocation() { public void playMark(DBEventMark event) { contextInfo.mark(event.id); - markStack.push(processor.getCurrentTokenIndex()); + markStack.add(processor.getCurrentTokenIndex()); } public void playRewind(DBEventRewind event) { - processor.rewind(markStack.peek()); + processor.rewind(markStack.get(markStack.size() - 1)); if(!event.rewindToLastMark()) { - markStack.pop(); + markStack.remove(markStack.size() - 1); contextInfo.rewind(); } } diff --git a/src/org/antlr/works/debugger/tivo/DBPlayerContextInfo.java b/src/org/antlr/works/debugger/tivo/DBPlayerContextInfo.java index 8fa3efa4..2876fe8e 100644 --- a/src/org/antlr/works/debugger/tivo/DBPlayerContextInfo.java +++ b/src/org/antlr/works/debugger/tivo/DBPlayerContextInfo.java @@ -1,6 +1,8 @@ package org.antlr.works.debugger.tivo; -import java.util.Stack; +import java.util.ArrayList; +import java.util.List; + /* [The "BSD licence"] @@ -34,17 +36,17 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT public class DBPlayerContextInfo { - public Stack subrule = new Stack(); - public Stack decision = new Stack(); - public Stack mark = new Stack(); - public Stack backtrack = new Stack(); + public List subrule = new ArrayList(); + public List decision = new ArrayList(); + public List mark = new ArrayList(); + public List backtrack = new ArrayList(); public void enterSubrule(int i) { - subrule.push(i); + subrule.add(i); } public void exitSubrule() { - subrule.pop(); + subrule.remove(subrule.size() - 1); } public int getSubrule() { @@ -52,11 +54,11 @@ public int getSubrule() { } public void enterDecision(int i) { - decision.push(i); + decision.add(i); } public void exitDecision() { - decision.pop(); + decision.remove(decision.size() - 1); } public int getDecision() { @@ -64,11 +66,11 @@ public int getDecision() { } public void mark(int i) { - mark.push(i); + mark.add(i); } public void rewind() { - mark.pop(); + mark.remove(mark.size() - 1); } public int getMark() { @@ -76,11 +78,11 @@ public int getMark() { } public void beginBacktrack(int level) { - backtrack.push(level); + backtrack.add(level); } public void endBacktrack() { - backtrack.pop(); + backtrack.remove(backtrack.size() - 1); } public int getBacktrack() { @@ -91,11 +93,11 @@ public boolean isBacktracking() { return !backtrack.isEmpty(); } - public int getPeekValue(Stack s) { + public int getPeekValue(List s) { if(s.isEmpty()) return -1; else - return s.peek(); + return s.get(s.size() - 1); } public void clear() { diff --git a/src/org/antlr/works/debugger/tivo/DBRecorder.java b/src/org/antlr/works/debugger/tivo/DBRecorder.java index 4ac095f0..dd0a1384 100644 --- a/src/org/antlr/works/debugger/tivo/DBRecorder.java +++ b/src/org/antlr/works/debugger/tivo/DBRecorder.java @@ -119,7 +119,7 @@ protected void dispatch(String line) { /** * Current grammar the recorder is in */ - protected Stack grammarNamesStack = new Stack(); + protected List grammarNamesStack = new ArrayList(); public DBRecorder(DebuggerTab debuggerTab) { this.debuggerTab = debuggerTab; @@ -552,15 +552,15 @@ public void recordIndexes(DBEvent event) { public void handleGrammarName(DBEvent event) { if(event instanceof DBEventEnterRule) { - grammarNamesStack.push(event.getGrammarName()); + grammarNamesStack.add(event.getGrammarName()); } if(event instanceof DBEventExitRule) { - grammarNamesStack.pop(); + grammarNamesStack.remove(grammarNamesStack.size() - 1); } if(grammarNamesStack.isEmpty()) { event.setGrammarName(null); } else { - event.setGrammarName(grammarNamesStack.peek()); + event.setGrammarName(grammarNamesStack.get(grammarNamesStack.size() - 1)); } } diff --git a/src/org/antlr/works/debugger/tree/DBASTModel.java b/src/org/antlr/works/debugger/tree/DBASTModel.java index c50ab5f4..b37eae8f 100644 --- a/src/org/antlr/works/debugger/tree/DBASTModel.java +++ b/src/org/antlr/works/debugger/tree/DBASTModel.java @@ -39,7 +39,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT public class DBASTModel { /** Stack of rule. Each rule contains a stack of roots */ - public Stack rules = new Stack(); + public List rules = new ArrayList(); /** Map of nodes */ public Map nodesMap = new HashMap(); @@ -92,23 +92,23 @@ public int getRootCount() { /* Methods used by the debugger */ public void pushRule(String name) { - rules.push(new Rule(name, new Stack())); + rules.add(new Rule(name, new ArrayList())); } public void popRule() { /* Do not pop the start rule: we want to be able to see the AST tree at the end of event stream so we keep the start rule on the stack. */ if(rules.size() > 1) - rules.pop(); + rules.remove(rules.size() - 1); } public void pushRoot(ASTNode node) { - getRoots().push(node); + getRoots().add(node); } /** Replace a root node by another one */ public void replaceRoot(ASTNode oldRoot, ASTNode newRoot) { - Stack roots = getRoots(); + List roots = getRoots(); int index = roots.indexOf(oldRoot); roots.remove(index); roots.add(index, newRoot); @@ -189,19 +189,19 @@ protected ASTNode getTreeNode(int id) { return nodesMap.get(id); } - protected Stack getRoots() { + protected List getRoots() { if(rules.isEmpty()) return null; else - return (rules.peek()).roots; + return (rules.get(rules.size() - 1)).roots; } public class Rule { public String name; - public Stack roots; + public List roots; - public Rule(String name, Stack roots) { + public Rule(String name, List roots) { this.name = name; this.roots = roots; } @@ -210,7 +210,7 @@ public ASTNode getRootAtIndex(int index) { return roots.get(index); } - public Stack getRoots() { + public List getRoots() { return roots; } } @@ -222,10 +222,11 @@ public class ASTNode extends DBTreeNode { public ASTNode parentNode = null; + @SuppressWarnings("UseOfObsoleteCollectionType") public ASTNode(int id) { this.id = id; - /** Children is defined in DefaultMutableTreeNode */ - children = new Vector(); + /* Children is defined in DefaultMutableTreeNode */ + children = new Vector(); } /** Add a child */ diff --git a/src/org/antlr/works/debugger/tree/DBASTPanel.java b/src/org/antlr/works/debugger/tree/DBASTPanel.java index 57cddfa9..eab64489 100644 --- a/src/org/antlr/works/debugger/tree/DBASTPanel.java +++ b/src/org/antlr/works/debugger/tree/DBASTPanel.java @@ -15,7 +15,8 @@ import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; import java.awt.*; -import java.util.Stack; +import java.util.List; + /* [The "BSD licence"] @@ -169,7 +170,7 @@ public void selectToken(Token token) { if(rule == null) return; - Stack roots = rule.getRoots(); + List roots = rule.getRoots(); for (int r = 0; r < roots.size(); r++) { DBASTModel.ASTNode node = roots.get(r); DBTreeNode candidate = node.findNodeWithToken(token); diff --git a/src/org/antlr/works/debugger/tree/DBParseTreeModel.java b/src/org/antlr/works/debugger/tree/DBParseTreeModel.java index ff4c89d7..963834d5 100644 --- a/src/org/antlr/works/debugger/tree/DBParseTreeModel.java +++ b/src/org/antlr/works/debugger/tree/DBParseTreeModel.java @@ -15,7 +15,6 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -import java.util.Stack; /* [The "BSD licence"] @@ -49,8 +48,8 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT public class DBParseTreeModel extends AWTreeModel implements XJNotificationObserver { - public Stack rules = new Stack(); - public Stack backtrackStack = new Stack(); + public List rules = new ArrayList(); + public List backtrackStack = new ArrayList(); public Color lookaheadTokenColor; public TreeNode lastNode; @@ -85,7 +84,7 @@ public void fireDataChanged() { public void initRules() { rules.clear(); - rules.push(new ParseTreeNode("root", null)); + rules.add(new ParseTreeNode("root", null)); } public void initColors() { @@ -117,10 +116,10 @@ public void setLocation(DBEventLocation location) { } public void pushRule(String name) { - ParseTreeNode parentRuleNode = rules.peek(); + ParseTreeNode parentRuleNode = rules.get(rules.size() - 1); ParseTreeNode ruleNode = new ParseTreeNode(name, location); - rules.push(ruleNode); + rules.add(ruleNode); addNode(parentRuleNode, ruleNode); addNodeToCurrentBacktrack(ruleNode); @@ -129,22 +128,22 @@ public void pushRule(String name) { } public void popRule() { - rules.pop(); + rules.remove(rules.size() - 1); } public TreeNode getRootRule() { - return rules.firstElement(); + return rules.get(0); } public TreeNode peekRule() { if(rules.isEmpty()) return null; else - return rules.peek(); + return rules.get(rules.size() - 1); } public void addToken(Token token) { - ParseTreeNode ruleNode = rules.peek(); + ParseTreeNode ruleNode = rules.get(rules.size() - 1); ParseTreeNode elementNode = new ParseTreeNode(token, location); addNode(ruleNode, elementNode); addNodeToCurrentBacktrack(elementNode); @@ -152,7 +151,7 @@ public void addToken(Token token) { } public void addException(Exception e) { - ParseTreeNode ruleNode = rules.peek(); + ParseTreeNode ruleNode = rules.get(rules.size() - 1); ParseTreeNode errorNode = new ParseTreeNode(e, location); addNode(ruleNode, errorNode); addNodeToCurrentBacktrack(errorNode); @@ -163,16 +162,16 @@ public void addNodeToCurrentBacktrack(ParseTreeNode node) { if(backtrackStack.isEmpty()) return; - Backtrack b = backtrackStack.peek(); + Backtrack b = backtrackStack.get(backtrackStack.size() - 1); b.addNode(node); } public void beginBacktrack(int level) { - backtrackStack.push(new Backtrack(level, lookaheadTokenColor)); + backtrackStack.add(new Backtrack(level, lookaheadTokenColor)); } public void endBacktrack(int level, boolean success) { - Backtrack b = backtrackStack.pop(); + Backtrack b = backtrackStack.remove(backtrackStack.size() - 1); b.end(success); setLastNode(b.getLastNode()); } diff --git a/src/org/antlr/works/editor/EditorRules.java b/src/org/antlr/works/editor/EditorRules.java index 74b6f25c..39f476f9 100644 --- a/src/org/antlr/works/editor/EditorRules.java +++ b/src/org/antlr/works/editor/EditorRules.java @@ -499,12 +499,12 @@ public void rebuildTree() { if(groups.isEmpty()) { buildTree(rulesTreeRootNode, rules, 0, rules.size()-1); } else { - Stack parentStack = new Stack(); + List parentStack = new ArrayList(); parentStack.add(rulesTreeRootNode); int ruleIndex = 0; for (ElementGroup group : groups) { - DefaultMutableTreeNode parentNode = parentStack.peek(); + DefaultMutableTreeNode parentNode = parentStack.get(parentStack.size() - 1); if (group.ruleIndex >= 0) { buildTree(parentNode, rules, ruleIndex, group.ruleIndex); ruleIndex = group.ruleIndex + 1; @@ -513,15 +513,15 @@ public void rebuildTree() { if (group.openGroup) { DefaultMutableTreeNode node = new DefaultMutableTreeNode(new RuleTreeUserObject(group)); parentNode.add(node); - parentStack.push(node); + parentStack.add(node); } else { if (parentStack.size() > 1) - parentStack.pop(); + parentStack.remove(parentStack.size() - 1); } } if(ruleIndex < rules.size()) { - DefaultMutableTreeNode parentNode = parentStack.peek(); + DefaultMutableTreeNode parentNode = parentStack.get(parentStack.size() - 1); buildTree(parentNode, rules, ruleIndex, rules.size()-1); } } diff --git a/src/org/antlr/works/visualization/graphics/GContext.java b/src/org/antlr/works/visualization/graphics/GContext.java index def1c325..d89f3049 100644 --- a/src/org/antlr/works/visualization/graphics/GContext.java +++ b/src/org/antlr/works/visualization/graphics/GContext.java @@ -37,7 +37,8 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT import org.antlr.works.visualization.skin.Skin; import java.awt.*; -import java.util.Stack; +import java.util.ArrayList; +import java.util.List; public class GContext { @@ -76,7 +77,7 @@ public class GContext { private boolean showRuleName = true; - public final Stack colorStack = new Stack(); + public final List colorStack = new ArrayList(); public Color nodeColor = Color.black; public Color linkColor = Color.black; @@ -225,12 +226,12 @@ public void setColor(Color color) { } public void pushColor(Color color) { - colorStack.push(engine.getColor()); + colorStack.add(engine.getColor()); setColor(color); } public void popColor() { - setColor(colorStack.pop()); + setColor(colorStack.remove(colorStack.size() - 1)); } public Color getColorForLabel(String label) { diff --git a/src/org/antlr/works/visualization/serializable/SXMLEncoder.java b/src/org/antlr/works/visualization/serializable/SXMLEncoder.java index 8fcc515f..c9c1f924 100644 --- a/src/org/antlr/works/visualization/serializable/SXMLEncoder.java +++ b/src/org/antlr/works/visualization/serializable/SXMLEncoder.java @@ -34,7 +34,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT public class SXMLEncoder implements SEncoder { private final Map cache = new HashMap(); - private final Stack stack = new Stack(); + private final List stack = new ArrayList(); private long uid; private Entry root; @@ -55,31 +55,31 @@ public void write(SSerializable object) { if(root == null) { root = entry; - stack.push(root); + stack.add(root); } else { - stack.peek().write(entry); + stack.get(stack.size() - 1).write(entry); } // serialize this object - stack.push(entry); + stack.add(entry); object.encode(this); - stack.pop(); + stack.remove(stack.size() - 1); } else { // already being serialized - stack.peek().write(entry.getUID()); + stack.get(stack.size() - 1).write(entry.getUID()); } } public void write(String value) { - stack.peek().write(value); + stack.get(stack.size() - 1).write(value); } public void write(int value) { - stack.peek().write(value); + stack.get(stack.size() - 1).write(value); } public void write(boolean value) { - stack.peek().write(value); + stack.get(stack.size() - 1).write(value); } public static class Entry { @@ -149,17 +149,17 @@ public long getUID() { public static class XMLWriter { StringBuilder sb = new StringBuilder(); - Stack elements = new Stack(); + List elements = new ArrayList(); public void open(String name) { - elements.push(name); + elements.add(name); sb.append("<"); sb.append(name); sb.append(">"); } public void close() { - String name = elements.pop(); + String name = elements.remove(elements.size() - 1); sb.append(""); diff --git a/src/org/antlr/xjlib/appkit/undo/XJUndo.java b/src/org/antlr/xjlib/appkit/undo/XJUndo.java index 50ff330b..8565d2c4 100644 --- a/src/org/antlr/xjlib/appkit/undo/XJUndo.java +++ b/src/org/antlr/xjlib/appkit/undo/XJUndo.java @@ -37,7 +37,8 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT import javax.swing.undo.CompoundEdit; import javax.swing.undo.UndoManager; import javax.swing.undo.UndoableEdit; -import java.util.Stack; +import java.util.ArrayList; +import java.util.List; public class XJUndo { @@ -48,7 +49,7 @@ public class XJUndo { protected XJUndoAction undoAction; protected XJRedoAction redoAction; - protected Stack groupEditEvent = new Stack(); + protected List groupEditEvent = new ArrayList(); protected int enable = 0; @@ -99,11 +100,11 @@ public void performRedo() { } public void beginUndoGroup(String name) { - groupEditEvent.push(new CustomCompoundEdit(name)); + groupEditEvent.add(new CustomCompoundEdit(name)); } public void endUndoGroup() { - CustomCompoundEdit edit = groupEditEvent.pop(); + CustomCompoundEdit edit = groupEditEvent.remove(groupEditEvent.size() - 1); edit.end(); addEditEvent(edit); } @@ -112,7 +113,7 @@ public CompoundEdit getUndoGroup() { if(groupEditEvent.isEmpty()) return null; else - return (CompoundEdit)groupEditEvent.peek(); + return groupEditEvent.get(groupEditEvent.size() - 1); } public void enableUndo() { From 75331373ee169228e288400c90e8f94cd288db42 Mon Sep 17 00:00:00 2001 From: Sam Harwell Date: Mon, 30 Sep 2013 20:15:47 -0500 Subject: [PATCH 05/12] Use wildcard type argument instead of raw types where appropriate --- src/org/antlr/works/components/GrammarWindow.java | 2 +- src/org/antlr/works/debugger/tree/DBTreeNode.java | 2 +- src/org/antlr/works/editor/EditorRules.java | 8 ++++---- .../works/interpreter/EditorInterpreterTreeModel.java | 2 +- src/org/antlr/works/prefs/AWPrefs.java | 4 ++-- src/org/antlr/works/stats/StatisticsReporter.java | 2 +- src/org/antlr/xjlib/appkit/swing/XJGraphics2DPS.java | 4 ++-- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/org/antlr/works/components/GrammarWindow.java b/src/org/antlr/works/components/GrammarWindow.java index 518805c1..443c87f3 100644 --- a/src/org/antlr/works/components/GrammarWindow.java +++ b/src/org/antlr/works/components/GrammarWindow.java @@ -1129,7 +1129,7 @@ public void rulesDidChange() { interpreterTab.updateIgnoreTokens(getRules()); } - public JPopupMenu rulesGetContextualMenu(List selectedObjects) { + public JPopupMenu rulesGetContextualMenu(List selectedObjects) { if(selectedObjects.isEmpty()) return null; diff --git a/src/org/antlr/works/debugger/tree/DBTreeNode.java b/src/org/antlr/works/debugger/tree/DBTreeNode.java index 13da5f37..3e4b73de 100644 --- a/src/org/antlr/works/debugger/tree/DBTreeNode.java +++ b/src/org/antlr/works/debugger/tree/DBTreeNode.java @@ -102,7 +102,7 @@ public DBTreeNode findNodeWithToken(Token t, DBTreeNode lastNodeSoFar) { } } - for(Enumeration childrenEnumerator = children(); childrenEnumerator.hasMoreElements(); ) { + for(Enumeration childrenEnumerator = children(); childrenEnumerator.hasMoreElements(); ) { DBTreeNode node = (DBTreeNode) childrenEnumerator.nextElement(); DBTreeNode candidate = node.findNodeWithToken(t, lastNodeSoFar); if(candidate != null) diff --git a/src/org/antlr/works/editor/EditorRules.java b/src/org/antlr/works/editor/EditorRules.java index 39f476f9..4b41c0af 100644 --- a/src/org/antlr/works/editor/EditorRules.java +++ b/src/org/antlr/works/editor/EditorRules.java @@ -467,7 +467,7 @@ public void selectRuleInTree(ElementRule rule) { if(rule == null) return; - Enumeration enumeration = rulesTreeRootNode.depthFirstEnumeration(); + Enumeration enumeration = rulesTreeRootNode.depthFirstEnumeration(); while(enumeration.hasMoreElements()) { DefaultMutableTreeNode node = (DefaultMutableTreeNode)enumeration.nextElement(); RuleTreeUserObject n = (RuleTreeUserObject)node.getUserObject(); @@ -556,7 +556,7 @@ public void restoreSelectedTreeItem() { public void saveExpandedNodes() { rulesTreeExpandedNodes.clear(); - Enumeration e = rulesTreeRootNode.depthFirstEnumeration(); + Enumeration e = rulesTreeRootNode.depthFirstEnumeration(); while(e.hasMoreElements()) { DefaultMutableTreeNode node = (DefaultMutableTreeNode)e.nextElement(); if(!node.isLeaf() && !node.isRoot() && rulesTree.isExpanded(new TreePath(node.getPath()))) { @@ -575,7 +575,7 @@ public void restoreExpandedNodes() { } public DefaultMutableTreeNode findNodeWithGroupName(String groupName) { - Enumeration e = rulesTreeRootNode.depthFirstEnumeration(); + Enumeration e = rulesTreeRootNode.depthFirstEnumeration(); while(e.hasMoreElements()) { DefaultMutableTreeNode node = (DefaultMutableTreeNode)e.nextElement(); RuleTreeUserObject n = (RuleTreeUserObject)node.getUserObject(); @@ -586,7 +586,7 @@ public DefaultMutableTreeNode findNodeWithGroupName(String groupName) { } public DefaultMutableTreeNode findNodeWithRuleName(String ruleName) { - Enumeration e = rulesTreeRootNode.depthFirstEnumeration(); + Enumeration e = rulesTreeRootNode.depthFirstEnumeration(); while(e.hasMoreElements()) { DefaultMutableTreeNode node = (DefaultMutableTreeNode)e.nextElement(); RuleTreeUserObject n = (RuleTreeUserObject)node.getUserObject(); diff --git a/src/org/antlr/works/interpreter/EditorInterpreterTreeModel.java b/src/org/antlr/works/interpreter/EditorInterpreterTreeModel.java index 7c70a330..d92be599 100644 --- a/src/org/antlr/works/interpreter/EditorInterpreterTreeModel.java +++ b/src/org/antlr/works/interpreter/EditorInterpreterTreeModel.java @@ -97,7 +97,7 @@ public boolean isLeaf() { return getChildCount() == 0; } - public Enumeration children() { + public Enumeration children() { return null; } diff --git a/src/org/antlr/works/prefs/AWPrefs.java b/src/org/antlr/works/prefs/AWPrefs.java index d2198041..082373b6 100644 --- a/src/org/antlr/works/prefs/AWPrefs.java +++ b/src/org/antlr/works/prefs/AWPrefs.java @@ -502,8 +502,8 @@ public static void setPersonalInfo(Map info) { getPreferences().setObject(PREF_PERSONAL_INFO, info); } - public static Map getPersonalInfo() { - return (Map)getPreferences().getObject(PREF_PERSONAL_INFO, null); + public static Map getPersonalInfo() { + return (Map)getPreferences().getObject(PREF_PERSONAL_INFO, null); } public static boolean getPrivateMenu() { diff --git a/src/org/antlr/works/stats/StatisticsReporter.java b/src/org/antlr/works/stats/StatisticsReporter.java index fe7e9c00..2df355ad 100644 --- a/src/org/antlr/works/stats/StatisticsReporter.java +++ b/src/org/antlr/works/stats/StatisticsReporter.java @@ -66,7 +66,7 @@ public String getError() { } public String fetchIDFromServer() { - Map info = AWPrefs.getPersonalInfo(); + Map info = AWPrefs.getPersonalInfo(); /** Send null info if we cannot get the personal info */ if(info == null) { System.err.println("No personal info available. Sending blank data to request a new ID from ANTLR's server."); diff --git a/src/org/antlr/xjlib/appkit/swing/XJGraphics2DPS.java b/src/org/antlr/xjlib/appkit/swing/XJGraphics2DPS.java index 1a9a1a76..d1a8cc7f 100644 --- a/src/org/antlr/xjlib/appkit/swing/XJGraphics2DPS.java +++ b/src/org/antlr/xjlib/appkit/swing/XJGraphics2DPS.java @@ -655,10 +655,10 @@ public Object getRenderingHint(RenderingHints.Key hintKey) { return null; } - public void setRenderingHints(Map hints) { + public void setRenderingHints(Map hints) { } - public void addRenderingHints(Map hints) { + public void addRenderingHints(Map hints) { } public RenderingHints getRenderingHints() { From 3c1bc1e50f809c540b03f2d0ab8561b127a0350e Mon Sep 17 00:00:00 2001 From: Sam Harwell Date: Mon, 30 Sep 2013 20:48:03 -0500 Subject: [PATCH 06/12] Fix many warnings about generic type usage --- src/org/antlr/works/debugger/DebuggerTab.java | 2 +- .../antlr/works/debugger/tivo/DBPlayer.java | 4 +-- .../works/editor/EditorFoldingManager.java | 5 ++- .../antlr/works/editor/EditorInspector.java | 5 +-- .../antlr/works/editor/EditorPersistence.java | 10 +++--- .../editor/completion/AutoCompletionMenu.java | 4 +-- .../grammar/antlr/ANTLRGrammarEngineImpl.java | 32 +++++++++---------- .../works/grammar/antlr/GrammarError.java | 15 +++++---- .../grammar/decisiondfa/DecisionDFA.java | 4 +-- .../works/grammar/element/ElementRule.java | 9 +++--- .../works/utils/awtree/AWTreeGraphView.java | 2 +- .../works/visualization/VisualDrawing.java | 9 +++--- .../visualization/graphics/GFactory.java | 5 +-- .../visualization/graphics/graph/GGraph.java | 5 ++- .../graphics/graph/GGraphGroup.java | 18 +++++------ .../visualization/graphics/panel/GPanel.java | 2 +- .../visualization/graphics/panel/GView.java | 8 ++--- .../visualization/graphics/path/GPath.java | 4 +-- .../antlr/xjlib/appkit/app/XJApplication.java | 6 ++-- .../appkit/app/XJApplicationInterface.java | 4 +-- .../appkit/gview/event/GEventManager.java | 2 +- .../xjlib/appkit/menu/XJMainMenuBar.java | 4 +-- src/org/antlr/xjlib/foundation/XJObject.java | 4 +-- src/org/antlr/xjlib/foundation/XJUtils.java | 2 +- 24 files changed, 82 insertions(+), 83 deletions(-) diff --git a/src/org/antlr/works/debugger/DebuggerTab.java b/src/org/antlr/works/debugger/DebuggerTab.java index 973f54e9..5aa7df0a 100644 --- a/src/org/antlr/works/debugger/DebuggerTab.java +++ b/src/org/antlr/works/debugger/DebuggerTab.java @@ -563,7 +563,7 @@ public void addEvent(DBEvent event, DBPlayerContextInfo info) { eventsPanel.addEvent(event, info); } - public void playEvents(List events, int lastEventPosition, boolean reset) { + public void playEvents(List events, int lastEventPosition, boolean reset) { player.playEvents(events, lastEventPosition, reset); breaksOnEvent(); } diff --git a/src/org/antlr/works/debugger/tivo/DBPlayer.java b/src/org/antlr/works/debugger/tivo/DBPlayer.java index 7a37ccb7..f07804b6 100644 --- a/src/org/antlr/works/debugger/tivo/DBPlayer.java +++ b/src/org/antlr/works/debugger/tivo/DBPlayer.java @@ -88,13 +88,13 @@ the events are reset (when the debugger starts). eventPlayedCount = 0; } - public void playEvents(List events, int lastEventPosition, boolean reset) { + public void playEvents(List events, int lastEventPosition, boolean reset) { if(reset) resetPlayEvents(false); int lastIndex = lastEventPosition - 1; for(int i=eventPlayedCount; i< lastEventPosition; i++) { - DBEvent event = (DBEvent)events.get(i); + DBEvent event = events.get(i); try { playEvent(event); diff --git a/src/org/antlr/works/editor/EditorFoldingManager.java b/src/org/antlr/works/editor/EditorFoldingManager.java index a8d9d0fb..88db809f 100644 --- a/src/org/antlr/works/editor/EditorFoldingManager.java +++ b/src/org/antlr/works/editor/EditorFoldingManager.java @@ -105,12 +105,11 @@ public void provideFoldingEntities() { } } - public ATEFoldingEntity getEntityForIdentifier(List entities, String identifier) { + public ATEFoldingEntity getEntityForIdentifier(List entities, String identifier) { if(entities == null || entities.isEmpty()) return null; // optimize using a map ? - for (Object entity1 : entities) { - ATEFoldingEntity entity = (ATEFoldingEntity) entity1; + for (ATEFoldingEntity entity : entities) { if (entity.foldingEntityID().equals(identifier)) return entity; } diff --git a/src/org/antlr/works/editor/EditorInspector.java b/src/org/antlr/works/editor/EditorInspector.java index dcf2bb13..38699aa3 100644 --- a/src/org/antlr/works/editor/EditorInspector.java +++ b/src/org/antlr/works/editor/EditorInspector.java @@ -1,5 +1,6 @@ package org.antlr.works.editor; +import org.antlr.tool.Rule; import org.antlr.works.ate.syntax.generic.ATESyntaxLexer; import org.antlr.works.ate.syntax.misc.ATEToken; import org.antlr.works.editor.idea.IdeaAction; @@ -11,8 +12,8 @@ import java.awt.*; import java.util.ArrayList; +import java.util.Collection; import java.util.List; -import java.util.Set; /* [The "BSD licence"] @@ -210,7 +211,7 @@ protected void discoverLeftRecursiveRulesSet(List items) { return; for (ElementRule rule : rules) { - Set rulesSet = rule.getLeftRecursiveRulesSet(); + Collection rulesSet = rule.getLeftRecursiveRulesSet(); if (rulesSet == null || rulesSet.size() < 2) continue; diff --git a/src/org/antlr/works/editor/EditorPersistence.java b/src/org/antlr/works/editor/EditorPersistence.java index 584fa476..fe5b5fce 100644 --- a/src/org/antlr/works/editor/EditorPersistence.java +++ b/src/org/antlr/works/editor/EditorPersistence.java @@ -70,7 +70,7 @@ public void restore() { } } - public void store(List objects, String key) { + public void store(List objects, String key) { Map m = persistence.get(key); if(m == null) { m = new HashMap(); @@ -81,13 +81,12 @@ public void store(List objects, String key) { if(objects == null) return; - for (Object object : objects) { - EditorPersistentObject o = (EditorPersistentObject) object; + for (EditorPersistentObject o : objects) { m.put(o.getPersistentID(), o); } } - public void restore(List objects, String key) { + public void restore(List objects, String key) { Map m = persistence.get(key); if(m == null) return; @@ -95,8 +94,7 @@ public void restore(List objects, String key) { if(objects == null) return; - for (Object object : objects) { - EditorPersistentObject o = (EditorPersistentObject) object; + for (EditorPersistentObject o : objects) { EditorPersistentObject oldObject = m.get(o.getPersistentID()); if (oldObject != null) o.persistentAssign(oldObject); diff --git a/src/org/antlr/works/editor/completion/AutoCompletionMenu.java b/src/org/antlr/works/editor/completion/AutoCompletionMenu.java index f13dfa92..5d41d316 100644 --- a/src/org/antlr/works/editor/completion/AutoCompletionMenu.java +++ b/src/org/antlr/works/editor/completion/AutoCompletionMenu.java @@ -57,7 +57,7 @@ public class AutoCompletionMenu extends OverlayObject { /** Used to store most recently used during autocompletion * the newest should be stored at the front of the list. */ - protected static List recentlyUsedWords = new LinkedList(); + protected static LinkedList recentlyUsedWords = new LinkedList(); protected int maxWordLength; protected int insertionStartIndex; @@ -228,7 +228,7 @@ public void autoComplete() { String partialWord = words.get(list.getSelectedIndex()); if (isVStyle()) { recentlyUsedWords.remove(partialWord); //put it at the beginning of the list if it exists - ((LinkedList)recentlyUsedWords).addFirst(partialWord); + recentlyUsedWords.addFirst(partialWord); } completePartialWord(partialWord); } diff --git a/src/org/antlr/works/grammar/antlr/ANTLRGrammarEngineImpl.java b/src/org/antlr/works/grammar/antlr/ANTLRGrammarEngineImpl.java index e34c7455..e01a8f50 100644 --- a/src/org/antlr/works/grammar/antlr/ANTLRGrammarEngineImpl.java +++ b/src/org/antlr/works/grammar/antlr/ANTLRGrammarEngineImpl.java @@ -33,6 +33,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT package org.antlr.works.grammar.antlr; import antlr.TokenStreamException; +import org.antlr.analysis.Label; import org.antlr.analysis.NFAState; import org.antlr.runtime.RecognitionException; import org.antlr.tool.*; @@ -46,6 +47,7 @@ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Set; @@ -229,23 +231,20 @@ private void createLexerGrammar() throws TokenStreamException, RecognitionExcept lexerGrammar = createNewGrammar(); } - private void printLeftRecursionToConsole(List rules) { + private void printLeftRecursionToConsole(List> rules) { StringBuilder info = new StringBuilder(); info.append("Aborting because the following rules are mutually left-recursive:"); - for (Object rule : rules) { - Set rulesSet = (Set) rule; + for (Collection rulesSet : rules) { info.append("\n "); info.append(rulesSet); } engine.reportError(info.toString()); } - private void markLeftRecursiveRules(List rules) { + private void markLeftRecursiveRules(List> rules) { // 'rules' is a list of set of rules given by ANTLR - for (Object ruleSet : rules) { - final Set rulesSet = (Set) ruleSet; - for (Object rule : rulesSet) { - final Rule aRule = (Rule) rule; + for (Collection rulesSet : rules) { + for (Rule aRule : rulesSet) { final ElementRule r = engine.getRuleWithName(aRule.name); if (r == null) continue; @@ -276,7 +275,7 @@ public GrammarResult analyze() throws Exception { return analyzeCompleted(el); } - List rules = g.checkAllRulesForLeftRecursion(); + List> rules = g.checkAllRulesForLeftRecursion(); if(!rules.isEmpty()) { printLeftRecursionToConsole(rules); markLeftRecursiveRules(rules); @@ -385,7 +384,7 @@ private GrammarError buildNonDeterministicError(GrammarNonDeterminismMessage mes GrammarError error = new GrammarError(); error.setLine(message.probe.dfa.getDecisionASTNode().getLine()-1); - List labels = message.probe.getSampleNonDeterministicInputSequence(message.problemState); + List