Lines Matching refs:node
6 function isScope(node) { argument
7 …return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration' || node.type === …
9 function isBlockScope(node) { argument
10 return node.type === 'BlockStatement' || isScope(node);
13 function declaresArguments(node) { argument
14 return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration';
17 function declaresThis(node) { argument
18 return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration';
43 var declareFunction = function (node) { argument
44 var fn = node;
46 node.params.forEach(function (node) { argument
47 declarePattern(node, fn);
49 if (node.id) {
50 fn.locals[node.id.name] = true;
53 var declarePattern = function (node, parent) { argument
54 switch (node.type) {
56 parent.locals[node.name] = true;
59 node.properties.forEach(function (node) { argument
60 declarePattern(node.value, parent);
64 node.elements.forEach(function (node) { argument
65 if (node) declarePattern(node, parent);
69 declarePattern(node.argument, parent);
72 declarePattern(node.left, parent);
76 throw new Error('Unrecognized pattern type: ' + node.type);
79 var declareModuleSpecifier = function (node, parents) { argument
81 ast.locals[node.local.name] = true;
84 'VariableDeclaration': function (node, parents) { argument
87 if (node.kind === 'var' ? isScope(parents[i]) : isBlockScope(parents[i])) {
92 node.declarations.forEach(function (declaration) {
96 'FunctionDeclaration': function (node, parents) { argument
104 parent.locals[node.id.name] = true;
105 declareFunction(node);
108 'ClassDeclaration': function (node, parents) { argument
116 parent.locals[node.id.name] = true;
118 'TryStatement': function (node) { argument
119 if (node.handler === null) return;
120 node.handler.locals = node.handler.locals || {};
121 node.handler.locals[node.handler.param.name] = true;
127 function identifier(node, parents) { argument
128 var name = node.name;
138 node.parents = parents;
139 globals.push(node);
144 'ThisExpression': function (node, parents) { argument
150 node.parents = parents;
151 globals.push(node);
155 globals.forEach(function (node) { argument
156 var name = node.type === 'ThisExpression' ? 'this' : node.name;
158 groupedGlobals[name].push(node);