diff options
| author | Avi Levkovich <avi@twine-s.com> | 2020-08-26 11:04:59 +0300 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2020-08-26 11:04:59 +0300 |
| commit | f851e980e49a4737e03335665b9c3a3a529ea326 (patch) | |
| tree | f9a2877bd8cd4886f9d5fa4a86805f47cf1e2fb1 /Software/Visual_Studio/Scripting/Tango.Scripting | |
| parent | ce95311e3ca782c405591d12da7cf4366c8dcfb2 (diff) | |
| parent | d493603b5c99e0f0ba6858ba9011c83baa780d3b (diff) | |
| download | Tango-f851e980e49a4737e03335665b9c3a3a529ea326.tar.gz Tango-f851e980e49a4737e03335665b9c3a3a529ea326.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); } } } |
