diff options
| author | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2020-08-25 22:10:33 +0300 |
|---|---|---|
| committer | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2020-08-25 22:10:33 +0300 |
| commit | 03469209891753884b4f7173c5d596e34a740f5a (patch) | |
| tree | 72df994a21aa433c87e6632c43114dd665fd739b /Software/Visual_Studio/Scripting/Tango.Scripting | |
| parent | 7506112c72fecb6b10a2785e913f2f03df619c06 (diff) | |
| parent | 9bc0807514a69d97fceab11d77bee02aff4eb3d9 (diff) | |
| download | Tango-03469209891753884b4f7173c5d596e34a740f5a.tar.gz Tango-03469209891753884b4f7173c5d596e34a740f5a.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting')
| -rw-r--r-- | Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptParser.cs | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptParser.cs b/Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptParser.cs index 2e7086ce0..63d2cca5d 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptParser.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptParser.cs @@ -440,7 +440,7 @@ namespace Tango.Scripting.Parsing var root = (CompilationUnitSyntax)tree.GetRoot(); List<VariableDeclaratorSyntax> variables = new List<VariableDeclaratorSyntax>(); - FillVariables(variables, root.Members[0]); + FillVariables(variables, new List<SyntaxNode>(), root.Members[0]); variables = variables.Distinct().ToList(); foreach (var item in variables) @@ -463,17 +463,27 @@ namespace Tango.Scripting.Parsing return vars; } - private void FillVariables(List<VariableDeclaratorSyntax> variables, SyntaxNode node) + private void FillVariables(List<VariableDeclaratorSyntax> variables, List<SyntaxNode> existingNodes, SyntaxNode node) { - foreach (var item in node.DescendantNodes(x => true)) + var nodes = node.ChildNodes().ToList(); + + nodes.RemoveAll(x => existingNodes.Contains(x)); + + foreach (var item in nodes) { + existingNodes.Add(item); + if (item.GetType() == typeof(VariableDeclaratorSyntax)) { variables.Add(item as VariableDeclaratorSyntax); } + else if (item == node) + { + continue; + } else { - FillVariables(variables, item); + FillVariables(variables, existingNodes, item); } } } |
