diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-10-29 15:55:21 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-10-29 15:55:21 +0200 |
| commit | 4b789f33eadfc5cc1d937a80ce03ea8425955ffe (patch) | |
| tree | 7dbbd0529a24f9ca064cab688a0d6d2b8b762ea1 /Software/Visual_Studio/Scripting/Tango.Scripting | |
| parent | 8f3baa0d9097aa6ed800863a4680608e867c809a (diff) | |
| parent | 11fb700fcbc4627162a9c3f84b03b5016248bd97 (diff) | |
| download | Tango-4b789f33eadfc5cc1d937a80ce03ea8425955ffe.tar.gz Tango-4b789f33eadfc5cc1d937a80ce03ea8425955ffe.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 | 41 | ||||
| -rw-r--r-- | Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptSymbol.cs | 4 |
2 files changed, 41 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 e9cb8fc4c..63d2cca5d 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptParser.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptParser.cs @@ -138,9 +138,32 @@ namespace Tango.Scripting.Parsing varSymbol.Type = type; varSymbol.Class = ReplaceFakeScript(symbol.ContainingType?.Name); varSymbol.Kind = symbol.Kind; + varSymbol.RealSymbol = symbol; varSymbol.Accessibility = symbol.DeclaredAccessibility; varSymbol.ContainingNamespace = ReplaceFakeScript(symbol.ContainingNamespace?.Name); varSymbol.Summary = GetSymbolDocumentation(symbol); + + try + { + if (symbol.Kind == SymbolKind.Local && symbol.DeclaringSyntaxReferences.Count() > 0) + { + var node = symbol.DeclaringSyntaxReferences.First().GetSyntax() as VariableDeclaratorSyntax; + + if (node != null) + { + varSymbol.IsUnassigned = node.Initializer == null; + } + } + } + catch { } + + try + { + varSymbol.Offset = symbol.Locations[0].SourceSpan.Start; + varSymbol.Length = symbol.Locations[0].SourceSpan.Length; + } + catch { } + vars.Add(varSymbol); if (type == "?") @@ -417,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) @@ -440,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); } } } diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptSymbol.cs b/Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptSymbol.cs index d6fdaeebf..4b34837af 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptSymbol.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptSymbol.cs @@ -17,6 +17,10 @@ namespace Tango.Scripting.Parsing public String ContainingNamespace { get; set; } public List<KeyValuePair<String,String>> Parameters { get; set; } public String Summary { get; set; } + public int Offset { get; set; } + public int Length { get; set; } + public bool IsUnassigned { get; set; } + public ISymbol RealSymbol { get; set; } public ScriptSymbol() { |
