From d31b365d565e46a87a5bbf8cad03a87fefb818ad Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Thu, 30 Apr 2009 15:22:16 +0200
Subject: [PATCH] Visit the AST.

---
 src/plugins/duieditor/duieditor.cpp | 67 ++++-------------------------
 1 file changed, 9 insertions(+), 58 deletions(-)

diff --git a/src/plugins/duieditor/duieditor.cpp b/src/plugins/duieditor/duieditor.cpp
index 5cdaa3aaac3..71aa0a0c31a 100644
--- a/src/plugins/duieditor/duieditor.cpp
+++ b/src/plugins/duieditor/duieditor.cpp
@@ -59,6 +59,7 @@ enum {
     UPDATE_DOCUMENT_DEFAULT_INTERVAL = 250
 };
 
+using namespace JavaScript;
 using namespace JavaScript::AST;
 
 
@@ -70,68 +71,18 @@ class FindDeclarations: protected Visitor
     QList<Declaration> declarations;
 
 public:
-    QList<Declaration> accept(JavaScript::AST::Node *node)
+    QList<Declaration> operator()(AST::Node *node)
     {
-        JavaScript::AST::Node::acceptChild(node, this);
+        declarations.clear();
+        accept(node);
         return declarations;
     }
 
 protected:
     using Visitor::visit;
 
-    virtual bool visit(FunctionExpression *)
-    {
-        return false;
-    }
-
-    virtual bool visit(FunctionDeclaration *ast)
-    {
-        if (! ast->name)
-            return false;
-
-        QString text = ast->name->asString();
-
-        text += QLatin1Char('(');
-        for (FormalParameterList *it = ast->formals; it; it = it->next) {
-            if (it->name)
-                text += it->name->asString();
-
-            if (it->next)
-                text += QLatin1String(", ");
-        }
-
-        text += QLatin1Char(')');
-
-        Declaration d;
-        d.text = text;
-#if 0 // ### FIXME
-        d.startLine = ast->startLine;
-        d.startColumn = ast->startColumn;
-        d.endLine = ast->endLine;
-        d.endColumn = ast->endColumn;
-#endif
-
-        declarations.append(d);
-
-        return false;
-    }
-
-    virtual bool visit(VariableDeclaration *ast)
-    {
-        if (! ast->name)
-            return false;
-
-        Declaration d;
-        d.text = ast->name->asString();
-#if 0 // ### FIXME
-        d.startLine= ast->startLine;
-        d.startColumn = ast->startColumn;
-        d.endLine = ast->endLine;
-        d.endColumn = ast->endColumn;
-#endif
-        declarations.append(d);
-        return false;
-    }
+    void accept(AST::Node *node)
+    { AST::Node::acceptChild(node, this); }
 };
 
 ScriptEditorEditable::ScriptEditorEditable(ScriptEditor *editor, const QList<int>& context)
@@ -207,16 +158,16 @@ void ScriptEditor::updateDocumentNow()
     JavaScriptParser parser;
     JavaScriptEnginePrivate driver;
 
-    JavaScript::NodePool nodePool(fileName, &driver);
+    NodePool nodePool(fileName, &driver);
     driver.setNodePool(&nodePool);
 
-    JavaScript::Lexer lexer(&driver);
+    Lexer lexer(&driver);
     lexer.setCode(code, /*line = */ 1);
     driver.setLexer(&lexer);
 
     if (parser.parse(&driver)) {
         FindDeclarations decls;
-        m_declarations = decls.accept(driver.ast());
+        m_declarations = decls(parser.ast());
 
         m_words.clear();
         foreach (const JavaScriptNameIdImpl &id, driver.literals())
-- 
GitLab