You can subscribe to this list here.
| 2005 |
Jan
|
Feb
|
Mar
(41) |
Apr
(9) |
May
|
Jun
|
Jul
(39) |
Aug
(38) |
Sep
(135) |
Oct
(220) |
Nov
(75) |
Dec
(74) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 |
Jan
(44) |
Feb
(160) |
Mar
(49) |
Apr
(69) |
May
(40) |
Jun
(52) |
Jul
(47) |
Aug
(51) |
Sep
(19) |
Oct
(22) |
Nov
(36) |
Dec
(76) |
| 2007 |
Jan
(154) |
Feb
(165) |
Mar
(186) |
Apr
(143) |
May
(175) |
Jun
(133) |
Jul
(203) |
Aug
(177) |
Sep
(136) |
Oct
|
Nov
|
Dec
|
|
From: <caw...@us...> - 2007-08-14 16:33:21
|
Revision: 2972
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2972&view=rev
Author: cawilliams
Date: 2007-08-14 09:32:40 -0700 (Tue, 14 Aug 2007)
Log Message:
-----------
first attempt to see if we can force some ruby launches to run under sudo (like the gem install comamnd needs to)
Modified Paths:
--------------
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVMRunner.java
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/AbstractRubyLaunchConfigurationDelegate.java
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/AbstractVMRunner.java
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/IRubyLaunchConfigurationConstants.java
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/RubyLaunchDelegate.java
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/VMRunnerConfiguration.java
Modified: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVMRunner.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVMRunner.java 2007-08-14 16:32:32 UTC (rev 2971)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVMRunner.java 2007-08-14 16:32:40 UTC (rev 2972)
@@ -23,6 +23,7 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.model.IProcess;
@@ -130,6 +131,10 @@
*/
protected List<String> constructProgramString(VMRunnerConfiguration config) throws CoreException {
List<String> string = new ArrayList<String>();
+ if (!Platform.getOS().equals(Platform.OS_WIN32) && config.isSudo()) {
+ string.add("sudo");
+ }
+
// Look for the user-specified ruby executable command
String command= null;
Map map= config.getVMSpecificAttributesMap();
Modified: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/AbstractRubyLaunchConfigurationDelegate.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/AbstractRubyLaunchConfigurationDelegate.java 2007-08-14 16:32:32 UTC (rev 2971)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/AbstractRubyLaunchConfigurationDelegate.java 2007-08-14 16:32:40 UTC (rev 2972)
@@ -433,4 +433,8 @@
}
return (String[]) userEntries.toArray(new String[userEntries.size()]);
}
+
+ public boolean getIsSudo(ILaunchConfiguration configuration) throws CoreException {
+ return configuration.getAttribute(IRubyLaunchConfigurationConstants.ATTR_IS_SUDO, false);
+ }
}
Modified: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/AbstractVMRunner.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/AbstractVMRunner.java 2007-08-14 16:32:32 UTC (rev 2971)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/AbstractVMRunner.java 2007-08-14 16:32:40 UTC (rev 2972)
@@ -60,6 +60,7 @@
* @see DebugPlugin#exec(String[], File)
*/
protected Process exec(String[] cmdLine, File workingDirectory) throws CoreException {
+ LaunchingPlugin.info("Starting: " + getCmdLineAsString(cmdLine));
return DebugPlugin.exec(cmdLine, workingDirectory);
}
@@ -68,7 +69,7 @@
* @see DebugPlugin#exec(String[], File, String[])
*/
protected Process exec(String[] cmdLine, File workingDirectory, String[] envp) throws CoreException {
- LaunchingPlugin.info("Starting: " + getCmdLineAsString(cmdLine)) ;
+ LaunchingPlugin.info("Starting: " + getCmdLineAsString(cmdLine));
return DebugPlugin.exec(cmdLine, workingDirectory, envp);
}
Modified: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/IRubyLaunchConfigurationConstants.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/IRubyLaunchConfigurationConstants.java 2007-08-14 16:32:32 UTC (rev 2971)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/IRubyLaunchConfigurationConstants.java 2007-08-14 16:32:40 UTC (rev 2972)
@@ -194,5 +194,7 @@
* configuration (via the <code>ATTR_LOADPATH_PROVIDER</code> attribute).
*/
public static final String ATTR_LOADPATH = LaunchingPlugin.getUniqueIdentifier() + ".CUSTOM_LOAD_PATH"; //$NON-NLS-1$
+
+ public static final String ATTR_IS_SUDO = LaunchingPlugin.getUniqueIdentifier() + ".IS_SUDO"; //$NON-NLS-1$
}
Modified: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/RubyLaunchDelegate.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/RubyLaunchDelegate.java 2007-08-14 16:32:32 UTC (rev 2971)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/RubyLaunchDelegate.java 2007-08-14 16:32:40 UTC (rev 2972)
@@ -70,6 +70,8 @@
// Loadpath
String[] classpath = getLoadpath(configuration);
+ boolean isSudo = getIsSudo(configuration);
+
// Create VM config
VMRunnerConfiguration runConfig = new VMRunnerConfiguration(mainTypeName, classpath);
runConfig.setProgramArguments(execArgs.getProgramArgumentsArray());
@@ -77,6 +79,7 @@
runConfig.setVMArguments(execArgs.getVMArgumentsArray());
runConfig.setWorkingDirectory(workingDirName);
runConfig.setVMSpecificAttributesMap(vmAttributesMap);
+ runConfig.setIsSudo(isSudo);
// check for cancellation
if (monitor.isCanceled()) {
Modified: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/VMRunnerConfiguration.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/VMRunnerConfiguration.java 2007-08-14 16:32:32 UTC (rev 2971)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/launching/VMRunnerConfiguration.java 2007-08-14 16:32:40 UTC (rev 2972)
@@ -32,6 +32,7 @@
private String fWorkingDirectory;
private Map fVMSpecificAttributesMap;
private boolean fResume = true;
+ private boolean fIsSudo;
private static final String[] fgEmpty= new String[0];
@@ -221,4 +222,12 @@
public boolean isResumeOnStartup() {
return fResume;
}
+
+ public void setIsSudo(boolean isSudo) {
+ fIsSudo = isSudo;
+ }
+
+ public boolean isSudo() {
+ return fIsSudo;
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-14 16:32:35
|
Revision: 2971
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2971&view=rev
Author: cawilliams
Date: 2007-08-14 09:32:32 -0700 (Tue, 14 Aug 2007)
Log Message:
-----------
first attempt to see if we can force some ruby launches to run under sudo (like the gem install comamnd needs to)
Modified Paths:
--------------
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/GemManager.java
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/GemManager.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/GemManager.java 2007-08-14 15:04:02 UTC (rev 2970)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/GemManager.java 2007-08-14 16:32:32 UTC (rev 2971)
@@ -349,7 +349,7 @@
if (!isRubyGemsInstalled()) return false;
try {
String command = UPDATE_COMMAND + " " + gem.getName();
- ILaunchConfiguration config = createGemLaunchConfiguration(command, true);
+ ILaunchConfiguration config = createGemLaunchConfiguration(command, false);
final ILaunch launch = config.launch(ILaunchManager.RUN_MODE, null);
Job job = new Job("Updating gem " + gem.getName()) {
@@ -380,7 +380,7 @@
return DebugPlugin.getDefault().getLaunchManager();
}
- private ILaunchConfiguration createGemLaunchConfiguration(String arguments, boolean interactive) {
+ private ILaunchConfiguration createGemLaunchConfiguration(String arguments, boolean isSudo) {
String gemPath = getGemScriptPath();
ILaunchConfiguration config = null;
try {
@@ -403,6 +403,7 @@
wc.setAttribute(
IRubyLaunchConfigurationConstants.ATTR_VM_ARGUMENTS,
"");
+ wc.setAttribute(IRubyLaunchConfigurationConstants.ATTR_IS_SUDO, isSudo);
Map<String, String> map = new HashMap<String, String>();
map.put(IRubyLaunchConfigurationConstants.ATTR_RUBY_COMMAND,
EXECUTABLE);
@@ -411,18 +412,7 @@
IRubyLaunchConfigurationConstants.ATTR_VM_INSTALL_TYPE_SPECIFIC_ATTRS_MAP,
map);
wc.setAttribute(IDebugUIConstants.ATTR_PRIVATE, true);
- wc.setAttribute(IDebugUIConstants.ATTR_LAUNCH_IN_BACKGROUND,
- !interactive);
- if (!interactive) {
- wc.setAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_CONSOLE,
- false);
- IPath outFilePath = AptanaRDTPlugin.getDefault()
- .getStateLocation();
- outFilePath = outFilePath.append(System.currentTimeMillis()
- + ".txt");
- wc.setAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_FILE,
- outFilePath.toPortableString());
- }
+ wc.setAttribute(IDebugUIConstants.ATTR_LAUNCH_IN_BACKGROUND, false);
config = wc.doSave();
} catch (CoreException ce) {
// ignore for now
@@ -510,7 +500,7 @@
&& gem.getVersion().trim().length() > 0) {
command += " " + VERSION_SWITCH + " " + gem.getVersion();
}
- ILaunchConfiguration config = createGemLaunchConfiguration(command, true);
+ ILaunchConfiguration config = createGemLaunchConfiguration(command, false);
final ILaunch launch = config.launch(ILaunchManager.RUN_MODE, null);
Job job = new Job("Notifying gem listeners of uninstalled gem") {
@@ -647,7 +637,7 @@
public boolean updateAll() {
if (!isRubyGemsInstalled()) return false;
try {
- ILaunchConfiguration config = createGemLaunchConfiguration(UPDATE_COMMAND, true);
+ ILaunchConfiguration config = createGemLaunchConfiguration(UPDATE_COMMAND, false);
final ILaunch launch = config.launch(ILaunchManager.RUN_MODE, null);
Job job = new Job("Updating gem listing") {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-14 15:04:09
|
Revision: 2970
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2970&view=rev
Author: cawilliams
Date: 2007-08-14 08:04:02 -0700 (Tue, 14 Aug 2007)
Log Message:
-----------
fix #5549 - Highlight beginning/end of code blocks
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/RubyPairMatcher.java
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/RubyPairMatcher.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/RubyPairMatcher.java 2007-08-14 15:03:22 UTC (rev 2969)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/RubyPairMatcher.java 2007-08-14 15:04:02 UTC (rev 2970)
@@ -16,6 +16,22 @@
import org.eclipse.jface.text.Region;
import org.eclipse.jface.text.TextUtilities;
import org.eclipse.jface.text.source.ICharacterPairMatcher;
+import org.jruby.ast.BeginNode;
+import org.jruby.ast.CaseNode;
+import org.jruby.ast.ClassNode;
+import org.jruby.ast.DefnNode;
+import org.jruby.ast.DefsNode;
+import org.jruby.ast.ForNode;
+import org.jruby.ast.IfNode;
+import org.jruby.ast.IterNode;
+import org.jruby.ast.ModuleNode;
+import org.jruby.ast.Node;
+import org.jruby.ast.SClassNode;
+import org.jruby.ast.WhenNode;
+import org.jruby.ast.WhileNode;
+import org.rubypeople.rdt.internal.core.parser.RubyParser;
+import org.rubypeople.rdt.internal.ti.util.ClosestSpanningNodeLocator;
+import org.rubypeople.rdt.internal.ti.util.INodeAcceptor;
/**
* Helper class for match pairs of characters.
@@ -46,14 +62,83 @@
return null;
fDocument= document;
+
+ if (fDocument != null && matchPairsAt() && fStartPos != fEndPos) // match parens
+ return new Region(fStartPos, fEndPos - fStartPos + 1);
- if (fDocument != null && matchPairsAt() && fStartPos != fEndPos)
+ if (fDocument != null && matchBlocksAt() && fStartPos != fEndPos) // match code blocks
return new Region(fStartPos, fEndPos - fStartPos + 1);
-
+
return null;
}
- /* (non-Javadoc)
+ private boolean matchBlocksAt() {
+ fStartPos= -1;
+ fEndPos= -1;
+ String src = fDocument.get();
+ if (src.length() == 0) {
+ return false;
+ }
+ RubyParser parser = new RubyParser();
+ Node root = parser.parse(src);
+ Node spanning = ClosestSpanningNodeLocator.Instance().findClosestSpanner(root, fOffset, new INodeAcceptor() {
+
+ public boolean doesAccept(Node node) {
+ if (node instanceof IfNode) {
+ IfNode ifNode = (IfNode) node;
+ // FIXME Only grab IfNode if it isn't a modifier!
+ }
+ return node instanceof ModuleNode || node instanceof SClassNode || node instanceof ClassNode ||
+ node instanceof DefnNode || node instanceof DefsNode || node instanceof BeginNode || node instanceof WhileNode ||
+ node instanceof CaseNode || node instanceof ForNode || node instanceof IfNode || node instanceof IterNode;
+ }
+
+ });
+ if (spanning == null) return false;
+ if (!isOnEnd(spanning) && !isOnBeginning(spanning)) {
+ return false;
+ }
+ if (isOnEnd(spanning)) {
+ fAnchor = RIGHT;
+ } else {
+ fAnchor = LEFT;
+ }
+ fStartPos = spanning.getPosition().getStartOffset();
+ fEndPos = spanning.getPosition().getEndOffset();
+ if (src.length() == fEndPos) {
+ fEndPos -= 1;
+ }
+ return true;
+ }
+
+ private boolean isOnBeginning(Node spanning) {
+ return (fOffset >= spanning.getPosition().getStartOffset()) && (fOffset <= spanning.getPosition().getStartOffset() + getKeywordLength(spanning));
+ }
+
+ private boolean isOnEnd(Node spanning) {
+ return (fOffset >= spanning.getPosition().getEndOffset() - 4) && (fOffset <= spanning.getPosition().getEndOffset());
+ }
+
+ private int getKeywordLength(Node spanning) {
+ if ((spanning instanceof ClassNode) || (spanning instanceof BeginNode) || (spanning instanceof WhileNode)) {
+ return 5;
+ }
+ if ((spanning instanceof DefnNode) || (spanning instanceof DefsNode) || (spanning instanceof ForNode)) {
+ return 3;
+ }
+ if (spanning instanceof WhenNode) {
+ return 4;
+ }
+ if (spanning instanceof ModuleNode) {
+ return 6;
+ }
+ if ((spanning instanceof IfNode) || (spanning instanceof IterNode)) {
+ return 2;
+ }
+ return 1;
+ }
+
+ /* (non-Javadoc)
* @see org.eclipse.jface.text.source.ICharacterPairMatcher#getAnchor()
*/
public int getAnchor() {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-14 15:03:26
|
Revision: 2969
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2969&view=rev
Author: cawilliams
Date: 2007-08-14 08:03:22 -0700 (Tue, 14 Aug 2007)
Log Message:
-----------
fix some text
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/WorkingCopyManager.java
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/WorkingCopyManager.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/WorkingCopyManager.java 2007-08-13 21:21:51 UTC (rev 2968)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/WorkingCopyManager.java 2007-08-14 15:03:22 UTC (rev 2969)
@@ -23,7 +23,7 @@
import org.rubypeople.rdt.ui.IWorkingCopyManagerExtension;
/**
- * This working copy manager works together with a given compilation unit
+ * This working copy manager works together with a given ruby script
* document provider and additionally offers to "overwrite" the working copy
* provided by this document provider.
*/
@@ -35,7 +35,7 @@
/**
* Creates a new working copy manager that co-operates with the given
- * compilation unit document provider.
+ * ruby script document provider.
*
* @param provider
* the provider
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-13 21:22:00
|
Revision: 2968
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2968&view=rev
Author: cawilliams
Date: 2007-08-13 14:21:51 -0700 (Mon, 13 Aug 2007)
Log Message:
-----------
make RI hover use FastRI (like RI view does)
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/infoviews/RIView.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/hover/RiDocHoverProvider.java
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/infoviews/RIView.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/infoviews/RIView.java 2007-08-13 21:11:29 UTC (rev 2967)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/infoviews/RIView.java 2007-08-13 21:21:51 UTC (rev 2968)
@@ -63,8 +63,6 @@
import org.rubypeople.rdt.launching.PropertyChangeEvent;
import org.rubypeople.rdt.launching.RubyRuntime;
-import com.aptana.rdt.AptanaRDTPlugin;
-
public class RIView extends ViewPart implements RdocListener, IVMInstallChangedListener {
private boolean riFound = false;
@@ -389,13 +387,13 @@
}
p.waitFor();
} catch (CoreException e) {
- AptanaRDTPlugin.log(e);
+ RubyPlugin.log(e);
return "";
} catch (IOException e) {
- AptanaRDTPlugin.log(e);
+ RubyPlugin.log(e);
return "";
} catch (InterruptedException e) {
- AptanaRDTPlugin.log(e);
+ RubyPlugin.log(e);
}
buffer.deleteCharAt(buffer.length() - 1); // remove last \n
return buffer.toString();
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/hover/RiDocHoverProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/hover/RiDocHoverProvider.java 2007-08-13 21:11:29 UTC (rev 2967)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/hover/RiDocHoverProvider.java 2007-08-13 21:21:51 UTC (rev 2968)
@@ -7,6 +7,10 @@
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.BadPartitioningException;
import org.eclipse.jface.text.IDocument;
@@ -16,9 +20,13 @@
import org.rubypeople.rdt.core.ICodeAssist;
import org.rubypeople.rdt.core.IMethod;
import org.rubypeople.rdt.core.IRubyElement;
+import org.rubypeople.rdt.core.IType;
import org.rubypeople.rdt.core.RubyModelException;
+import org.rubypeople.rdt.internal.launching.LaunchingPlugin;
+import org.rubypeople.rdt.internal.launching.StandardVMType;
import org.rubypeople.rdt.internal.ui.RubyPlugin;
import org.rubypeople.rdt.internal.ui.text.IRubyPartitions;
+import org.rubypeople.rdt.launching.IVMInstall;
import org.rubypeople.rdt.launching.RubyRuntime;
public class RiDocHoverProvider extends AbstractRubyEditorTextHover {
@@ -58,7 +66,7 @@
// ignore
}
}
- if (contentType != null && (contentType.equals(IRubyPartitions.RUBY_MULTI_LINE_COMMENT) || contentType.equals(IRubyPartitions.RUBY_SINGLE_LINE_COMMENT))) {
+ if (contentType != null && !contentType.equals(IRubyPartitions.RUBY_DEFAULT)) {
return null;
}
String symbol = textViewer.getDocument().get(hoverRegion.getOffset(), hoverRegion.getLength());
@@ -70,55 +78,97 @@
return null;
}
-
- private String getRIResult(String symbol) {
- if (symbol == null || symbol.trim().length() == 0) return null;
- File ri = RubyRuntime.getRI();
- if (ri == null || !ri.exists() || !ri.isFile()) return null;
-
- List<String> args = new ArrayList<String>();
- args.add(0, ri.getAbsolutePath());
- // these will get rid of some of the overhead formatting
- args.add("-f");
- args.add("html");
- args.add("--no-pager");
-
- BufferedReader br = null;
- try {
- args.add('"' + symbol + '"');
- String[] argArray= (String[]) args.toArray(new String[args.size()]);
- Process p = Runtime.getRuntime().exec(argArray);
- if (p == null) return null;
- br = new BufferedReader(new InputStreamReader(p.getInputStream()));
- // TODO: format the documentation that was fetched from RI
- // for now: read the first 15 lines so
- StringBuffer buf = new StringBuffer();
- for(int i = 0; i < 15; i++){
- String line = br.readLine();
- if(line != null){
- buf.append(line);
- buf.append("<br />");
- } else {
- break;
- }
+ protected File getFRIIndexFile() {
+ return getStateFile(".fastri-index");
+ }
+
+ private File getStateFile(String name) {
+ IPath location = RubyPlugin.getDefault().getStateLocation();
+ location = location.append(name);
+ return location.toFile();
+ }
+
+ private String getFastRiServerPath() {
+ return getFilePath(new Path("ruby").append("fastri-server"));
+ }
+
+ private String getFastRiPath() {
+ return getFilePath(new Path("ruby").append("fri"));
+ }
+
+ private String getFilePath(IPath path) {
+ File file = LaunchingPlugin.getFileInPlugin(path);
+ if (file == null || !file.exists() || !file.isFile()) return null;
+ return file.getAbsolutePath();
+ }
+
+ private String execAndReadOutput(String file, List<String> commands) {
+ if (file == null) return null;
+ StringBuffer buffer = new StringBuffer();
+ try {
+ List<String> line = new ArrayList<String>();
+ IVMInstall vm = RubyRuntime.getDefaultVMInstall();
+ if (vm == null) return "";
+ File executable = StandardVMType.findRubyExecutable(vm.getInstallLocation());
+ if (executable.getName().contains("rubyw")) {
+ String name = executable.getName();
+ name = name.replace("rubyw", "ruby");
+ executable = new File(executable.getParent() + File.separator + name);
}
- // If ambiguous, return nothing
- if (buf.indexOf("More than one method matched your request") > -1) return null;
- return "" + buf.toString();
- } catch (IOException e) {
- RubyPlugin.log(e);
- } finally {
- if(br != null){
- try {
- br.close();
- } catch (IOException e) {
- RubyPlugin.log(e);
+ line.add(executable.getAbsolutePath());
+ line.add(file);
+ for (String command : commands) {
+ line.add(command);
+ }
+ File workingDirectory = new File(file).getParentFile();
+ String[] cmdLine = new String[line.size()];
+ cmdLine = line.toArray(cmdLine);
+ Process p = DebugPlugin.exec(cmdLine, workingDirectory);
+ BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ String liner = null;
+ while (!reader.ready()) {
+ Thread.yield();
+ }
+ while ((liner = reader.readLine()) != null) {
+ buffer.append(liner);
+ buffer.append("\n");
+ if (!reader.ready()) {
+ Thread.yield();
}
}
- }
- return null;
+ p.waitFor();
+ } catch (CoreException e) {
+ RubyPlugin.log(e);
+ return "";
+ } catch (IOException e) {
+ RubyPlugin.log(e);
+ return "";
+ } catch (InterruptedException e) {
+ RubyPlugin.log(e);
+ }
+ buffer.deleteCharAt(buffer.length() - 1); // remove last \n
+ return buffer.toString();
}
+ private String getRIResult(String symbol) {
+ if (symbol == null || symbol.trim().length() == 0) return null;
+ File file = getFRIIndexFile();
+ if (!file.exists()) {
+ List<String> commands = new ArrayList<String>();
+ commands.add("--index-file=\"" + file.getAbsolutePath() + "\"");
+ commands.add("-b");
+ String output = execAndReadOutput(getFastRiServerPath(), commands);
+ }
+
+ List<String> commands = new ArrayList<String>();
+ commands.add("--no-pager");
+ commands.add("--index-file=\"" + file.getAbsolutePath() + "\"");
+ String content = execAndReadOutput(getFastRiPath(), commands);
+ if (content == null) return null;
+ if (content.indexOf("More than one method matched your request") > -1) return null;
+ return content;
+ }
+
@Override
protected String getHoverInfo(IRubyElement[] rubyElements) {
if (rubyElements == null || rubyElements.length == 0) return null;
@@ -130,11 +180,11 @@
private String getRICompatibleName(IRubyElement element) {
switch (element.getElementType()) {
case IRubyElement.TYPE:
- return element.getElementName();
+ return ((IType) element).getFullyQualifiedName();
case IRubyElement.METHOD:
IMethod method = (IMethod) element;
String delimeter = method.isSingleton() ? "::" : "#";
- return method.getDeclaringType().getElementName() + delimeter + element.getElementName();
+ return method.getDeclaringType().getFullyQualifiedName() + delimeter + element.getElementName();
default:
return null;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-13 21:11:30
|
Revision: 2967
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2967&view=rev
Author: cawilliams
Date: 2007-08-13 14:11:29 -0700 (Mon, 13 Aug 2007)
Log Message:
-----------
catch all exceptions (including runtime) when getting rdoc translation of text
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/util/RDocUtil.java
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/util/RDocUtil.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/util/RDocUtil.java 2007-08-13 20:57:21 UTC (rev 2966)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/util/RDocUtil.java 2007-08-13 21:11:29 UTC (rev 2967)
@@ -130,10 +130,8 @@
ruby.setCurrentDirectory(getRDocScriptPath());
IRubyObject object = ruby.evalScript(script);
docs = object.toString();
- } catch (IOException e) {
+ } catch (Exception e) {
// ignore
- } catch (RaiseException e) {
- // ignore
}
return docs;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-13 20:57:43
|
Revision: 2965
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2965&view=rev
Author: cawilliams
Date: 2007-08-13 13:57:16 -0700 (Mon, 13 Aug 2007)
Log Message:
-----------
fix #5385 - Make install gem button enabled as soon as remote listing is loaded
Modified Paths:
--------------
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/InstallGemActionDelegate.java
Modified: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/InstallGemActionDelegate.java
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/InstallGemActionDelegate.java 2007-08-13 20:15:21 UTC (rev 2964)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/internal/ui/actions/InstallGemActionDelegate.java 2007-08-13 20:57:16 UTC (rev 2965)
@@ -19,6 +19,7 @@
import com.aptana.rdt.AptanaRDTPlugin;
import com.aptana.rdt.core.gems.Gem;
+import com.aptana.rdt.core.gems.GemListener;
import com.aptana.rdt.ui.gems.InstallGemDialog;
/**
@@ -26,14 +27,20 @@
*
* @author cwilliams
*/
-public class InstallGemActionDelegate implements IObjectActionDelegate, IViewActionDelegate {
+public class InstallGemActionDelegate implements IObjectActionDelegate, IViewActionDelegate, GemListener {
+ private IAction action;
+
+ public InstallGemActionDelegate() {
+ AptanaRDTPlugin.getDefault().getGemManager().addGemListener(this);
+ }
+
/**
* @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction,
* org.eclipse.ui.IWorkbenchPart)
*/
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
-
+ this.action = action;
}
/**
@@ -56,14 +63,34 @@
* org.eclipse.jface.viewers.ISelection)
*/
public void selectionChanged(IAction action, ISelection selection) {
- action.setEnabled(!AptanaRDTPlugin.getDefault().getGemManager().getRemoteGems().isEmpty());
+ this.action = action;
+ action.setEnabled(isEnabled());
}
+ private boolean isEnabled() {
+ if (!AptanaRDTPlugin.getDefault().getGemManager().isInitialized()) return false;
+ return !AptanaRDTPlugin.getDefault().getGemManager().getRemoteGems().isEmpty();
+ }
+
/**
* @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
*/
public void init(IViewPart view) {
}
+
+ public void gemAdded(Gem gem) {
+ }
+
+ public void gemRemoved(Gem gem) {
+ }
+
+ public void gemsRefreshed() {
+ }
+
+ public void managerInitialized() {
+ if (action == null) return;
+ action.setEnabled(isEnabled());
+ }
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-13 20:57:43
|
Revision: 2966
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2966&view=rev
Author: cawilliams
Date: 2007-08-13 13:57:21 -0700 (Mon, 13 Aug 2007)
Log Message:
-----------
fix #5385 - Make install gem button enabled as soon as remote listing is loaded
Modified Paths:
--------------
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/GemManager.java
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/GemManager.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/GemManager.java 2007-08-13 20:57:16 UTC (rev 2965)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/GemManager.java 2007-08-13 20:57:21 UTC (rev 2966)
@@ -585,19 +585,7 @@
* @see com.aptana.rdt.internal.gems.IGemManager#getRemoteGems()
*/
public Set<Gem> getRemoteGems() {
- SortedSet<Gem> sorted = new TreeSet<Gem>(remoteGems);
- SortedSet<Gem> logical = new TreeSet<Gem>();
- String name = null;
- Collection<Gem> temp = new HashSet<Gem>();
- for (Gem gem : sorted) {
- if (name != null && !gem.getName().equals(name)) {
- logical.add(LogicalGem.create(temp));
- temp.clear();
- }
- name = gem.getName();
- temp.add(gem);
- }
- return Collections.unmodifiableSortedSet(logical);
+ return Collections.unmodifiableSortedSet(new TreeSet<Gem>(remoteGems));
}
/*
@@ -728,6 +716,7 @@
remoteGems = loadRemoteGems();
storeGemCache(remoteGems,
getConfigFile(REMOTE_GEMS_CACHE_FILE));
+ remoteGems = makeLogical(remoteGems);
// }
} catch (Exception e) {
AptanaRDTPlugin.log(e);
@@ -739,4 +728,20 @@
};
job.schedule();
}
+
+ protected Set<Gem> makeLogical(Set<Gem> remoteGems) {
+ SortedSet<Gem> sorted = new TreeSet<Gem>(remoteGems);
+ SortedSet<Gem> logical = new TreeSet<Gem>();
+ String name = null;
+ Collection<Gem> temp = new HashSet<Gem>();
+ for (Gem gem : sorted) {
+ if (name != null && !gem.getName().equals(name)) {
+ logical.add(LogicalGem.create(temp));
+ temp.clear();
+ }
+ name = gem.getName();
+ temp.add(gem);
+ }
+ return Collections.unmodifiableSortedSet(logical);
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-13 20:15:22
|
Revision: 2964
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2964&view=rev
Author: cawilliams
Date: 2007-08-13 13:15:21 -0700 (Mon, 13 Aug 2007)
Log Message:
-----------
Removed Paths:
-------------
trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/symbols/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-13 20:13:58
|
Revision: 2963
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2963&view=rev
Author: cawilliams
Date: 2007-08-13 13:13:54 -0700 (Mon, 13 Aug 2007)
Log Message:
-----------
fix #5208 - multi-line comments not being processed correctly in Ruby editor
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/TC_RubyPartitionScanner.java
Modified: trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/TC_RubyPartitionScanner.java
===================================================================
--- trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/TC_RubyPartitionScanner.java 2007-08-13 20:13:48 UTC (rev 2962)
+++ trunk/org.rubypeople.rdt.ui.tests/src/org/rubypeople/rdt/internal/ui/text/TC_RubyPartitionScanner.java 2007-08-13 20:13:54 UTC (rev 2963)
@@ -378,5 +378,16 @@
assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 84);
assertContentType(RubyPartitionScanner.RUBY_SINGLE_LINE_COMMENT, code, 86);
}
+
+ public void testBug5208() {
+ String code = "=begin\r\n" +
+ " This is a comment\r\n" +
+ "=end\r\n" +
+ "require 'gosu'";
+ assertContentType(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, code, 0);
+ assertContentType(RubyPartitionScanner.RUBY_MULTI_LINE_COMMENT, code, 32); // =en'd'
+ assertContentType(RubyPartitionScanner.RUBY_DEFAULT, code, 36); // 'r'equire
+ assertContentType(RubyPartitionScanner.RUBY_STRING, code, 44);
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-13 20:13:55
|
Revision: 2962
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2962&view=rev
Author: cawilliams
Date: 2007-08-13 13:13:48 -0700 (Mon, 13 Aug 2007)
Log Message:
-----------
fix #5208 - multi-line comments not being processed correctly in Ruby editor
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/RubyPartitionScanner.java
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/RubyPartitionScanner.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/RubyPartitionScanner.java 2007-08-12 21:29:28 UTC (rev 2961)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/RubyPartitionScanner.java 2007-08-13 20:13:48 UTC (rev 2962)
@@ -333,14 +333,15 @@
}
private void parseOutComments(List comments) {
- int i = 0;
for (Iterator iter = comments.iterator(); iter.hasNext();) {
CommentNode comment = (CommentNode) iter.next();
int offset = correctOffset(comment);
int length = comment.getContent().length();
+ if (isCommentMultiLine(comment)) {
+ length = (origOffset + comment.getPosition().getEndOffset()) - offset;
+ }
Token token = new Token(getContentType(comment));
push(new QueuedToken(token, offset, length));
- i++;
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-12 21:29:30
|
Revision: 2961
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2961&view=rev
Author: cawilliams
Date: 2007-08-12 14:29:28 -0700 (Sun, 12 Aug 2007)
Log Message:
-----------
Fix unused private method warning check so ordering of use and definition doesn't matter.
Modified Paths:
--------------
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnusedPrivateMethodVisitor.java
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnusedPrivateMethodVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnusedPrivateMethodVisitor.java 2007-08-10 15:27:04 UTC (rev 2960)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnusedPrivateMethodVisitor.java 2007-08-12 21:29:28 UTC (rev 2961)
@@ -1,7 +1,9 @@
package com.aptana.rdt.internal.parser.warnings;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import org.jruby.ast.CallNode;
import org.jruby.ast.ClassNode;
@@ -20,6 +22,7 @@
public class UnusedPrivateMethodVisitor extends RubyLintVisitor {
private Map<String, Node> privateMethods = new HashMap<String, Node>();
+ private Set<String> usedMethods = new HashSet<String>();
private Visibility visibility;
public UnusedPrivateMethodVisitor(String contents) {
@@ -28,7 +31,7 @@
}
public Instruction visitFCallNode(FCallNode iVisited) {
- privateMethods.remove(iVisited.getName()); // we've used the method
+ usedMethods.add(iVisited.getName()); // we've used the method
// FIXME Handle case where we call public/private/protected methods with arguments (so current visibility is not changed, but existing methods' visibility is changed)
return null;
}
@@ -36,12 +39,12 @@
public Instruction visitCallNode(CallNode iVisited) {
Node receiver = iVisited.getReceiverNode();
if (receiver instanceof SelfNode)
- privateMethods.remove(iVisited.getName()); // we've used the method
+ usedMethods.add(iVisited.getName()); // we've used the method
return null;
}
public Instruction visitVCallNode(VCallNode iVisited) {
- privateMethods.remove(iVisited.getName()); // we've used the method
+ usedMethods.add(iVisited.getName()); // we've used the method
if (iVisited.getName().equals("private")) {
visibility = Visibility.PRIVATE;
} else if (iVisited.getName().equals("protected")) {
@@ -54,11 +57,17 @@
public Instruction visitClassNode(ClassNode iVisited) {
privateMethods.clear();
+ usedMethods.clear();
visibility = Visibility.PUBLIC;
return null;
}
public void exitClassNode(ClassNode iVisited) {
+ for (String name : usedMethods) {
+ if (privateMethods.containsKey(name)) {
+ privateMethods.remove(name);
+ }
+ }
for (Node method : privateMethods.values()) {
createProblem(method.getPosition(), "Unused private method " + ASTUtil.getNameReflectively(method));
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-10 15:27:10
|
Revision: 2960
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2960&view=rev
Author: cawilliams
Date: 2007-08-10 08:27:04 -0700 (Fri, 10 Aug 2007)
Log Message:
-----------
Fix #5518 - Add warning check for local and method naming convention
Modified Paths:
--------------
trunk/com.aptana.rdt/plugin.xml
trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LintOptions.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java
Added Paths:
-----------
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalAndMethodNamingConvention.java
Modified: trunk/com.aptana.rdt/plugin.xml
===================================================================
--- trunk/com.aptana.rdt/plugin.xml 2007-08-10 15:16:49 UTC (rev 2959)
+++ trunk/com.aptana.rdt/plugin.xml 2007-08-10 15:27:04 UTC (rev 2960)
@@ -94,7 +94,11 @@
<error
categoryId="org.rubypeople.rdt.errors.potentialProblems"
label="Local Variable assignment possibly intended to access attribute"
- prefKey="com.aptana.rdt.compiler.problem.localVariablePossibleAttributeAccess"/>
+ prefKey="com.aptana.rdt.compiler.problem.localVariablePossibleAttributeAccess"/>
+ <error
+ categoryId="org.rubypeople.rdt.errors.codeConvention"
+ label="Method or local variables doesn't match convention (under_scores vs camelCase)"
+ prefKey="com.aptana.rdt.compiler.problem.methodOrLocalNamingConvention"/>
</extension>
<!-- =================================================================================== -->
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java 2007-08-10 15:16:49 UTC (rev 2959)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java 2007-08-10 15:27:04 UTC (rev 2960)
@@ -224,6 +224,14 @@
*/
public static final String COMPILER_PB_LOCAL_VARIABLE_POSSIBLE_ATTRIBUTE_ACCESS = PLUGIN_ID + ".compiler.problem.localVariablePossibleAttributeAccess"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions()
+ * @since 1.0.0
+ */
+ public static final String COMPILER_PB_LOCAL_METHOD_NAMING_CONVENTION = PLUGIN_ID + ".compiler.problem.methodOrLocalNamingConvention"; //$NON-NLS-1$
+
+
// The shared instance
private static AptanaRDTPlugin plugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LintOptions.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LintOptions.java 2007-08-10 15:16:49 UTC (rev 2959)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LintOptions.java 2007-08-10 15:27:04 UTC (rev 2960)
@@ -30,6 +30,7 @@
public static final long ConstantNamingConvention = 0x800000;
public static final long DynamicVariableAliasesLocal = 0x1000000;
public static final long LocalVariablePossibleAttributeAccess = 0x2000000;
+ public static final long LocalMethodNamingConvention = 0x4000000;
public static final String ERROR = RubyCore.ERROR;
public static final String WARNING = RubyCore.WARNING;
@@ -52,6 +53,7 @@
| ConstantNamingConvention
| DynamicVariableAliasesLocal
| LocalVariablePossibleAttributeAccess
+ | LocalMethodNamingConvention
/*| NullReference -- keep RubyCore#getDefaultOptions comment in sync */;
public int maxLocals = 5;
@@ -83,6 +85,7 @@
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_METHOD_MISSING_NO_RESPOND_TO, getSeverityString(MethodMissingWithoutRespondTo));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_DYNAMIC_VARIABLE_ALIASES_LOCAL, getSeverityString(DynamicVariableAliasesLocal));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_LOCAL_VARIABLE_POSSIBLE_ATTRIBUTE_ACCESS, getSeverityString(LocalVariablePossibleAttributeAccess));
+ optionsMap.put(AptanaRDTPlugin.COMPILER_PB_LOCAL_METHOD_NAMING_CONVENTION, getSeverityString(LocalMethodNamingConvention));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_MAX_ARGUMENTS, String.valueOf(maxArguments));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_MAX_LINES, String.valueOf(maxLines));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_MAX_LOCALS, String.valueOf(maxLocals));
@@ -122,6 +125,7 @@
if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_METHOD_MISSING_NO_RESPOND_TO)) != null) updateSeverity(MethodMissingWithoutRespondTo, optionValue);
if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_DYNAMIC_VARIABLE_ALIASES_LOCAL)) != null) updateSeverity(DynamicVariableAliasesLocal, optionValue);
if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_LOCAL_VARIABLE_POSSIBLE_ATTRIBUTE_ACCESS)) != null) updateSeverity(LocalVariablePossibleAttributeAccess, optionValue);
+ if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_LOCAL_METHOD_NAMING_CONVENTION)) != null) updateSeverity(LocalMethodNamingConvention, optionValue);
if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_MAX_LOCALS)) != null) {
if (optionValue instanceof String) {
String stringValue = (String) optionValue;
Added: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalAndMethodNamingConvention.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalAndMethodNamingConvention.java (rev 0)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalAndMethodNamingConvention.java 2007-08-10 15:27:04 UTC (rev 2960)
@@ -0,0 +1,49 @@
+package com.aptana.rdt.internal.parser.warnings;
+
+import org.jruby.ast.DefnNode;
+import org.jruby.ast.DefsNode;
+import org.jruby.ast.LocalAsgnNode;
+import org.jruby.evaluator.Instruction;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
+
+import com.aptana.rdt.AptanaRDTPlugin;
+
+public class LocalAndMethodNamingConvention extends RubyLintVisitor {
+
+ public LocalAndMethodNamingConvention(String contents) {
+ super(AptanaRDTPlugin.getDefault().getOptions(), contents);
+ }
+
+ @Override
+ protected String getOptionKey() {
+ return AptanaRDTPlugin.COMPILER_PB_LOCAL_METHOD_NAMING_CONVENTION;
+ }
+
+ @Override
+ public Instruction visitDefnNode(DefnNode iVisited) {
+ String name = iVisited.getName();
+ if (!name.toLowerCase().equals(name)) {
+ createProblem(iVisited.getPosition(), "Method name doesn't match the under_scores_all_lower convention: " + name);
+ }
+ return super.visitDefnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitLocalAsgnNode(LocalAsgnNode iVisited) {
+ String name = iVisited.getName();
+ if (!name.toLowerCase().equals(name)) {
+ createProblem(iVisited.getPosition(), "Method name doesn't match the under_scores_all_lower convention: " + name);
+ }
+ return super.visitLocalAsgnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitDefsNode(DefsNode iVisited) {
+ String name = iVisited.getName();
+ if (!name.toLowerCase().equals(name)) {
+ createProblem(iVisited.getPosition(), "Local variable name doesn't match the under_scores_all_lower convention: " + name);
+ }
+ return super.visitDefsNode(iVisited);
+ }
+
+}
Property changes on: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalAndMethodNamingConvention.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java 2007-08-10 15:16:49 UTC (rev 2959)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java 2007-08-10 15:27:04 UTC (rev 2960)
@@ -86,6 +86,7 @@
visitors.add(new MethodMissingWithoutRespondTo(contents));
visitors.add(new DynamicVariableAliasesLocal(contents));
visitors.add(new LocalVariablePossibleAttributeAccess(contents));
+ visitors.add(new LocalAndMethodNamingConvention(contents));
List<RubyLintVisitor> filtered = new ArrayList<RubyLintVisitor>();
for (RubyLintVisitor visitor : visitors) {
if (visitor.isIgnored()) continue;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-10 15:16:51
|
Revision: 2959
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2959&view=rev
Author: cawilliams
Date: 2007-08-10 08:16:49 -0700 (Fri, 10 Aug 2007)
Log Message:
-----------
Fix #5517 - Add warning check for local variable assignment that may intend to be attribute access
Modified Paths:
--------------
trunk/com.aptana.rdt/plugin.xml
trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LintOptions.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java
Added Paths:
-----------
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalVariablePossibleAttributeAccess.java
Modified: trunk/com.aptana.rdt/plugin.xml
===================================================================
--- trunk/com.aptana.rdt/plugin.xml 2007-08-10 15:16:40 UTC (rev 2958)
+++ trunk/com.aptana.rdt/plugin.xml 2007-08-10 15:16:49 UTC (rev 2959)
@@ -90,7 +90,11 @@
<error
categoryId="org.rubypeople.rdt.errors.potentialProblems"
label="Dynamic variables Aliases Local Variable"
- prefKey="com.aptana.rdt.compiler.problem.dynamicVariableAliasesLocal"/>
+ prefKey="com.aptana.rdt.compiler.problem.dynamicVariableAliasesLocal"/>
+ <error
+ categoryId="org.rubypeople.rdt.errors.potentialProblems"
+ label="Local Variable assignment possibly intended to access attribute"
+ prefKey="com.aptana.rdt.compiler.problem.localVariablePossibleAttributeAccess"/>
</extension>
<!-- =================================================================================== -->
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java 2007-08-10 15:16:40 UTC (rev 2958)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java 2007-08-10 15:16:49 UTC (rev 2959)
@@ -208,15 +208,22 @@
* @see #getDefaultOptions()
* @since 1.0.0
*/
- public static final String COMPILER_PB_METHOD_MISSING_NO_RESPOND_TO = PLUGIN_ID + ".compiler.problem.methodMissingWithoutRespondTo";
+ public static final String COMPILER_PB_METHOD_MISSING_NO_RESPOND_TO = PLUGIN_ID + ".compiler.problem.methodMissingWithoutRespondTo"; //$NON-NLS-1$
/**
* Possible configurable option ID.
* @see #getDefaultOptions()
* @since 1.0.0
*/
- public static final String COMPILER_PB_DYNAMIC_VARIABLE_ALIASES_LOCAL = PLUGIN_ID + ".compiler.problem.dynamicVariableAliasesLocal";
+ public static final String COMPILER_PB_DYNAMIC_VARIABLE_ALIASES_LOCAL = PLUGIN_ID + ".compiler.problem.dynamicVariableAliasesLocal"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions()
+ * @since 1.0.0
+ */
+ public static final String COMPILER_PB_LOCAL_VARIABLE_POSSIBLE_ATTRIBUTE_ACCESS = PLUGIN_ID + ".compiler.problem.localVariablePossibleAttributeAccess"; //$NON-NLS-1$
+
// The shared instance
private static AptanaRDTPlugin plugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LintOptions.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LintOptions.java 2007-08-10 15:16:40 UTC (rev 2958)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LintOptions.java 2007-08-10 15:16:49 UTC (rev 2959)
@@ -29,6 +29,7 @@
public static final long MethodMissingWithoutRespondTo = 0x400000;
public static final long ConstantNamingConvention = 0x800000;
public static final long DynamicVariableAliasesLocal = 0x1000000;
+ public static final long LocalVariablePossibleAttributeAccess = 0x2000000;
public static final String ERROR = RubyCore.ERROR;
public static final String WARNING = RubyCore.WARNING;
@@ -50,6 +51,7 @@
| MethodMissingWithoutRespondTo
| ConstantNamingConvention
| DynamicVariableAliasesLocal
+ | LocalVariablePossibleAttributeAccess
/*| NullReference -- keep RubyCore#getDefaultOptions comment in sync */;
public int maxLocals = 5;
@@ -59,7 +61,7 @@
public int maxArguments = 10;
public Map getMap() {
- Map optionsMap = new HashMap(30);
+ Map<String, String> optionsMap = new HashMap<String, String>(30);
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_UNUSED_PRIVATE_MEMBER, getSeverityString(UnusedPrivateMember));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_SUBCLASS_DOESNT_CALL_SUPER, getSeverityString(SubclassDoesntCallSuper));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_ASSIGNMENT_PRECEDENCE, getSeverityString(AssignmentPrecedence));
@@ -80,6 +82,7 @@
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_CONSTANT_NAMING_CONVENTION, getSeverityString(ConstantNamingConvention));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_METHOD_MISSING_NO_RESPOND_TO, getSeverityString(MethodMissingWithoutRespondTo));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_DYNAMIC_VARIABLE_ALIASES_LOCAL, getSeverityString(DynamicVariableAliasesLocal));
+ optionsMap.put(AptanaRDTPlugin.COMPILER_PB_LOCAL_VARIABLE_POSSIBLE_ATTRIBUTE_ACCESS, getSeverityString(LocalVariablePossibleAttributeAccess));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_MAX_ARGUMENTS, String.valueOf(maxArguments));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_MAX_LINES, String.valueOf(maxLines));
optionsMap.put(AptanaRDTPlugin.COMPILER_PB_MAX_LOCALS, String.valueOf(maxLocals));
@@ -118,6 +121,7 @@
if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_CONSTANT_NAMING_CONVENTION)) != null) updateSeverity(ConstantNamingConvention, optionValue);
if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_METHOD_MISSING_NO_RESPOND_TO)) != null) updateSeverity(MethodMissingWithoutRespondTo, optionValue);
if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_DYNAMIC_VARIABLE_ALIASES_LOCAL)) != null) updateSeverity(DynamicVariableAliasesLocal, optionValue);
+ if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_LOCAL_VARIABLE_POSSIBLE_ATTRIBUTE_ACCESS)) != null) updateSeverity(LocalVariablePossibleAttributeAccess, optionValue);
if ((optionValue = optionsMap.get(AptanaRDTPlugin.COMPILER_PB_MAX_LOCALS)) != null) {
if (optionValue instanceof String) {
String stringValue = (String) optionValue;
Added: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalVariablePossibleAttributeAccess.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalVariablePossibleAttributeAccess.java (rev 0)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalVariablePossibleAttributeAccess.java 2007-08-10 15:16:49 UTC (rev 2959)
@@ -0,0 +1,73 @@
+package com.aptana.rdt.internal.parser.warnings;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jruby.ast.ClassNode;
+import org.jruby.ast.FCallNode;
+import org.jruby.ast.LocalAsgnNode;
+import org.jruby.evaluator.Instruction;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.internal.core.util.ASTUtil;
+
+import com.aptana.rdt.AptanaRDTPlugin;
+
+public class LocalVariablePossibleAttributeAccess extends RubyLintVisitor {
+
+ private List<LocalAsgnNode> locals = new ArrayList<LocalAsgnNode>();
+
+ private List<String> attributes = new ArrayList<String>();
+
+ public LocalVariablePossibleAttributeAccess(String contents) {
+ super(AptanaRDTPlugin.getDefault().getOptions(), contents);
+ }
+
+ @Override
+ protected String getOptionKey() {
+ return AptanaRDTPlugin.COMPILER_PB_LOCAL_VARIABLE_POSSIBLE_ATTRIBUTE_ACCESS;
+ }
+
+ @Override
+ public Instruction visitClassNode(ClassNode iVisited) {
+ locals.clear();
+ attributes.clear();
+ return super.visitClassNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitLocalAsgnNode(LocalAsgnNode iVisited) {
+ locals.add(iVisited);
+ return super.visitLocalAsgnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitFCallNode(FCallNode iVisited) {
+ String name = iVisited.getName();
+ if (name.equals("attr_accessor") || name.equals("attr_writer")
+ || name.equals("attr")) {
+ List<String> args = ASTUtil.getArgumentsFromFunctionCall(iVisited);
+ if (name.equals("attr")) {
+ // second arg must be "true"
+ if (args.size() < 2) {
+ return super.visitFCallNode(iVisited);
+ }
+ if (!args.get(1).equals("true")) return super.visitFCallNode(iVisited);
+ attributes.add(args.get(0));
+ return super.visitFCallNode(iVisited);
+ }
+ attributes.addAll(args);
+ }
+ return super.visitFCallNode(iVisited);
+ }
+
+ @Override
+ public void exitClassNode(ClassNode iVisited) {
+ for (LocalAsgnNode local : locals) {
+ if (attributes.contains(local.getName())) {
+ createProblem(local.getPosition(), "Local variable assignment might be possible attribute access attempt?");
+ }
+ }
+ super.exitClassNode(iVisited);
+ }
+
+}
Property changes on: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalVariablePossibleAttributeAccess.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java 2007-08-10 15:16:40 UTC (rev 2958)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java 2007-08-10 15:16:49 UTC (rev 2959)
@@ -85,6 +85,7 @@
visitors.add(new ConstantNamingConvention(contents));
visitors.add(new MethodMissingWithoutRespondTo(contents));
visitors.add(new DynamicVariableAliasesLocal(contents));
+ visitors.add(new LocalVariablePossibleAttributeAccess(contents));
List<RubyLintVisitor> filtered = new ArrayList<RubyLintVisitor>();
for (RubyLintVisitor visitor : visitors) {
if (visitor.isIgnored()) continue;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-10 15:16:44
|
Revision: 2958
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2958&view=rev
Author: cawilliams
Date: 2007-08-10 08:16:40 -0700 (Fri, 10 Aug 2007)
Log Message:
-----------
Fix #5517 - Add warning check for local variable assignment that may intend to be attribute access
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/InOrderVisitor.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/util/ASTUtil.java
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/InOrderVisitor.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/InOrderVisitor.java 2007-08-09 17:03:39 UTC (rev 2957)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/InOrderVisitor.java 2007-08-10 15:16:40 UTC (rev 2958)
@@ -1197,53 +1197,7 @@
}
protected List<String> getArgumentsFromFunctionCall(IArgumentNode iVisited) {
- List<String> arguments = new ArrayList<String>();
- Node argsNode = iVisited.getArgsNode();
- Iterator iter = null;
- if (argsNode instanceof SplatNode) {
- SplatNode splat = (SplatNode) argsNode;
- iter = splat.childNodes().iterator();
- } else if (argsNode instanceof ArrayNode) {
- ArrayNode arrayNode = (ArrayNode) iVisited.getArgsNode();
- iter = arrayNode.childNodes().iterator();
- } else if (argsNode == null) {
- // Block?
- Node iterNode = null;
- if (iVisited instanceof FCallNode) {
- FCallNode fcall = (FCallNode) iVisited;
- iterNode = fcall.getIterNode();
- } else if (iVisited instanceof CallNode) {
- CallNode call = (CallNode) iVisited;
- iterNode = call.getIterNode();
- }
- if (iterNode == null) return arguments;
- if (iterNode instanceof IterNode) { // yup, it has a block
- IterNode yeah = (IterNode) iterNode;
- Node varNode = yeah.getVarNode();
- if (varNode instanceof DAsgnNode) { // single variable in block
- DAsgnNode dassgn = (DAsgnNode) varNode;
- arguments.add(dassgn.getName());
- } else if (varNode instanceof MultipleAsgnNode) { // multiple variables in block
- MultipleAsgnNode multi = (MultipleAsgnNode) varNode;
- ListNode list = multi.getHeadNode();
- if (list != null)
- iter = list.childNodes().iterator();
- else {
- Node multiArgsNode = multi.getArgsNode();
- if (multiArgsNode instanceof DAsgnNode) { // single variable in block
- DAsgnNode dassgn = (DAsgnNode) multiArgsNode;
- arguments.add(dassgn.getName());
- }
- }
- }
- }
- }
- if (iter == null) return arguments;
- for (; iter.hasNext();) {
- Node argument = (Node) iter.next();
- arguments.add(ASTUtil.getNameReflectively(argument));
- }
- return arguments;
+ return ASTUtil.getArgumentsFromFunctionCall(iVisited);
}
}
\ No newline at end of file
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/util/ASTUtil.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/util/ASTUtil.java 2007-08-09 17:03:39 UTC (rev 2957)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/util/ASTUtil.java 2007-08-10 15:16:40 UTC (rev 2958)
@@ -7,7 +7,9 @@
import org.jruby.ast.ArgsNode;
import org.jruby.ast.ArgumentNode;
+import org.jruby.ast.ArrayNode;
import org.jruby.ast.AttrAssignNode;
+import org.jruby.ast.CallNode;
import org.jruby.ast.ClassNode;
import org.jruby.ast.ClassVarAsgnNode;
import org.jruby.ast.ClassVarDeclNode;
@@ -15,20 +17,26 @@
import org.jruby.ast.Colon2Node;
import org.jruby.ast.ConstDeclNode;
import org.jruby.ast.ConstNode;
+import org.jruby.ast.DAsgnNode;
import org.jruby.ast.DStrNode;
+import org.jruby.ast.FCallNode;
import org.jruby.ast.FalseNode;
import org.jruby.ast.FixnumNode;
import org.jruby.ast.GlobalAsgnNode;
import org.jruby.ast.GlobalVarNode;
import org.jruby.ast.HashNode;
+import org.jruby.ast.IArgumentNode;
import org.jruby.ast.InstAsgnNode;
import org.jruby.ast.InstVarNode;
+import org.jruby.ast.IterNode;
import org.jruby.ast.ListNode;
import org.jruby.ast.LocalAsgnNode;
import org.jruby.ast.ModuleNode;
+import org.jruby.ast.MultipleAsgnNode;
import org.jruby.ast.NilNode;
import org.jruby.ast.Node;
import org.jruby.ast.SelfNode;
+import org.jruby.ast.SplatNode;
import org.jruby.ast.StrNode;
import org.jruby.ast.TrueNode;
import org.jruby.ast.ZArrayNode;
@@ -207,4 +215,54 @@
|| (node instanceof ClassVarNode);
}
+ public static List<String> getArgumentsFromFunctionCall(IArgumentNode iVisited) {
+ List<String> arguments = new ArrayList<String>();
+ Node argsNode = iVisited.getArgsNode();
+ Iterator iter = null;
+ if (argsNode instanceof SplatNode) {
+ SplatNode splat = (SplatNode) argsNode;
+ iter = splat.childNodes().iterator();
+ } else if (argsNode instanceof ArrayNode) {
+ ArrayNode arrayNode = (ArrayNode) iVisited.getArgsNode();
+ iter = arrayNode.childNodes().iterator();
+ } else if (argsNode == null) {
+ // Block?
+ Node iterNode = null;
+ if (iVisited instanceof FCallNode) {
+ FCallNode fcall = (FCallNode) iVisited;
+ iterNode = fcall.getIterNode();
+ } else if (iVisited instanceof CallNode) {
+ CallNode call = (CallNode) iVisited;
+ iterNode = call.getIterNode();
+ }
+ if (iterNode == null) return arguments;
+ if (iterNode instanceof IterNode) { // yup, it has a block
+ IterNode yeah = (IterNode) iterNode;
+ Node varNode = yeah.getVarNode();
+ if (varNode instanceof DAsgnNode) { // single variable in block
+ DAsgnNode dassgn = (DAsgnNode) varNode;
+ arguments.add(dassgn.getName());
+ } else if (varNode instanceof MultipleAsgnNode) { // multiple variables in block
+ MultipleAsgnNode multi = (MultipleAsgnNode) varNode;
+ ListNode list = multi.getHeadNode();
+ if (list != null)
+ iter = list.childNodes().iterator();
+ else {
+ Node multiArgsNode = multi.getArgsNode();
+ if (multiArgsNode instanceof DAsgnNode) { // single variable in block
+ DAsgnNode dassgn = (DAsgnNode) multiArgsNode;
+ arguments.add(dassgn.getName());
+ }
+ }
+ }
+ }
+ }
+ if (iter == null) return arguments;
+ for (; iter.hasNext();) {
+ Node argument = (Node) iter.next();
+ arguments.add(ASTUtil.getNameReflectively(argument));
+ }
+ return arguments;
+ }
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-09 17:03:43
|
Revision: 2957
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2957&view=rev
Author: cawilliams
Date: 2007-08-09 10:03:39 -0700 (Thu, 09 Aug 2007)
Log Message:
-----------
fix #5494- Force RDT to look in /usr/local for a ruby installation and if found prefer it over /usr
Modified Paths:
--------------
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVMType.java
Modified: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVMType.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVMType.java 2007-08-09 16:30:53 UTC (rev 2956)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVMType.java 2007-08-09 17:03:39 UTC (rev 2957)
@@ -293,8 +293,16 @@
p.destroy();
}
}
- }
-
+ // If we find one at /usr/bin/ruby, try to see if there's one at /usr/local/bin/ruby. If so, then prefer that.
+ if (rubyExecutable != null && rubyExecutable.getAbsolutePath().startsWith("/usr/bin")) {
+ File rubyHome = tryLocation(new File("/usr/local/bin/ruby"));
+ if (rubyHome != null) return rubyHome;
+ }
+ }
+ return tryLocation(rubyExecutable);
+ }
+
+ private File tryLocation(File rubyExecutable) {
if (rubyExecutable == null) {
return null;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-09 16:31:05
|
Revision: 2956
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2956&view=rev
Author: cawilliams
Date: 2007-08-09 09:30:53 -0700 (Thu, 09 Aug 2007)
Log Message:
-----------
fix #5508 - Typing apostrophe in comment shouldn't auto-create a second apostrophe
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/RubyEditor.java
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/RubyEditor.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/RubyEditor.java 2007-08-09 14:47:16 UTC (rev 2955)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/RubyEditor.java 2007-08-09 16:30:53 UTC (rev 2956)
@@ -1195,8 +1195,8 @@
case '\'':
case '"':
if (!fCloseStrings || nextToken == Symbols.TokenIDENT
- || prevToken == Symbols.TokenIDENT || next != null && next.length() > 1
- || previous != null && previous.length() > 1) return;
+ /*|| prevToken == Symbols.TokenIDENT */ || next != null && next.length() > 1
+ /*|| previous != null && previous.length() > 1*/) return;
break;
default:
@@ -1204,7 +1204,7 @@
}
ITypedRegion partition = TextUtilities.getPartition(document,
- IRubyPartitions.RUBY_PARTITIONING, offset, true);
+ IRubyPartitions.RUBY_PARTITIONING, offset - 1, true);
if (!IDocument.DEFAULT_CONTENT_TYPE.equals(partition.getType())) return;
if (!validateEditorInputState()) return;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-09 14:47:18
|
Revision: 2955
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2955&view=rev
Author: cawilliams
Date: 2007-08-09 07:47:16 -0700 (Thu, 09 Aug 2007)
Log Message:
-----------
fix preference keys for method_missing and dynamic variable aliasing local
Modified Paths:
--------------
trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java 2007-08-09 14:21:38 UTC (rev 2954)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/AptanaRDTPlugin.java 2007-08-09 14:47:16 UTC (rev 2955)
@@ -208,14 +208,14 @@
* @see #getDefaultOptions()
* @since 1.0.0
*/
- public static final String COMPILER_PB_METHOD_MISSING_NO_RESPOND_TO = PLUGIN_ID + "com.aptana.rdt.compiler.problem.methodMissingWithoutRespondTo";
+ public static final String COMPILER_PB_METHOD_MISSING_NO_RESPOND_TO = PLUGIN_ID + ".compiler.problem.methodMissingWithoutRespondTo";
/**
* Possible configurable option ID.
* @see #getDefaultOptions()
* @since 1.0.0
*/
- public static final String COMPILER_PB_DYNAMIC_VARIABLE_ALIASES_LOCAL = PLUGIN_ID + "com.aptana.rdt.compiler.problem.dynamicVariableAliasesLocal";
+ public static final String COMPILER_PB_DYNAMIC_VARIABLE_ALIASES_LOCAL = PLUGIN_ID + ".compiler.problem.dynamicVariableAliasesLocal";
// The shared instance
private static AptanaRDTPlugin plugin;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-09 14:21:58
|
Revision: 2953
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2953&view=rev
Author: cawilliams
Date: 2007-08-09 07:21:32 -0700 (Thu, 09 Aug 2007)
Log Message:
-----------
move useful warning classes to externally visible package
Modified Paths:
--------------
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/AccidentalBooleanAssignmentVisitor.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/AndOrUsedOnRighthandAssignment.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/ComparableInclusionVisitor.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/ConstantNamingConvention.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/DynamicVariableAliasesLocal.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/EnumerableInclusionVisitor.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalsMaskingMethodsVisitor.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/MethodMissingWithoutRespondTo.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/MisspelledConstructorVisitor.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/SimilarVariableNameVisitor.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/SubclassCallsSuper.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyArgumentsVisitor.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyBranchesVisitor.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyLinesVisitor.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyLocalsVisitor.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyReturnsVisitor.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnecessaryElseVisitor.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnusedParameterVisitor.java
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnusedPrivateMethodVisitor.java
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/AccidentalBooleanAssignmentVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/AccidentalBooleanAssignmentVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/AccidentalBooleanAssignmentVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -7,7 +7,7 @@
import org.jruby.ast.LocalAsgnNode;
import org.jruby.ast.Node;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/AndOrUsedOnRighthandAssignment.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/AndOrUsedOnRighthandAssignment.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/AndOrUsedOnRighthandAssignment.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -4,7 +4,7 @@
import org.jruby.ast.Node;
import org.jruby.ast.OrNode;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import org.rubypeople.rdt.internal.core.util.ASTUtil;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/ComparableInclusionVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/ComparableInclusionVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/ComparableInclusionVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -8,7 +8,7 @@
import org.jruby.ast.Node;
import org.jruby.evaluator.Instruction;
import org.jruby.lexer.yacc.ISourcePosition;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/ConstantNamingConvention.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/ConstantNamingConvention.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/ConstantNamingConvention.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -2,7 +2,7 @@
import org.jruby.ast.ConstDeclNode;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/DynamicVariableAliasesLocal.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/DynamicVariableAliasesLocal.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/DynamicVariableAliasesLocal.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -9,7 +9,7 @@
import org.jruby.ast.MultipleAsgnNode;
import org.jruby.ast.Node;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/EnumerableInclusionVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/EnumerableInclusionVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/EnumerableInclusionVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -8,7 +8,7 @@
import org.jruby.ast.Node;
import org.jruby.evaluator.Instruction;
import org.jruby.lexer.yacc.ISourcePosition;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalsMaskingMethodsVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalsMaskingMethodsVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/LocalsMaskingMethodsVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -7,7 +7,7 @@
import org.jruby.ast.DefnNode;
import org.jruby.ast.LocalAsgnNode;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/MethodMissingWithoutRespondTo.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/MethodMissingWithoutRespondTo.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/MethodMissingWithoutRespondTo.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -6,7 +6,7 @@
import org.jruby.ast.ClassNode;
import org.jruby.ast.DefnNode;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/MisspelledConstructorVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/MisspelledConstructorVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/MisspelledConstructorVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -2,7 +2,7 @@
import org.jruby.ast.DefnNode;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/RubyRedLint.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -11,11 +11,11 @@
import org.rubypeople.rdt.core.compiler.CategorizedProblem;
import org.rubypeople.rdt.core.compiler.CompilationParticipant;
import org.rubypeople.rdt.core.compiler.ReconcileContext;
+import org.rubypeople.rdt.core.parser.warnings.DelegatingVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import org.rubypeople.rdt.internal.core.parser.RubyParser;
import org.rubypeople.rdt.internal.core.parser.warnings.ConstantReassignmentVisitor;
-import org.rubypeople.rdt.internal.core.parser.warnings.DelegatingVisitor;
import org.rubypeople.rdt.internal.core.parser.warnings.EmptyStatementVisitor;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/SimilarVariableNameVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/SimilarVariableNameVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/SimilarVariableNameVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -22,7 +22,7 @@
import org.jruby.ast.VCallNode;
import org.jruby.ast.types.INameNode;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/SubclassCallsSuper.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/SubclassCallsSuper.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/SubclassCallsSuper.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -6,7 +6,7 @@
import org.jruby.ast.SuperNode;
import org.jruby.ast.ZSuperNode;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyArgumentsVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyArgumentsVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyArgumentsVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -5,7 +5,7 @@
import org.jruby.ast.DefnNode;
import org.jruby.ast.DefsNode;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import org.rubypeople.rdt.internal.core.util.ASTUtil;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyBranchesVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyBranchesVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyBranchesVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -9,7 +9,7 @@
import org.jruby.ast.Node;
import org.jruby.ast.WhenNode;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyLinesVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyLinesVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyLinesVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -6,7 +6,7 @@
import org.jruby.ast.DefsNode;
import org.jruby.evaluator.Instruction;
import org.jruby.lexer.yacc.ISourcePosition;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyLocalsVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyLocalsVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyLocalsVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -9,7 +9,7 @@
import org.jruby.ast.LocalAsgnNode;
import org.jruby.ast.RootNode;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyReturnsVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyReturnsVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/TooManyReturnsVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -6,7 +6,7 @@
import org.jruby.ast.DefsNode;
import org.jruby.ast.ReturnNode;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnecessaryElseVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnecessaryElseVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnecessaryElseVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -11,8 +11,8 @@
import org.jruby.ast.RootNode;
import org.jruby.ast.WhenNode;
import org.jruby.evaluator.Instruction;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import org.rubypeople.rdt.internal.core.parser.InOrderVisitor;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnusedParameterVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnusedParameterVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnusedParameterVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -12,7 +12,7 @@
import org.jruby.ast.LocalVarNode;
import org.jruby.ast.Node;
import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import org.rubypeople.rdt.internal.core.util.ASTUtil;
import com.aptana.rdt.AptanaRDTPlugin;
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnusedPrivateMethodVisitor.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnusedPrivateMethodVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/parser/warnings/UnusedPrivateMethodVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
@@ -12,7 +12,7 @@
import org.jruby.ast.VCallNode;
import org.jruby.evaluator.Instruction;
import org.jruby.runtime.Visibility;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import org.rubypeople.rdt.internal.core.util.ASTUtil;
import com.aptana.rdt.AptanaRDTPlugin;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-09 14:21:57
|
Revision: 2954
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2954&view=rev
Author: cawilliams
Date: 2007-08-09 07:21:38 -0700 (Thu, 09 Aug 2007)
Log Message:
-----------
move useful warning classes to externally visible package
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder/TC_RubyLintVisitor.java
Modified: trunk/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder/TC_RubyLintVisitor.java
===================================================================
--- trunk/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder/TC_RubyLintVisitor.java 2007-08-09 14:21:32 UTC (rev 2953)
+++ trunk/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder/TC_RubyLintVisitor.java 2007-08-09 14:21:38 UTC (rev 2954)
@@ -8,9 +8,9 @@
import org.jruby.ast.Node;
import org.rubypeople.eclipse.shams.resources.ShamFile;
import org.rubypeople.rdt.core.compiler.CategorizedProblem;
+import org.rubypeople.rdt.core.parser.warnings.DelegatingVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import org.rubypeople.rdt.internal.core.parser.RubyParser;
-import org.rubypeople.rdt.internal.core.parser.warnings.DelegatingVisitor;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
public class TC_RubyLintVisitor extends TestCase {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-09 14:21:56
|
Revision: 2952
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2952&view=rev
Author: cawilliams
Date: 2007-08-09 07:21:16 -0700 (Thu, 09 Aug 2007)
Log Message:
-----------
move useful warning classes to externally visible package
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/META-INF/MANIFEST.MF
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScriptProblemFinder.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/RubyCodeAnalyzer.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/ConstantReassignmentVisitor.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/EmptyStatementVisitor.java
Added Paths:
-----------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/parser/warnings/DelegatingVisitor.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/parser/warnings/RubyLintVisitor.java
Removed Paths:
-------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/DelegatingVisitor.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/RubyLintVisitor.java
Modified: trunk/org.rubypeople.rdt.core/META-INF/MANIFEST.MF
===================================================================
--- trunk/org.rubypeople.rdt.core/META-INF/MANIFEST.MF 2007-08-09 14:18:53 UTC (rev 2951)
+++ trunk/org.rubypeople.rdt.core/META-INF/MANIFEST.MF 2007-08-09 14:21:16 UTC (rev 2952)
@@ -11,6 +11,7 @@
org.rubypeople.rdt.core,
org.rubypeople.rdt.core.compiler,
org.rubypeople.rdt.core.formatter,
+ org.rubypeople.rdt.core.parser.warnings,
org.rubypeople.rdt.core.search,
org.rubypeople.rdt.core.util,
org.rubypeople.rdt.internal.compiler,
Copied: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/parser/warnings/DelegatingVisitor.java (from rev 2724, trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/DelegatingVisitor.java)
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/parser/warnings/DelegatingVisitor.java (rev 0)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/parser/warnings/DelegatingVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
@@ -0,0 +1,928 @@
+package org.rubypeople.rdt.core.parser.warnings;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jruby.ast.AliasNode;
+import org.jruby.ast.AndNode;
+import org.jruby.ast.ArgsCatNode;
+import org.jruby.ast.ArgsNode;
+import org.jruby.ast.ArgsPushNode;
+import org.jruby.ast.ArrayNode;
+import org.jruby.ast.AttrAssignNode;
+import org.jruby.ast.BackRefNode;
+import org.jruby.ast.BeginNode;
+import org.jruby.ast.BignumNode;
+import org.jruby.ast.BlockArgNode;
+import org.jruby.ast.BlockNode;
+import org.jruby.ast.BlockPassNode;
+import org.jruby.ast.BreakNode;
+import org.jruby.ast.CallNode;
+import org.jruby.ast.CaseNode;
+import org.jruby.ast.ClassNode;
+import org.jruby.ast.ClassVarAsgnNode;
+import org.jruby.ast.ClassVarDeclNode;
+import org.jruby.ast.ClassVarNode;
+import org.jruby.ast.Colon2Node;
+import org.jruby.ast.Colon3Node;
+import org.jruby.ast.ConstDeclNode;
+import org.jruby.ast.ConstNode;
+import org.jruby.ast.DAsgnNode;
+import org.jruby.ast.DRegexpNode;
+import org.jruby.ast.DStrNode;
+import org.jruby.ast.DSymbolNode;
+import org.jruby.ast.DVarNode;
+import org.jruby.ast.DXStrNode;
+import org.jruby.ast.DefinedNode;
+import org.jruby.ast.DefnNode;
+import org.jruby.ast.DefsNode;
+import org.jruby.ast.DotNode;
+import org.jruby.ast.EnsureNode;
+import org.jruby.ast.EvStrNode;
+import org.jruby.ast.FCallNode;
+import org.jruby.ast.FalseNode;
+import org.jruby.ast.FixnumNode;
+import org.jruby.ast.FlipNode;
+import org.jruby.ast.FloatNode;
+import org.jruby.ast.ForNode;
+import org.jruby.ast.GlobalAsgnNode;
+import org.jruby.ast.GlobalVarNode;
+import org.jruby.ast.HashNode;
+import org.jruby.ast.IfNode;
+import org.jruby.ast.InstAsgnNode;
+import org.jruby.ast.InstVarNode;
+import org.jruby.ast.IterNode;
+import org.jruby.ast.LocalAsgnNode;
+import org.jruby.ast.LocalVarNode;
+import org.jruby.ast.Match2Node;
+import org.jruby.ast.Match3Node;
+import org.jruby.ast.MatchNode;
+import org.jruby.ast.ModuleNode;
+import org.jruby.ast.MultipleAsgnNode;
+import org.jruby.ast.NewlineNode;
+import org.jruby.ast.NextNode;
+import org.jruby.ast.NilNode;
+import org.jruby.ast.NotNode;
+import org.jruby.ast.NthRefNode;
+import org.jruby.ast.OpAsgnAndNode;
+import org.jruby.ast.OpAsgnNode;
+import org.jruby.ast.OpAsgnOrNode;
+import org.jruby.ast.OpElementAsgnNode;
+import org.jruby.ast.OptNNode;
+import org.jruby.ast.OrNode;
+import org.jruby.ast.PostExeNode;
+import org.jruby.ast.RedoNode;
+import org.jruby.ast.RegexpNode;
+import org.jruby.ast.RescueBodyNode;
+import org.jruby.ast.RescueNode;
+import org.jruby.ast.RetryNode;
+import org.jruby.ast.ReturnNode;
+import org.jruby.ast.RootNode;
+import org.jruby.ast.SClassNode;
+import org.jruby.ast.SValueNode;
+import org.jruby.ast.SelfNode;
+import org.jruby.ast.SplatNode;
+import org.jruby.ast.StrNode;
+import org.jruby.ast.SuperNode;
+import org.jruby.ast.SymbolNode;
+import org.jruby.ast.ToAryNode;
+import org.jruby.ast.TrueNode;
+import org.jruby.ast.UndefNode;
+import org.jruby.ast.UntilNode;
+import org.jruby.ast.VAliasNode;
+import org.jruby.ast.VCallNode;
+import org.jruby.ast.WhenNode;
+import org.jruby.ast.WhileNode;
+import org.jruby.ast.XStrNode;
+import org.jruby.ast.YieldNode;
+import org.jruby.ast.ZArrayNode;
+import org.jruby.ast.ZSuperNode;
+import org.jruby.evaluator.Instruction;
+import org.rubypeople.rdt.core.compiler.CategorizedProblem;
+import org.rubypeople.rdt.internal.core.parser.InOrderVisitor;
+import org.rubypeople.rdt.internal.core.parser.warnings.ConstantReassignmentVisitor;
+import org.rubypeople.rdt.internal.core.parser.warnings.EmptyStatementVisitor;
+
+/**
+ * <p>DelegatingVisitor takes a list of visitors, traverse the AST in order, and at
+ * each node calls the correct visitXXXNode method on every visitor. This allows
+ * us to traverse the AST only once while having X number of visitors operate on
+ * it.</p>
+ *
+ * <p>Right now it is customized to RubyLintVisitors, which is the abstract
+ * base class for all visitors that do coce analysis for Error/Warning markers.</p>
+ *
+ * @author Christopher Williams
+ *
+ */
+public class DelegatingVisitor extends InOrderVisitor {
+
+ private List<RubyLintVisitor> visitors;
+
+ public static List<RubyLintVisitor> createVisitors(String contents) {
+ List<RubyLintVisitor> visitors = new ArrayList<RubyLintVisitor>();
+ // FIXME Run through a map of keys to classes and add instances of
+ // classes whose key is not set to ignore
+ visitors.add(new EmptyStatementVisitor(contents));
+ visitors.add(new ConstantReassignmentVisitor(contents));
+ return visitors;
+ }
+
+ public List<CategorizedProblem> getProblems() {
+ List<CategorizedProblem> problems = new ArrayList<CategorizedProblem>();
+ for (RubyLintVisitor visitor : visitors) {
+ problems.addAll(visitor.getProblems());
+ }
+ return problems;
+ }
+
+ public DelegatingVisitor(List<RubyLintVisitor> visitors) {
+ this.visitors = visitors;
+ }
+
+ @Override
+ public Instruction visitAliasNode(AliasNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitAliasNode(iVisited);
+ }
+ return super.visitAliasNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitAndNode(AndNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitAndNode(iVisited);
+ }
+ return super.visitAndNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitArgsCatNode(ArgsCatNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitArgsCatNode(iVisited);
+ }
+ return super.visitArgsCatNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitArgsNode(ArgsNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitArgsNode(iVisited);
+ }
+ return super.visitArgsNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitArgsPushNode(ArgsPushNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitArgsPushNode(iVisited);
+ }
+ return super.visitArgsPushNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitArrayNode(ArrayNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitArrayNode(iVisited);
+ }
+ return super.visitArrayNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitAttrAssignNode(AttrAssignNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitAttrAssignNode(iVisited);
+ }
+ return super.visitAttrAssignNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitBackRefNode(BackRefNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitBackRefNode(iVisited);
+ }
+ return super.visitBackRefNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitBeginNode(BeginNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitBeginNode(iVisited);
+ }
+ return super.visitBeginNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitBignumNode(BignumNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitBignumNode(iVisited);
+ }
+ return super.visitBignumNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitBlockArgNode(BlockArgNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitBlockArgNode(iVisited);
+ }
+ return super.visitBlockArgNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitBlockNode(BlockNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitBlockNode(iVisited);
+ }
+ Instruction ins = super.visitBlockNode(iVisited);
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.exitBlockNode(iVisited);
+ }
+ return ins;
+ }
+
+ @Override
+ public Instruction visitBlockPassNode(BlockPassNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitBlockPassNode(iVisited);
+ }
+ return super.visitBlockPassNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitBreakNode(BreakNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitBreakNode(iVisited);
+ }
+ return super.visitBreakNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitCallNode(CallNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitCallNode(iVisited);
+ }
+ return super.visitCallNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitCaseNode(CaseNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitCaseNode(iVisited);
+ }
+ return super.visitCaseNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitClassNode(ClassNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitClassNode(iVisited);
+ }
+ Instruction ins = super.visitClassNode(iVisited);
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.exitClassNode(iVisited);
+ }
+ return ins;
+ }
+
+ @Override
+ public Instruction visitClassVarAsgnNode(ClassVarAsgnNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitClassVarAsgnNode(iVisited);
+ }
+ return super.visitClassVarAsgnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitClassVarDeclNode(ClassVarDeclNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitClassVarDeclNode(iVisited);
+ }
+ return super.visitClassVarDeclNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitClassVarNode(ClassVarNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitClassVarNode(iVisited);
+ }
+ return super.visitClassVarNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitColon2Node(Colon2Node iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitColon2Node(iVisited);
+ }
+ return super.visitColon2Node(iVisited);
+ }
+
+ @Override
+ public Instruction visitColon3Node(Colon3Node iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitColon3Node(iVisited);
+ }
+ return super.visitColon3Node(iVisited);
+ }
+
+ @Override
+ public Instruction visitConstDeclNode(ConstDeclNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitConstDeclNode(iVisited);
+ }
+ return super.visitConstDeclNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitConstNode(ConstNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitConstNode(iVisited);
+ }
+ return super.visitConstNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitDAsgnNode(DAsgnNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitDAsgnNode(iVisited);
+ }
+ return super.visitDAsgnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitDefinedNode(DefinedNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitDefinedNode(iVisited);
+ }
+ return super.visitDefinedNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitDefnNode(DefnNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitDefnNode(iVisited);
+ }
+ Instruction ins = super.visitDefnNode(iVisited);
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.exitDefnNode(iVisited);
+ }
+ return ins;
+ }
+
+ @Override
+ public Instruction visitDefsNode(DefsNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitDefsNode(iVisited);
+ }
+ Instruction ins = super.visitDefsNode(iVisited);
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.exitDefsNode(iVisited);
+ }
+ return ins;
+ }
+
+
+ @Override
+ public Instruction visitDotNode(DotNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitDotNode(iVisited);
+ }
+ return super.visitDotNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitDRegxNode(DRegexpNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitDRegxNode(iVisited);
+ }
+ return super.visitDRegxNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitDStrNode(DStrNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitDStrNode(iVisited);
+ }
+ return super.visitDStrNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitDSymbolNode(DSymbolNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitDSymbolNode(iVisited);
+ }
+ return super.visitDSymbolNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitDVarNode(DVarNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitDVarNode(iVisited);
+ }
+ return super.visitDVarNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitDXStrNode(DXStrNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitDXStrNode(iVisited);
+ }
+ return super.visitDXStrNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitEnsureNode(EnsureNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitEnsureNode(iVisited);
+ }
+ return super.visitEnsureNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitEvStrNode(EvStrNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitEvStrNode(iVisited);
+ }
+ return super.visitEvStrNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitFalseNode(FalseNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitFalseNode(iVisited);
+ }
+ return super.visitFalseNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitFCallNode(FCallNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitFCallNode(iVisited);
+ }
+ return super.visitFCallNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitFixnumNode(FixnumNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitFixnumNode(iVisited);
+ }
+ return super.visitFixnumNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitFlipNode(FlipNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitFlipNode(iVisited);
+ }
+ return super.visitFlipNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitFloatNode(FloatNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitFloatNode(iVisited);
+ }
+ return super.visitFloatNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitForNode(ForNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitForNode(iVisited);
+ }
+ return super.visitForNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitGlobalAsgnNode(GlobalAsgnNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitGlobalAsgnNode(iVisited);
+ }
+ return super.visitGlobalAsgnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitGlobalVarNode(GlobalVarNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitGlobalVarNode(iVisited);
+ }
+ return super.visitGlobalVarNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitHashNode(HashNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitHashNode(iVisited);
+ }
+ return super.visitHashNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitIfNode(IfNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitIfNode(iVisited);
+ }
+ Instruction ins = super.visitIfNode(iVisited);
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.exitIfNode(iVisited);
+ }
+ return ins;
+ }
+
+ @Override
+ public Instruction visitInstAsgnNode(InstAsgnNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitInstAsgnNode(iVisited);
+ }
+ return super.visitInstAsgnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitInstVarNode(InstVarNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitInstVarNode(iVisited);
+ }
+ return super.visitInstVarNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitIterNode(IterNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitIterNode(iVisited);
+ }
+ return super.visitIterNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitLocalAsgnNode(LocalAsgnNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitLocalAsgnNode(iVisited);
+ }
+ return super.visitLocalAsgnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitLocalVarNode(LocalVarNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitLocalVarNode(iVisited);
+ }
+ return super.visitLocalVarNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitMatch2Node(Match2Node iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitMatch2Node(iVisited);
+ }
+ return super.visitMatch2Node(iVisited);
+ }
+
+ @Override
+ public Instruction visitMatch3Node(Match3Node iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitMatch3Node(iVisited);
+ }
+ return super.visitMatch3Node(iVisited);
+ }
+
+ @Override
+ public Instruction visitMatchNode(MatchNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitMatchNode(iVisited);
+ }
+ return super.visitMatchNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitModuleNode(ModuleNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitModuleNode(iVisited);
+ }
+ Instruction ins = super.visitModuleNode(iVisited);
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.exitModuleNode(iVisited);
+ }
+ return ins;
+ }
+
+ @Override
+ public Instruction visitMultipleAsgnNode(MultipleAsgnNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitMultipleAsgnNode(iVisited);
+ }
+ return super.visitMultipleAsgnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitNewlineNode(NewlineNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitNewlineNode(iVisited);
+ }
+ return super.visitNewlineNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitNextNode(NextNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitNextNode(iVisited);
+ }
+ return super.visitNextNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitNilNode(NilNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitNilNode(iVisited);
+ }
+ return super.visitNilNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitNotNode(NotNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitNotNode(iVisited);
+ }
+ return super.visitNotNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitNthRefNode(NthRefNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitNthRefNode(iVisited);
+ }
+ return super.visitNthRefNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitOpAsgnAndNode(OpAsgnAndNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitOpAsgnAndNode(iVisited);
+ }
+ return super.visitOpAsgnAndNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitOpAsgnNode(OpAsgnNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitOpAsgnNode(iVisited);
+ }
+ return super.visitOpAsgnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitOpAsgnOrNode(OpAsgnOrNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitOpAsgnOrNode(iVisited);
+ }
+ return super.visitOpAsgnOrNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitOpElementAsgnNode(OpElementAsgnNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitOpElementAsgnNode(iVisited);
+ }
+ return super.visitOpElementAsgnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitOptNNode(OptNNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitOptNNode(iVisited);
+ }
+ return super.visitOptNNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitOrNode(OrNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitOrNode(iVisited);
+ }
+ return super.visitOrNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitPostExeNode(PostExeNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitPostExeNode(iVisited);
+ }
+ return super.visitPostExeNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitRedoNode(RedoNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitRedoNode(iVisited);
+ }
+ return super.visitRedoNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitRegexpNode(RegexpNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitRegexpNode(iVisited);
+ }
+ return super.visitRegexpNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitRescueBodyNode(RescueBodyNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitRescueBodyNode(iVisited);
+ }
+ return super.visitRescueBodyNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitRescueNode(RescueNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitRescueNode(iVisited);
+ }
+ return super.visitRescueNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitRetryNode(RetryNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitRetryNode(iVisited);
+ }
+ return super.visitRetryNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitReturnNode(ReturnNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitReturnNode(iVisited);
+ }
+ return super.visitReturnNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitRootNode(RootNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitRootNode(iVisited);
+ }
+ return super.visitRootNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitSClassNode(SClassNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitSClassNode(iVisited);
+ }
+ Instruction ins = super.visitSClassNode(iVisited);
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.exitSClassNode(iVisited);
+ }
+ return ins;
+ }
+
+ @Override
+ public Instruction visitSelfNode(SelfNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitSelfNode(iVisited);
+ }
+ return super.visitSelfNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitSplatNode(SplatNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitSplatNode(iVisited);
+ }
+ return super.visitSplatNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitStrNode(StrNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitStrNode(iVisited);
+ }
+ return super.visitStrNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitSuperNode(SuperNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitSuperNode(iVisited);
+ }
+ return super.visitSuperNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitSValueNode(SValueNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitSValueNode(iVisited);
+ }
+ return super.visitSValueNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitSymbolNode(SymbolNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitSymbolNode(iVisited);
+ }
+ return super.visitSymbolNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitToAryNode(ToAryNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitToAryNode(iVisited);
+ }
+ return super.visitToAryNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitTrueNode(TrueNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitTrueNode(iVisited);
+ }
+ return super.visitTrueNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitUndefNode(UndefNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitUndefNode(iVisited);
+ }
+ return super.visitUndefNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitUntilNode(UntilNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitUntilNode(iVisited);
+ }
+ return super.visitUntilNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitVAliasNode(VAliasNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitVAliasNode(iVisited);
+ }
+ return super.visitVAliasNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitVCallNode(VCallNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitVCallNode(iVisited);
+ }
+ return super.visitVCallNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitWhenNode(WhenNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitWhenNode(iVisited);
+ }
+ Instruction ins = super.visitWhenNode(iVisited);
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.exitWhenNode(iVisited);
+ }
+ return ins;
+ }
+
+ @Override
+ public Instruction visitWhileNode(WhileNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitWhileNode(iVisited);
+ }
+ return super.visitWhileNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitXStrNode(XStrNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitXStrNode(iVisited);
+ }
+ return super.visitXStrNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitYieldNode(YieldNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitYieldNode(iVisited);
+ }
+ return super.visitYieldNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitZArrayNode(ZArrayNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitZArrayNode(iVisited);
+ }
+ return super.visitZArrayNode(iVisited);
+ }
+
+ @Override
+ public Instruction visitZSuperNode(ZSuperNode iVisited) {
+ for (RubyLintVisitor visitor : visitors) {
+ visitor.visitZSuperNode(iVisited);
+ }
+ return super.visitZSuperNode(iVisited);
+ }
+
+}
\ No newline at end of file
Copied: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/parser/warnings/RubyLintVisitor.java (from rev 2923, trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/RubyLintVisitor.java)
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/parser/warnings/RubyLintVisitor.java (rev 0)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/parser/warnings/RubyLintVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
@@ -0,0 +1,136 @@
+package org.rubypeople.rdt.core.parser.warnings;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.jruby.ast.BlockNode;
+import org.jruby.ast.ClassNode;
+import org.jruby.ast.DefnNode;
+import org.jruby.ast.DefsNode;
+import org.jruby.ast.IfNode;
+import org.jruby.ast.ModuleNode;
+import org.jruby.ast.Node;
+import org.jruby.ast.SClassNode;
+import org.jruby.ast.WhenNode;
+import org.jruby.ast.visitor.AbstractVisitor;
+import org.jruby.evaluator.Instruction;
+import org.jruby.lexer.yacc.ISourcePosition;
+import org.rubypeople.rdt.core.RubyCore;
+import org.rubypeople.rdt.core.compiler.CategorizedProblem;
+import org.rubypeople.rdt.core.compiler.IProblem;
+import org.rubypeople.rdt.internal.core.parser.Error;
+import org.rubypeople.rdt.internal.core.parser.Warning;
+import org.rubypeople.rdt.internal.core.util.ASTUtil;
+
+public abstract class RubyLintVisitor extends AbstractVisitor {
+
+ private String contents;
+ protected Map fOptions;
+ private List<CategorizedProblem> problems;
+
+ public RubyLintVisitor(String contents) {
+ this(RubyCore.getOptions(), contents);
+ }
+
+ public RubyLintVisitor(Map options, String contents) {
+ this.problems = new ArrayList<CategorizedProblem>();
+ this.contents = contents;
+ this.fOptions = options;
+ }
+
+ protected String getSource(Node node) {
+ return ASTUtil.getSource(contents, node);
+ }
+
+ public List<CategorizedProblem> getProblems() {
+ return problems;
+ }
+
+ public boolean isIgnored() {
+ String value = getSeverity();
+ if (value != null && value.equals(RubyCore.IGNORE))
+ return true;
+ return false;
+ }
+
+ protected void createProblem(ISourcePosition position, String message) {
+ String value = getSeverity();
+ if (value != null && value.equals(RubyCore.IGNORE))
+ return;
+ CategorizedProblem problem;
+ if (value != null && value.equals(RubyCore.ERROR))
+ problem = new Error(position, message, getProblemID());
+ else
+ problem = new Warning(position, message, getProblemID());
+ problems.add(problem);
+ }
+
+ protected String getSeverity() {
+ return (String) fOptions.get(getOptionKey());
+ }
+
+ @Override
+ protected Instruction visitNode(Node iVisited) {
+ return null;
+ }
+
+ /**
+ * The key used to store the error/warning severity option.
+ * @return a String key
+ */
+ abstract protected String getOptionKey();
+
+ /**
+ * Meant to be overriden by classes needing to perform some action when a class definition was exited.
+ * @param iVisited
+ */
+ public void exitClassNode(ClassNode iVisited) {}
+
+ /**
+ * To be overriden by subclasses who need to run particular behavior/code when exiting a method definition.
+ * @param iVisited
+ */
+ public void exitDefnNode(DefnNode iVisited) {}
+
+ /**
+ * To be overriden by subclasses who need to run particular behavior/code when exiting a singleton method definition.
+ * @param iVisited
+ */
+ public void exitIfNode(IfNode iVisited) {}
+
+ /**
+ * To be overriden by subclasses who need to run particular behavior/code when exiting a singleton method definition.
+ * @param iVisited
+ */
+ public void exitBlockNode(BlockNode iVisited) {}
+
+ /**
+ * To be overriden by subclasses who need to run particular behavior/code when exiting a singleton method definition.
+ * @param iVisited
+ */
+ public void exitDefsNode(DefsNode iVisited) {}
+
+ /**
+ * To be overriden by subclasses who need to run particular behavior/code when exiting a singleton method definition.
+ * @param iVisited
+ */
+ public void exitModuleNode(ModuleNode iVisited) {}
+
+ /**
+ * To be overriden by subclasses who need to run particular behavior/code when exiting a singleton method definition.
+ * @param iVisited
+ */
+ public void exitWhenNode(WhenNode iVisited) {}
+
+ /**
+ * To be overriden by subclasses who need to run particular behavior/code when exiting a singleton method definition.
+ * @param iVisited
+ */
+ public void exitSClassNode(SClassNode iVisited) {}
+
+ protected int getProblemID() {
+ return IProblem.Uncategorized;
+ }
+
+}
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScriptProblemFinder.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScriptProblemFinder.java 2007-08-09 14:18:53 UTC (rev 2951)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScriptProblemFinder.java 2007-08-09 14:21:16 UTC (rev 2952)
@@ -16,13 +16,13 @@
import org.rubypeople.rdt.core.RubyCore;
import org.rubypeople.rdt.core.RubyModelException;
import org.rubypeople.rdt.core.compiler.CategorizedProblem;
+import org.rubypeople.rdt.core.parser.warnings.DelegatingVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import org.rubypeople.rdt.internal.core.parser.Error;
import org.rubypeople.rdt.internal.core.parser.RdtWarnings;
import org.rubypeople.rdt.internal.core.parser.RubyParser;
import org.rubypeople.rdt.internal.core.parser.TaskParser;
import org.rubypeople.rdt.internal.core.parser.TaskTag;
-import org.rubypeople.rdt.internal.core.parser.warnings.DelegatingVisitor;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
/**
* @author Chris
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/RubyCodeAnalyzer.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/RubyCodeAnalyzer.java 2007-08-09 14:18:53 UTC (rev 2951)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/RubyCodeAnalyzer.java 2007-08-09 14:21:16 UTC (rev 2952)
@@ -25,11 +25,11 @@
import org.jruby.ast.visitor.NodeVisitor;
import org.jruby.lexer.yacc.SyntaxException;
import org.rubypeople.rdt.core.RubyCore;
+import org.rubypeople.rdt.core.parser.warnings.DelegatingVisitor;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
import org.rubypeople.rdt.internal.core.parser.Error;
import org.rubypeople.rdt.internal.core.parser.ImmediateWarnings;
import org.rubypeople.rdt.internal.core.parser.RubyParser;
-import org.rubypeople.rdt.internal.core.parser.warnings.DelegatingVisitor;
-import org.rubypeople.rdt.internal.core.parser.warnings.RubyLintVisitor;
public final class RubyCodeAnalyzer implements SingleFileCompiler {
private final IMarkerManager markerManager;
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/ConstantReassignmentVisitor.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/ConstantReassignmentVisitor.java 2007-08-09 14:18:53 UTC (rev 2951)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/ConstantReassignmentVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
@@ -6,6 +6,7 @@
import org.jruby.ast.ConstDeclNode;
import org.jruby.evaluator.Instruction;
import org.rubypeople.rdt.core.RubyCore;
+import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor;
public class ConstantReassignmentVisitor extends RubyLintVisitor {
Deleted: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/DelegatingVisitor.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/DelegatingVisitor.java 2007-08-09 14:18:53 UTC (rev 2951)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/DelegatingVisitor.java 2007-08-09 14:21:16 UTC (rev 2952)
@@ -1,926 +0,0 @@
-package org.rubypeople.rdt.internal.core.parser.warnings;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jruby.ast.AliasNode;
-import org.jruby.ast.AndNode;
-import org.jruby.ast.ArgsCatNode;
-import org.jruby.ast.ArgsNode;
-import org.jruby.ast.ArgsPushNode;
-import org.jruby.ast.ArrayNode;
-import org.jruby.ast.AttrAssignNode;
-import org.jruby.ast.BackRefNode;
-import org.jruby.ast.BeginNode;
-import org.jruby.ast.BignumNode;
-import org.jruby.ast.BlockArgNode;
-import org.jruby.ast.BlockNode;
-import org.jruby.ast.BlockPassNode;
-import org.jruby.ast.BreakNode;
-import org.jruby.ast.CallNode;
-import org.jruby.ast.CaseNode;
-import org.jruby.ast.ClassNode;
-import org.jruby.ast.ClassVarAsgnNode;
-import org.jruby.ast.ClassVarDeclNode;
-import org.jruby.ast.ClassVarNode;
-import org.jruby.ast.Colon2Node;
-import org.jruby.ast.Colon3Node;
-import org.jruby.ast.ConstDeclNode;
-import org.jruby.ast.ConstNode;
-import org.jruby.ast.DAsgnNode;
-import org.jruby.ast.DRegexpNode;
-import org.jruby.ast.DStrNode;
-import org.jruby.ast.DSymbolNode;
-import org.jruby.ast.DVarNode;
-import org.jruby.ast.DXStrNode;
-import org.jruby.ast.DefinedNode;
-import org.jruby.ast.DefnNode;
-import org.jruby.ast.DefsNode;
-import org.jruby.ast.DotNode;
-import org.jruby.ast.EnsureNode;
-import org.jruby.ast.EvStrNode;
-import org.jruby.ast.FCallNode;
-import org.jruby.ast.FalseNode;
-import org.jruby.ast.FixnumNode;
-import org.jruby.ast.FlipNode;
-import org.jruby.ast.FloatNode;
-import org.jruby.ast.ForNode;
-import org.jruby.ast.GlobalAsgnNode;
-import org.jruby.ast.GlobalVarNode;
-import org.jruby.ast.HashNode;
-import org.jruby.ast.IfNode;
-import org.jruby.ast.InstAsgnNode;
-import org.jruby.ast.InstVarNode;
-import org.jruby.ast.IterNode;
-import org.jruby.ast.LocalAsgnNode;
-import org.jruby.ast.LocalVarNode;
-import org.jruby.ast.Match2Node;
-import org.jruby.ast.Match3Node;
-import org.jruby.ast.MatchNode;
-import org.jruby.ast.ModuleNode;
-import org.jruby.ast.MultipleAsgnNode;
-import org.jruby.ast.NewlineNode;
-import org.jruby.ast.NextNode;
-import org.jruby.ast.NilNode;
-import org.jruby.ast.NotNode;
-import org.jruby.ast.NthRefNode;
-import org.jruby.ast.OpAsgnAndNode;
-import org.jruby.ast.OpAsgnNode;
-import org.jruby.ast.OpAsgnOrNode;
-import org.jruby.ast.OpElementAsgnNode;
-import org.jruby.ast.OptNNode;
-import org.jruby.ast.OrNode;
-import org.jruby.ast.PostExeNode;
-import org.jruby.ast.RedoNode;
-import org.jruby.ast.RegexpNode;
-import org.jruby.ast.RescueBodyNode;
-import org.jruby.ast.RescueNode;
-import org.jruby.ast.RetryNode;
-import org.jruby.ast.ReturnNode;
-import org.jruby.ast.RootNode;
-import org.jruby.ast.SClassNode;
-import org.jruby.ast.SValueNode;
-import org.jruby.ast.SelfNode;
-import org.jruby.ast.SplatNode;
-import org.jruby.ast.StrNode;
-import org.jruby.ast.SuperNode;
-import org.jruby.ast.SymbolNode;
-import org.jruby.ast.ToAryNode;
-import org.jruby.ast.TrueNode;
-import org.jruby.ast.UndefNode;
-import org.jruby.ast.UntilNode;
-import org.jruby.ast.VAliasNode;
-import org.jruby.ast.VCallNode;
-import org.jruby.ast.WhenNode;
-import org.jruby.ast.WhileNode;
-import org.jruby.ast.XStrNode;
-import org.jruby.ast.YieldNode;
-import org.jruby.ast.ZArrayNode;
-import org.jruby.ast.ZSuperNode;
-import org.jruby.evaluator.Instruction;
-import org.rubypeople.rdt.core.compiler.CategorizedProblem;
-import org.rubypeople.rdt.internal.core.parser.InOrderVisitor;
-
-/**
- * <p>DelegatingVisitor takes a list of visitors, traverse the AST in order, and at
- * each node calls the correct visitXXXNode method on every visitor. This allows
- * us to traverse the AST only once while having X number of visitors operate on
- * it.</p>
- *
- * <p>Right now it is customized to RubyLintVisitors, which is the abstract
- * base class for all visitors that do coce analysis for Error/Warning markers.</p>
- *
- * @author Christopher Williams
- *
- */
-public class DelegatingVisitor extends InOrderVisitor {
-
- private List<RubyLintVisitor> visitors;
-
- public static List<RubyLintVisitor> createVisitors(String contents) {
- List<RubyLintVisitor> visitors = new ArrayList<RubyLintVisitor>();
- // FIXME Run through a map of keys to classes and add instances of
- // classes whose key is not set to ignore
- visitors.add(new EmptyStatementVisitor(contents));
- visitors.add(new ConstantReassignmentVisitor(contents));
- return visitors;
- }
-
- public List<CategorizedProblem> getProblems() {
- List<CategorizedProblem> problems = new ArrayList<CategorizedProblem>();
- for (RubyLintVisitor visitor : visitors) {
- problems.addAll(visitor.getProblems());
- }
- return problems;
- }
-
- public DelegatingVisitor(List<RubyLintVisitor> visitors) {
- this.visitors = visitors;
- }
-
- @Override
- public Instruction visitAliasNode(AliasNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitAliasNode(iVisited);
- }
- return super.visitAliasNode(iVisited);
- }
-
- @Override
- public Instruction visitAndNode(AndNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitAndNode(iVisited);
- }
- return super.visitAndNode(iVisited);
- }
-
- @Override
- public Instruction visitArgsCatNode(ArgsCatNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitArgsCatNode(iVisited);
- }
- return super.visitArgsCatNode(iVisited);
- }
-
- @Override
- public Instruction visitArgsNode(ArgsNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitArgsNode(iVisited);
- }
- return super.visitArgsNode(iVisited);
- }
-
- @Override
- public Instruction visitArgsPushNode(ArgsPushNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitArgsPushNode(iVisited);
- }
- return super.visitArgsPushNode(iVisited);
- }
-
- @Override
- public Instruction visitArrayNode(ArrayNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitArrayNode(iVisited);
- }
- return super.visitArrayNode(iVisited);
- }
-
- @Override
- public Instruction visitAttrAssignNode(AttrAssignNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitAttrAssignNode(iVisited);
- }
- return super.visitAttrAssignNode(iVisited);
- }
-
- @Override
- public Instruction visitBackRefNode(BackRefNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitBackRefNode(iVisited);
- }
- return super.visitBackRefNode(iVisited);
- }
-
- @Override
- public Instruction visitBeginNode(BeginNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitBeginNode(iVisited);
- }
- return super.visitBeginNode(iVisited);
- }
-
- @Override
- public Instruction visitBignumNode(BignumNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitBignumNode(iVisited);
- }
- return super.visitBignumNode(iVisited);
- }
-
- @Override
- public Instruction visitBlockArgNode(BlockArgNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitBlockArgNode(iVisited);
- }
- return super.visitBlockArgNode(iVisited);
- }
-
- @Override
- public Instruction visitBlockNode(BlockNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitBlockNode(iVisited);
- }
- Instruction ins = super.visitBlockNode(iVisited);
- for (RubyLintVisitor visitor : visitors) {
- visitor.exitBlockNode(iVisited);
- }
- return ins;
- }
-
- @Override
- public Instruction visitBlockPassNode(BlockPassNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitBlockPassNode(iVisited);
- }
- return super.visitBlockPassNode(iVisited);
- }
-
- @Override
- public Instruction visitBreakNode(BreakNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitBreakNode(iVisited);
- }
- return super.visitBreakNode(iVisited);
- }
-
- @Override
- public Instruction visitCallNode(CallNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitCallNode(iVisited);
- }
- return super.visitCallNode(iVisited);
- }
-
- @Override
- public Instruction visitCaseNode(CaseNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitCaseNode(iVisited);
- }
- return super.visitCaseNode(iVisited);
- }
-
- @Override
- public Instruction visitClassNode(ClassNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitClassNode(iVisited);
- }
- Instruction ins = super.visitClassNode(iVisited);
- for (RubyLintVisitor visitor : visitors) {
- visitor.exitClassNode(iVisited);
- }
- return ins;
- }
-
- @Override
- public Instruction visitClassVarAsgnNode(ClassVarAsgnNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitClassVarAsgnNode(iVisited);
- }
- return super.visitClassVarAsgnNode(iVisited);
- }
-
- @Override
- public Instruction visitClassVarDeclNode(ClassVarDeclNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitClassVarDeclNode(iVisited);
- }
- return super.visitClassVarDeclNode(iVisited);
- }
-
- @Override
- public Instruction visitClassVarNode(ClassVarNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitClassVarNode(iVisited);
- }
- return super.visitClassVarNode(iVisited);
- }
-
- @Override
- public Instruction visitColon2Node(Colon2Node iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitColon2Node(iVisited);
- }
- return super.visitColon2Node(iVisited);
- }
-
- @Override
- public Instruction visitColon3Node(Colon3Node iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitColon3Node(iVisited);
- }
- return super.visitColon3Node(iVisited);
- }
-
- @Override
- public Instruction visitConstDeclNode(ConstDeclNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitConstDeclNode(iVisited);
- }
- return super.visitConstDeclNode(iVisited);
- }
-
- @Override
- public Instruction visitConstNode(ConstNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitConstNode(iVisited);
- }
- return super.visitConstNode(iVisited);
- }
-
- @Override
- public Instruction visitDAsgnNode(DAsgnNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitDAsgnNode(iVisited);
- }
- return super.visitDAsgnNode(iVisited);
- }
-
- @Override
- public Instruction visitDefinedNode(DefinedNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitDefinedNode(iVisited);
- }
- return super.visitDefinedNode(iVisited);
- }
-
- @Override
- public Instruction visitDefnNode(DefnNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitDefnNode(iVisited);
- }
- Instruction ins = super.visitDefnNode(iVisited);
- for (RubyLintVisitor visitor : visitors) {
- visitor.exitDefnNode(iVisited);
- }
- return ins;
- }
-
- @Override
- public Instruction visitDefsNode(DefsNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitDefsNode(iVisited);
- }
- Instruction ins = super.visitDefsNode(iVisited);
- for (RubyLintVisitor visitor : visitors) {
- visitor.exitDefsNode(iVisited);
- }
- return ins;
- }
-
-
- @Override
- public Instruction visitDotNode(DotNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitDotNode(iVisited);
- }
- return super.visitDotNode(iVisited);
- }
-
- @Override
- public Instruction visitDRegxNode(DRegexpNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitDRegxNode(iVisited);
- }
- return super.visitDRegxNode(iVisited);
- }
-
- @Override
- public Instruction visitDStrNode(DStrNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitDStrNode(iVisited);
- }
- return super.visitDStrNode(iVisited);
- }
-
- @Override
- public Instruction visitDSymbolNode(DSymbolNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitDSymbolNode(iVisited);
- }
- return super.visitDSymbolNode(iVisited);
- }
-
- @Override
- public Instruction visitDVarNode(DVarNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitDVarNode(iVisited);
- }
- return super.visitDVarNode(iVisited);
- }
-
- @Override
- public Instruction visitDXStrNode(DXStrNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitDXStrNode(iVisited);
- }
- return super.visitDXStrNode(iVisited);
- }
-
- @Override
- public Instruction visitEnsureNode(EnsureNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitEnsureNode(iVisited);
- }
- return super.visitEnsureNode(iVisited);
- }
-
- @Override
- public Instruction visitEvStrNode(EvStrNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitEvStrNode(iVisited);
- }
- return super.visitEvStrNode(iVisited);
- }
-
- @Override
- public Instruction visitFalseNode(FalseNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitFalseNode(iVisited);
- }
- return super.visitFalseNode(iVisited);
- }
-
- @Override
- public Instruction visitFCallNode(FCallNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitFCallNode(iVisited);
- }
- return super.visitFCallNode(iVisited);
- }
-
- @Override
- public Instruction visitFixnumNode(FixnumNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitFixnumNode(iVisited);
- }
- return super.visitFixnumNode(iVisited);
- }
-
- @Override
- public Instruction visitFlipNode(FlipNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitFlipNode(iVisited);
- }
- return super.visitFlipNode(iVisited);
- }
-
- @Override
- public Instruction visitFloatNode(FloatNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitFloatNode(iVisited);
- }
- return super.visitFloatNode(iVisited);
- }
-
- @Override
- public Instruction visitForNode(ForNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitForNode(iVisited);
- }
- return super.visitForNode(iVisited);
- }
-
- @Override
- public Instruction visitGlobalAsgnNode(GlobalAsgnNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitGlobalAsgnNode(iVisited);
- }
- return super.visitGlobalAsgnNode(iVisited);
- }
-
- @Override
- public Instruction visitGlobalVarNode(GlobalVarNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitGlobalVarNode(iVisited);
- }
- return super.visitGlobalVarNode(iVisited);
- }
-
- @Override
- public Instruction visitHashNode(HashNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitHashNode(iVisited);
- }
- return super.visitHashNode(iVisited);
- }
-
- @Override
- public Instruction visitIfNode(IfNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitIfNode(iVisited);
- }
- Instruction ins = super.visitIfNode(iVisited);
- for (RubyLintVisitor visitor : visitors) {
- visitor.exitIfNode(iVisited);
- }
- return ins;
- }
-
- @Override
- public Instruction visitInstAsgnNode(InstAsgnNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitInstAsgnNode(iVisited);
- }
- return super.visitInstAsgnNode(iVisited);
- }
-
- @Override
- public Instruction visitInstVarNode(InstVarNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitInstVarNode(iVisited);
- }
- return super.visitInstVarNode(iVisited);
- }
-
- @Override
- public Instruction visitIterNode(IterNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitIterNode(iVisited);
- }
- return super.visitIterNode(iVisited);
- }
-
- @Override
- public Instruction visitLocalAsgnNode(LocalAsgnNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitLocalAsgnNode(iVisited);
- }
- return super.visitLocalAsgnNode(iVisited);
- }
-
- @Override
- public Instruction visitLocalVarNode(LocalVarNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitLocalVarNode(iVisited);
- }
- return super.visitLocalVarNode(iVisited);
- }
-
- @Override
- public Instruction visitMatch2Node(Match2Node iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitMatch2Node(iVisited);
- }
- return super.visitMatch2Node(iVisited);
- }
-
- @Override
- public Instruction visitMatch3Node(Match3Node iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitMatch3Node(iVisited);
- }
- return super.visitMatch3Node(iVisited);
- }
-
- @Override
- public Instruction visitMatchNode(MatchNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitMatchNode(iVisited);
- }
- return super.visitMatchNode(iVisited);
- }
-
- @Override
- public Instruction visitModuleNode(ModuleNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitModuleNode(iVisited);
- }
- Instruction ins = super.visitModuleNode(iVisited);
- for (RubyLintVisitor visitor : visitors) {
- visitor.exitModuleNode(iVisited);
- }
- return ins;
- }
-
- @Override
- public Instruction visitMultipleAsgnNode(MultipleAsgnNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitMultipleAsgnNode(iVisited);
- }
- return super.visitMultipleAsgnNode(iVisited);
- }
-
- @Override
- public Instruction visitNewlineNode(NewlineNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitNewlineNode(iVisited);
- }
- return super.visitNewlineNode(iVisited);
- }
-
- @Override
- public Instruction visitNextNode(NextNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitNextNode(iVisited);
- }
- return super.visitNextNode(iVisited);
- }
-
- @Override
- public Instruction visitNilNode(NilNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitNilNode(iVisited);
- }
- return super.visitNilNode(iVisited);
- }
-
- @Override
- public Instruction visitNotNode(NotNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitNotNode(iVisited);
- }
- return super.visitNotNode(iVisited);
- }
-
- @Override
- public Instruction visitNthRefNode(NthRefNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitNthRefNode(iVisited);
- }
- return super.visitNthRefNode(iVisited);
- }
-
- @Override
- public Instruction visitOpAsgnAndNode(OpAsgnAndNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitOpAsgnAndNode(iVisited);
- }
- return super.visitOpAsgnAndNode(iVisited);
- }
-
- @Override
- public Instruction visitOpAsgnNode(OpAsgnNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitOpAsgnNode(iVisited);
- }
- return super.visitOpAsgnNode(iVisited);
- }
-
- @Override
- public Instruction visitOpAsgnOrNode(OpAsgnOrNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitOpAsgnOrNode(iVisited);
- }
- return super.visitOpAsgnOrNode(iVisited);
- }
-
- @Override
- public Instruction visitOpElementAsgnNode(OpElementAsgnNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitOpElementAsgnNode(iVisited);
- }
- return super.visitOpElementAsgnNode(iVisited);
- }
-
- @Override
- public Instruction visitOptNNode(OptNNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitOptNNode(iVisited);
- }
- return super.visitOptNNode(iVisited);
- }
-
- @Override
- public Instruction visitOrNode(OrNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitOrNode(iVisited);
- }
- return super.visitOrNode(iVisited);
- }
-
- @Override
- public Instruction visitPostExeNode(PostExeNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitPostExeNode(iVisited);
- }
- return super.visitPostExeNode(iVisited);
- }
-
- @Override
- public Instruction visitRedoNode(RedoNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitRedoNode(iVisited);
- }
- return super.visitRedoNode(iVisited);
- }
-
- @Override
- public Instruction visitRegexpNode(RegexpNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitRegexpNode(iVisited);
- }
- return super.visitRegexpNode(iVisited);
- }
-
- @Override
- public Instruction visitRescueBodyNode(RescueBodyNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitRescueBodyNode(iVisited);
- }
- return super.visitRescueBodyNode(iVisited);
- }
-
- @Override
- public Instruction visitRescueNode(RescueNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitRescueNode(iVisited);
- }
- return super.visitRescueNode(iVisited);
- }
-
- @Override
- public Instruction visitRetryNode(RetryNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitRetryNode(iVisited);
- }
- return super.visitRetryNode(iVisited);
- }
-
- @Override
- public Instruction visitReturnNode(ReturnNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitReturnNode(iVisited);
- }
- return super.visitReturnNode(iVisited);
- }
-
- @Override
- public Instruction visitRootNode(RootNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitRootNode(iVisited);
- }
- return super.visitRootNode(iVisited);
- }
-
- @Override
- public Instruction visitSClassNode(SClassNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitSClassNode(iVisited);
- }
- Instruction ins = super.visitSClassNode(iVisited);
- for (RubyLintVisitor visitor : visitors) {
- visitor.exitSClassNode(iVisited);
- }
- return ins;
- }
-
- @Override
- public Instruction visitSelfNode(SelfNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitSelfNode(iVisited);
- }
- return super.visitSelfNode(iVisited);
- }
-
- @Override
- public Instruction visitSplatNode(SplatNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitSplatNode(iVisited);
- }
- return super.visitSplatNode(iVisited);
- }
-
- @Override
- public Instruction visitStrNode(StrNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitStrNode(iVisited);
- }
- return super.visitStrNode(iVisited);
- }
-
- @Override
- public Instruction visitSuperNode(SuperNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitSuperNode(iVisited);
- }
- return super.visitSuperNode(iVisited);
- }
-
- @Override
- public Instruction visitSValueNode(SValueNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitSValueNode(iVisited);
- }
- return super.visitSValueNode(iVisited);
- }
-
- @Override
- public Instruction visitSymbolNode(SymbolNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitSymbolNode(iVisited);
- }
- return super.visitSymbolNode(iVisited);
- }
-
- @Override
- public Instruction visitToAryNode(ToAryNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitToAryNode(iVisited);
- }
- return super.visitToAryNode(iVisited);
- }
-
- @Override
- public Instruction visitTrueNode(TrueNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitTrueNode(iVisited);
- }
- return super.visitTrueNode(iVisited);
- }
-
- @Override
- public Instruction visitUndefNode(UndefNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitUndefNode(iVisited);
- }
- return super.visitUndefNode(iVisited);
- }
-
- @Override
- public Instruction visitUntilNode(UntilNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitUntilNode(iVisited);
- }
- return super.visitUntilNode(iVisited);
- }
-
- @Override
- public Instruction visitVAliasNode(VAliasNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitVAliasNode(iVisited);
- }
- return super.visitVAliasNode(iVisited);
- }
-
- @Override
- public Instruction visitVCallNode(VCallNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitVCallNode(iVisited);
- }
- return super.visitVCallNode(iVisited);
- }
-
- @Override
- public Instruction visitWhenNode(WhenNode iVisited) {
- for (RubyLintVisitor visitor : visitors) {
- visitor.visitWhenNode(iVisited);
- }
- Instruction ins = supe...
[truncated message content] |
|
From: <caw...@us...> - 2007-08-09 14:21:03
|
Revision: 2951
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2951&view=rev
Author: cawilliams
Date: 2007-08-09 07:18:53 -0700 (Thu, 09 Aug 2007)
Log Message:
-----------
Added Paths:
-----------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/parser/
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/parser/warnings/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-09 13:51:06
|
Revision: 2950
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2950&view=rev
Author: cawilliams
Date: 2007-08-09 06:51:03 -0700 (Thu, 09 Aug 2007)
Log Message:
-----------
apply Martin's patch
Modified Paths:
--------------
trunk/org.rubypeople.rdt.debug.core/src/org/rubypeople/rdt/internal/debug/core/RubyDebuggerProxy.java
Modified: trunk/org.rubypeople.rdt.debug.core/src/org/rubypeople/rdt/internal/debug/core/RubyDebuggerProxy.java
===================================================================
--- trunk/org.rubypeople.rdt.debug.core/src/org/rubypeople/rdt/internal/debug/core/RubyDebuggerProxy.java 2007-08-09 13:01:17 UTC (rev 2949)
+++ trunk/org.rubypeople.rdt.debug.core/src/org/rubypeople/rdt/internal/debug/core/RubyDebuggerProxy.java 2007-08-09 13:51:03 UTC (rev 2950)
@@ -225,6 +225,7 @@
public RubyVariable readInspectExpression(RubyStackFrame frame, String expression) throws RubyProcessingException {
try {
+ expression = expression.replaceAll("\n", "\\\\n");
this.println(commandFactory.createInspect(frame, expression));
RubyVariable[] variables = new VariableReader(getMultiReaderStrategy()).readVariables(frame);
if (variables.length == 0) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-09 13:01:19
|
Revision: 2949
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2949&view=rev
Author: cawilliams
Date: 2007-08-09 06:01:17 -0700 (Thu, 09 Aug 2007)
Log Message:
-----------
move core stubbing script to it's own subfolder to help try to avoid filename clashes.
Modified Paths:
--------------
trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVM.java
Added Paths:
-----------
trunk/org.rubypeople.rdt.launching/ruby/standard_vm/core_stubber.rb
Removed Paths:
-------------
trunk/org.rubypeople.rdt.launching/ruby/core_stubber.rb
Deleted: trunk/org.rubypeople.rdt.launching/ruby/core_stubber.rb
===================================================================
--- trunk/org.rubypeople.rdt.launching/ruby/core_stubber.rb 2007-08-09 12:54:05 UTC (rev 2948)
+++ trunk/org.rubypeople.rdt.launching/ruby/core_stubber.rb 2007-08-09 13:01:17 UTC (rev 2949)
@@ -1,82 +0,0 @@
-OUTPUT_PATH = ARGV.first + "/"
-
-def file_name(klass)
- file_name = OUTPUT_PATH + klass.to_s.downcase
- file_name.gsub!("::", "/")
- file_name << ".rb"
- return file_name
-end
-
-def dir_names(file_name)
- last_slash = file_name.rindex("/")
- return nil if last_slash.nil?
- file_name[0...last_slash]
-end
-
-def print_method(f, method, method_name, singleton = false)
- f << " def "
- f << "self." if singleton
- f << method_name.to_s
- if !method.nil? and method.arity != 0
- # TODO We need to handle methods that take blocks!
- f << "("
- if method.arity < 0
- args = []
- (method.arity.abs + 1).times {|i| args << "arg#{i}" }
- args << "*rest"
- f << args.join(", ")
- else
- args = []
- method.arity.times {|i| args << "arg#{i}" }
- f << args.join(", ")
- end
- f << ")"
- end
- f << "\n end\n"
-end
-
-require 'FileUtils'
-@klasses = Module.constants.select {|c| ["Class", "Module"].include?(eval("#{c}.class").to_s) }
-@klasses = @klasses.collect {|k| eval("#{k}")}
-@klasses = @klasses.uniq.sort_by {|klass| klass.to_s }
-@klasses.each do |klass|
- next if klass.to_s[0].chr == "f" # TODO Skip if first char is lowercase
- file_name = file_name(klass)
- dirs = dir_names(file_name)
- FileUtils.mkdir_p(dirs) if !dirs.nil? and !File.exist?(file_name)
- open(file_name, 'w') do |f|
- f << "#{klass.class.to_s.downcase} #{klass}"
- f << " < #{klass.superclass.to_s }" if klass.respond_to?(:superclass) and !klass.superclass.nil?
- f << "\n"
- klass.included_modules.each {|mod| f << " include #{mod.to_s}\n" unless mod.to_s == "Kernel" && klass.to_s != "Object"}
- f << "\n"
- # FIXME We aren't grabbing some important methods inside Module (like "include")
- klass.methods(false).each do |method_name|
- method = eval("#{klass}").method(method_name) rescue nil
- print_method(f, method, method_name.to_s, true)
- end
- # TODO Fix it so we can get a hold of the module instance methods properly
- klass.instance_methods(false).each do |method_name|
- begin
- obj = if klass.class.to_s == "Module" then klass else klass.new end
- method = obj.method(method_name.to_s)
- rescue StandardError => e
- puts e
- # TODO If we can't create an instance of a class, generate dynamic subclass where we can, and then
- # grab methods from there
- begin
- # If we're a module, we may need to force the function to be more visible to grab it
- obj.module_eval do
- module_function(method_name.to_s)
- end
- method = obj.method(method_name.to_s)
- rescue StandardError => e
- puts e
- method = nil
- end
- end
- print_method(f, method, method_name.to_s)
- end
- f << "end\n"
- end
-end
\ No newline at end of file
Copied: trunk/org.rubypeople.rdt.launching/ruby/standard_vm/core_stubber.rb (from rev 2706, trunk/org.rubypeople.rdt.launching/ruby/core_stubber.rb)
===================================================================
--- trunk/org.rubypeople.rdt.launching/ruby/standard_vm/core_stubber.rb (rev 0)
+++ trunk/org.rubypeople.rdt.launching/ruby/standard_vm/core_stubber.rb 2007-08-09 13:01:17 UTC (rev 2949)
@@ -0,0 +1,82 @@
+OUTPUT_PATH = ARGV.first + "/"
+
+def file_name(klass)
+ file_name = OUTPUT_PATH + klass.to_s.downcase
+ file_name.gsub!("::", "/")
+ file_name << ".rb"
+ return file_name
+end
+
+def dir_names(file_name)
+ last_slash = file_name.rindex("/")
+ return nil if last_slash.nil?
+ file_name[0...last_slash]
+end
+
+def print_method(f, method, method_name, singleton = false)
+ f << " def "
+ f << "self." if singleton
+ f << method_name.to_s
+ if !method.nil? and method.arity != 0
+ # TODO We need to handle methods that take blocks!
+ f << "("
+ if method.arity < 0
+ args = []
+ (method.arity.abs + 1).times {|i| args << "arg#{i}" }
+ args << "*rest"
+ f << args.join(", ")
+ else
+ args = []
+ method.arity.times {|i| args << "arg#{i}" }
+ f << args.join(", ")
+ end
+ f << ")"
+ end
+ f << "\n end\n"
+end
+
+require 'FileUtils'
+@klasses = Module.constants.select {|c| ["Class", "Module"].include?(eval("#{c}.class").to_s) }
+@klasses = @klasses.collect {|k| eval("#{k}")}
+@klasses = @klasses.uniq.sort_by {|klass| klass.to_s }
+@klasses.each do |klass|
+ next if klass.to_s[0].chr == "f" # TODO Skip if first char is lowercase
+ file_name = file_name(klass)
+ dirs = dir_names(file_name)
+ FileUtils.mkdir_p(dirs) if !dirs.nil? and !File.exist?(file_name)
+ open(file_name, 'w') do |f|
+ f << "#{klass.class.to_s.downcase} #{klass}"
+ f << " < #{klass.superclass.to_s }" if klass.respond_to?(:superclass) and !klass.superclass.nil?
+ f << "\n"
+ klass.included_modules.each {|mod| f << " include #{mod.to_s}\n" unless mod.to_s == "Kernel" && klass.to_s != "Object"}
+ f << "\n"
+ # FIXME We aren't grabbing some important methods inside Module (like "include")
+ klass.methods(false).each do |method_name|
+ method = eval("#{klass}").method(method_name) rescue nil
+ print_method(f, method, method_name.to_s, true)
+ end
+ # TODO Fix it so we can get a hold of the module instance methods properly
+ klass.instance_methods(false).each do |method_name|
+ begin
+ obj = if klass.class.to_s == "Module" then klass else klass.new end
+ method = obj.method(method_name.to_s)
+ rescue StandardError => e
+ puts e
+ # TODO If we can't create an instance of a class, generate dynamic subclass where we can, and then
+ # grab methods from there
+ begin
+ # If we're a module, we may need to force the function to be more visible to grab it
+ obj.module_eval do
+ module_function(method_name.to_s)
+ end
+ method = obj.method(method_name.to_s)
+ rescue StandardError => e
+ puts e
+ method = nil
+ end
+ end
+ print_method(f, method, method_name.to_s)
+ end
+ f << "end\n"
+ end
+end
\ No newline at end of file
Modified: trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVM.java
===================================================================
--- trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVM.java 2007-08-09 12:54:05 UTC (rev 2948)
+++ trunk/org.rubypeople.rdt.launching/src/org/rubypeople/rdt/internal/launching/StandardVM.java 2007-08-09 13:01:17 UTC (rev 2949)
@@ -133,7 +133,7 @@
private IPath generateCoreStubs(File rubyExecutable) {
if (rubyExecutable == null) return null;
//locate the script to generate our core stubs
- File coreStubber = LaunchingPlugin.getFileInPlugin(new Path("ruby" + fgSeparator + "core_stubber.rb")); //$NON-NLS-1$ //$NON-NLS-2$
+ File coreStubber = LaunchingPlugin.getFileInPlugin(new Path("ruby").append("standard_vm").append("core_stubber.rb")); //$NON-NLS-1$ //$NON-NLS-2$
if (coreStubber.exists()) {
IPath stubFolder = LaunchingPlugin.getDefault().getStateLocation().append(getId()).append("lib"); //$NON-NLS-1$
if (stubFolder.toFile().exists()) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <caw...@us...> - 2007-08-09 12:54:09
|
Revision: 2948
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2948&view=rev
Author: cawilliams
Date: 2007-08-09 05:54:05 -0700 (Thu, 09 Aug 2007)
Log Message:
-----------
move core stubbing script into own folder to try and help avoid filename collisions
Added Paths:
-----------
trunk/org.rubypeople.rdt.launching/ruby/standard_vm/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|