From: <caw...@us...> - 2007-04-30 12:04:10
|
Revision: 2391 http://svn.sourceforge.net/rubyeclipse/?rev=2391&view=rev Author: cawilliams Date: 2007-04-30 05:04:08 -0700 (Mon, 30 Apr 2007) Log Message: ----------- stifle syntax errors inside type inferrer Modified Paths: -------------- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/ti/DefaultTypeInferrer.java Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/ti/DefaultTypeInferrer.java =================================================================== --- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/ti/DefaultTypeInferrer.java 2007-04-29 08:56:55 UTC (rev 2390) +++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/ti/DefaultTypeInferrer.java 2007-04-30 12:04:08 UTC (rev 2391) @@ -22,6 +22,7 @@ import org.jruby.ast.Node; import org.jruby.ast.RootNode; import org.jruby.ast.VCallNode; +import org.jruby.lexer.yacc.SyntaxException; import org.rubypeople.rdt.internal.core.parser.RubyParser; import org.rubypeople.rdt.internal.core.util.ASTUtil; import org.rubypeople.rdt.internal.ti.data.LiteralNodeTypeNames; @@ -42,14 +43,18 @@ * @return List of ITypeGuess objects. */ public List<ITypeGuess> infer(String source, int offset) { - RubyParser parser = new RubyParser(); - rootNode = (RootNode) parser.parse(source); - Node node = OffsetNodeLocator.Instance().getNodeAtOffset(rootNode.getBodyNode(), offset); + try { + RubyParser parser = new RubyParser(); + rootNode = (RootNode) parser.parse(source); + Node node = OffsetNodeLocator.Instance().getNodeAtOffset(rootNode.getBodyNode(), offset); - if (node == null) { - return null; + if (node == null) { + return new ArrayList<ITypeGuess>(); + } + return infer(node); + } catch (SyntaxException e) { + return new ArrayList<ITypeGuess>(); } - return infer(node); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |