emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 65e4763 065/271: Just push to a single tokens array.


From: Jackson Ray Hamilton
Subject: [elpa] master 65e4763 065/271: Just push to a single tokens array.
Date: Thu, 05 Feb 2015 18:29:49 +0000

branch: master
commit 65e476358503a99d668b1c8a0a0ec1a20881d52e
Author: Jackson Ray Hamilton <address@hidden>
Commit: Jackson Ray Hamilton <address@hidden>

    Just push to a single tokens array.
---
 scopifier-microoptimized.js |   29 ++++++++++++-----------------
 test/specs.js               |    3 +++
 2 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/scopifier-microoptimized.js b/scopifier-microoptimized.js
index 0c8a0d6..6248b60 100644
--- a/scopifier-microoptimized.js
+++ b/scopifier-microoptimized.js
@@ -9,20 +9,18 @@ module.exports = function (code) {
     var analyzedScopes,
         ast,
         comment,
-        comments,
         definition,
-        definitions,
+        definitionsCount,
+        definitionsIndex,
         i,
         isDefined,
         j,
         k,
-        mappedDefinitions,
         range,
         reference,
-        references,
         scope,
         scopes = [],
-        symbols = [],
+        tokens = [],
         variable;
 
     // Gracefully handle parse errors by doing nothing.
@@ -61,22 +59,21 @@ module.exports = function (code) {
                     range[0] + 1,
                     range[1] + 1
                 ]);
-                definitions = [];
+                definitionsIndex = tokens.length;
+                definitionsCount = 0;
                 for (j = 0; j < scope.variables.length; j += 1) {
                     variable = scope.variables[j];
-                    mappedDefinitions = [];
+                    definitionsCount += variable.defs.length;
                     for (k = 0; k < variable.defs.length; k += 1) {
                         definition = variable.defs[k];
                         range = definition.name.range;
-                        mappedDefinitions.push([
+                        tokens.push([
                             scope.level,
                             range[0] + 1,
                             range[1] + 1
                         ]);
                     }
-                    definitions = definitions.concat(mappedDefinitions);
                 }
-                references = [];
                 for (j = 0; j < scope.references.length; j += 1) {
                     reference = scope.references[j];
                     range = reference.identifier.range;
@@ -85,8 +82,8 @@ module.exports = function (code) {
                     // range. (escope detects variables twice if they are
                     // declared and initialized simultaneously; this filters
                     // them.)
-                    for (k = 0; k < definitions.length; k += 1) {
-                        definition = definitions[k];
+                    for (k = 0; k < definitionsCount; k += 1) {
+                        definition = tokens[definitionsIndex + k];
                         if (definition[1] === range[0] + 1 &&
                                 definition[2] === range[1] + 1) {
                             isDefined = true;
@@ -94,7 +91,7 @@ module.exports = function (code) {
                         }
                     }
                     if (!isDefined) {
-                        references.push([
+                        tokens.push([
                             // Handle global references too.
                             reference.resolved ? 
reference.resolved.scope.level : 0,
                             range[0] + 1,
@@ -102,21 +99,19 @@ module.exports = function (code) {
                         ]);
                     }
                 }
-                symbols = symbols.concat(definitions).concat(references);
             }
         }
     }
 
-    comments = [];
     for (i = 0; i < ast.comments.length; i += 1) {
         comment = ast.comments[i];
         range = comment.range;
-        comments.push([
+        tokens.push([
             -1,
             range[0] + 1,
             range[1] + 1
         ]);
     }
 
-    return scopes.concat(symbols).concat(comments);
+    return scopes.concat(tokens);
 };
diff --git a/test/specs.js b/test/specs.js
index c015ddb..7634fc0 100644
--- a/test/specs.js
+++ b/test/specs.js
@@ -42,6 +42,9 @@ describe('scopifier', function () {
 
     [scopifier, scopifierMicrooptimized].forEach(function (scopifier, index) {
         var message = '';
+        if (!scopifier) {
+            return;
+        }
         if (index === 1) {
             message = ' (microoptimized)';
         }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]