Example #1
0
        public static bool RemoveUnusedVariables(BlockNode block)
        {
            var usedvariables = block.GetReadVariables().ToArray();

            var changesmade = false;
            var i           = 0;

            foreach (var node in block.GetChildren().ToList())
            {
                if (node is VariableDeclarationNode dec)
                {
                    if (!usedvariables.Contains(dec.VariableName))
                    {
                        block.RemoveChild(i--);
                        changesmade = true;
                    }
                }
                else if (node is VariableAssignmentNode assignment)
                {
                    if (!usedvariables.Contains(assignment.VariableName))
                    {
                        block.RemoveChild(i--);
                        changesmade = true;
                    }
                }

                i++;
            }

            return(changesmade);
        }