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

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

[elpa] master 0e64e85 055/271: Simplify to 2 arrays.


From: Jackson Ray Hamilton
Subject: [elpa] master 0e64e85 055/271: Simplify to 2 arrays.
Date: Thu, 05 Feb 2015 18:29:44 +0000

branch: master
commit 0e64e85892d391131d027f9001eae3bd53b63ad9
Author: Jackson Ray Hamilton <address@hidden>
Commit: Jackson Ray Hamilton <address@hidden>

    Simplify to 2 arrays.
---
 scopifier.js           |   39 ++++++++++-----------------------------
 test/fixtures/monad.js |    1 +
 2 files changed, 11 insertions(+), 29 deletions(-)

diff --git a/scopifier.js b/scopifier.js
index 0f980c2..a9c65d6 100644
--- a/scopifier.js
+++ b/scopifier.js
@@ -38,9 +38,8 @@ module.exports = function (code) {
     }
 
     analyzedScopes.forEach(function (scope) {
-        var scopeDefinitions,
-            variables,
-            globalReferences;
+        var definitions,
+            references;
         if (scope.level !== undefined) {
             // Having its level set implies it was already annotated.
             return;
@@ -67,11 +66,8 @@ module.exports = function (code) {
             scope.block.range[0],
             scope.block.range[1]
         ]]);
-        scopeDefinitions = [];
-        variables = scope.variables.reduce(function (symbols, variable) {
-            var definitions,
-                references;
-            definitions = variable.defs
+        definitions = scope.variables.reduce(function (definitions, variable) {
+            return definitions.concat(variable.defs
                 .map(function (definition) {
                     var range = definition.name.range;
                     return [
@@ -79,36 +75,21 @@ module.exports = function (code) {
                         range[0],
                         range[1]
                     ];
-                });
-            references = variable.references
-                .reduce(function (references, reference) {
-                    var range = reference.identifier.range;
-                    if (isDefined(definitions, range)) {
-                        return references;
-                    }
-                    // Double array required to concat just the inner array.
-                    return references.concat([[
-                        scope.level,
-                        range[0],
-                        range[1]
-                    ]]);
-                }, []);
-            scopeDefinitions = scopeDefinitions.concat(definitions);
-            return symbols.concat(definitions).concat(references);
+                }));
         }, []);
-        globalReferences = scope.references.reduce(function (references, 
reference) {
+        references = scope.references.reduce(function (references, reference) {
             var range = reference.identifier.range;
-            if (reference.resolved || isDefined(scopeDefinitions, range)) {
+            if (isDefined(definitions, range)) {
                 return references;
             }
-            // Handle global references.
             return references.concat([[
-                0,
+                // Handle global references too.
+                reference.resolved ? reference.resolved.scope.level : 0,
                 range[0],
                 range[1]
             ]]);
         }, []);
-        symbols = symbols.concat(variables).concat(globalReferences);
+        symbols = symbols.concat(definitions).concat(references);
     });
 
     comments = ast.comments
diff --git a/test/fixtures/monad.js b/test/fixtures/monad.js
index 7a90405..6366fad 100644
--- a/test/fixtures/monad.js
+++ b/test/fixtures/monad.js
@@ -1,5 +1,6 @@
 /* A monad. */
 function MONAD() {
+    abc = 3;
     return function unit(value) {
         // Some details.
         var monad = Object.create(null);



reply via email to

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