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.Editors/ScriptEditor.cs | 6 +++++- .../Scripting/Tango.Scripting/Parsing/ScriptParser.cs | 18 ++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs index 6c248b63d..9ff78912f 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs @@ -1230,7 +1230,7 @@ namespace Tango.Scripting.Editors else { //Maybe static... - var type = _knownTypes.FirstOrDefault(x => x.Name == variableName); + var type = _knownTypes.FirstOrDefault(x => x.Name == variableName || x.Alias == variableName); return type != null ? new KnownTypeResult(type) { IsStatic = true } : null; } } @@ -1566,6 +1566,10 @@ namespace Tango.Scripting.Editors knownType.Alias = "uint"; } } + else if (type == typeof(String)) + { + knownType.Alias = "string"; + } _knownTypesCache.Add(type, knownType); cachedUsing.KnownTypes.Add(knownType); 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