From: <cal...@us...> - 2007-02-27 11:28:15
|
Revision: 2046 http://svn.sourceforge.net/rubyeclipse/?rev=2046&view=rev Author: callandor1983 Date: 2007-02-27 03:27:55 -0800 (Tue, 27 Feb 2007) Log Message: ----------- Caching of generated ASTs partialy implemented. Modified Paths: -------------- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeProvider.java trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConditionChecker.java trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConfig.java trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/DocumentProvider.java Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeProvider.java =================================================================== --- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeProvider.java 2007-02-26 22:47:32 UTC (rev 2045) +++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeProvider.java 2007-02-27 11:27:55 UTC (rev 2046) @@ -62,14 +62,11 @@ import org.jruby.ast.types.INameNode; import org.jruby.common.NullWarnings; import org.jruby.lexer.yacc.LexerSource; -import org.jruby.lexer.yacc.SourcePosition; import org.jruby.lexer.yacc.SyntaxException; import org.jruby.parser.DefaultRubyParser; -import org.jruby.parser.LocalStaticScope; import org.jruby.parser.RubyParserConfiguration; import org.jruby.parser.RubyParserPool; import org.jruby.parser.RubyParserResult; -import org.jruby.runtime.DynamicScope; import org.rubypeople.rdt.refactoring.nodewrapper.AttrAccessorNodeWrapper; import org.rubypeople.rdt.refactoring.nodewrapper.FieldNodeWrapper; import org.rubypeople.rdt.refactoring.nodewrapper.MethodCallNodeWrapper; @@ -112,15 +109,10 @@ } public static RootNode getRootNode(String fileName, String fileContent) { - if(fileContent == null) { - return null; - } - try { - return parseFile(fileName, fileContent); + return (fileContent != null) ? parseFile(fileName, fileContent) : null; } catch(SyntaxException e) { -// treat files with syntax errors as empty - return new RootNode(new SourcePosition(), new DynamicScope(new LocalStaticScope(null), null), null); + return null; } } Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConditionChecker.java =================================================================== --- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConditionChecker.java 2007-02-26 22:47:32 UTC (rev 2045) +++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConditionChecker.java 2007-02-27 11:27:55 UTC (rev 2046) @@ -38,6 +38,7 @@ import org.jruby.ast.types.INameNode; import org.jruby.parser.StaticScope; import org.rubypeople.rdt.refactoring.classnodeprovider.IncludedClassesProvider; +import org.rubypeople.rdt.refactoring.core.NodeProvider; import org.rubypeople.rdt.refactoring.core.RefactoringConditionChecker; import org.rubypeople.rdt.refactoring.core.SelectionNodeProvider; import org.rubypeople.rdt.refactoring.documentprovider.DocumentProvider; @@ -47,6 +48,7 @@ public class InlineMethodConditionChecker extends RefactoringConditionChecker { private InlineMethodConfig config; + public InlineMethodConditionChecker(InlineMethodConfig config) { super(config.getDocumentProvider(),config); @@ -58,6 +60,7 @@ if(!(findSelectedCall(config.getPos()) && findTargetClass(config.getTargetClassFinder()) && findMethodDefinition())) { return; } + config.setCellParent(NodeProvider.findParentNode(config.getDocumentProvider().getRootNode(), config.getSelectedCall().getWrappedNode())); replaceParameters(); Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConfig.java =================================================================== --- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConfig.java 2007-02-26 22:47:32 UTC (rev 2045) +++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/inlinemethod/InlineMethodConfig.java 2007-02-27 11:27:55 UTC (rev 2046) @@ -32,7 +32,6 @@ import org.jruby.ast.MethodDefNode; import org.jruby.ast.Node; -import org.rubypeople.rdt.refactoring.core.NodeProvider; import org.rubypeople.rdt.refactoring.documentprovider.DocumentProvider; import org.rubypeople.rdt.refactoring.nodewrapper.MethodCallNodeWrapper; @@ -47,6 +46,7 @@ private int pos; private ITargetClassFinder targetClassFinder; private Collection<String> usedMembers; + private Node cellParent; public InlineMethodConfig(DocumentProvider doc, int pos, ITargetClassFinder targetClassFinder) { @@ -56,8 +56,12 @@ } public Node getCallParent() { - return NodeProvider.findParentNode(originalDocument.getRootNode(), selectedCall.getWrappedNode()); + return cellParent; } + + public void setCellParent(Node cellParent) { + this.cellParent = cellParent; + } public String getClassName() { return className; Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/DocumentProvider.java =================================================================== --- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/DocumentProvider.java 2007-02-26 22:47:32 UTC (rev 2045) +++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/documentprovider/DocumentProvider.java 2007-02-27 11:27:55 UTC (rev 2046) @@ -42,6 +42,8 @@ public abstract class DocumentProvider implements IDocumentProvider { + private RootNode rootNode; + public ClassNodeProvider getClassNodeProvider() { return new ClassNodeProvider(this); } @@ -55,6 +57,10 @@ } public RootNode getRootNode() { +// if(rootNode == null) { +// rootNode = NodeProvider.getRootNode(getActiveFileName(), getActiveFileContent()); +// } +// return rootNode; return NodeProvider.getRootNode(getActiveFileName(), getActiveFileContent()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |