From ddcd370da70d9e2212450368df1499c3a1f1b71c Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Tue, 25 Aug 2020 16:03:24 +0300 Subject: Fixed issue with script editor not recognizing string => String alias. Fixed issue with script FillVariables recursion hangs. --- .../Scripting/Tango.Scripting/Parsing/ScriptParser.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptParser.cs') 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 variables = new List(); - FillVariables(variables, root.Members[0]); + FillVariables(variables, new List(), 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 variables, SyntaxNode node) + private void FillVariables(List variables, List 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); } } } -- cgit v1.3.1