in src/parser/cssSymbolScope.ts [143:186]
public visitNode(node: nodes.Node): boolean {
switch (node.type) {
case nodes.NodeType.Keyframe:
this.addSymbol(node, (<nodes.Keyframe>node).getName(), void 0, nodes.ReferenceType.Keyframe);
return true;
case nodes.NodeType.CustomPropertyDeclaration:
return this.visitCustomPropertyDeclarationNode(<nodes.CustomPropertyDeclaration>node);
case nodes.NodeType.VariableDeclaration:
return this.visitVariableDeclarationNode(<nodes.VariableDeclaration>node);
case nodes.NodeType.Ruleset:
return this.visitRuleSet(<nodes.RuleSet>node);
case nodes.NodeType.MixinDeclaration:
this.addSymbol(node, (<nodes.MixinDeclaration>node).getName(), void 0, nodes.ReferenceType.Mixin);
return true;
case nodes.NodeType.FunctionDeclaration:
this.addSymbol(node, (<nodes.FunctionDeclaration>node).getName(), void 0, nodes.ReferenceType.Function);
return true;
case nodes.NodeType.FunctionParameter: {
return this.visitFunctionParameterNode(<nodes.FunctionParameter>node);
}
case nodes.NodeType.Declarations:
this.addScope(node);
return true;
case nodes.NodeType.For:
const forNode = <nodes.ForStatement>node;
const scopeNode = forNode.getDeclarations();
if (scopeNode && forNode.variable) {
this.addSymbolToChildScope(scopeNode, forNode.variable, forNode.variable.getName(), void 0, nodes.ReferenceType.Variable);
}
return true;
case nodes.NodeType.Each: {
const eachNode = <nodes.EachStatement>node;
const scopeNode = eachNode.getDeclarations();
if (scopeNode) {
const variables = <nodes.Variable[]>eachNode.getVariables().getChildren();
for (const variable of variables) {
this.addSymbolToChildScope(scopeNode, variable, variable.getName(), void 0, nodes.ReferenceType.Variable);
}
}
return true;
}
}
return true;
}