public visitNode()

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;
	}