From 92db2f2431bb58a84dc4d476b889fee1de0143e9 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Sun, 9 Aug 2020 02:26:07 +0300 Subject: Procedure runtime debugging and exceptions. --- .../Tango.Scripting/Parsing/ScriptParser.cs | 23 ++++++++++++++++++++++ .../Tango.Scripting/Parsing/ScriptSymbol.cs | 4 ++++ 2 files changed, 27 insertions(+) (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting') diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptParser.cs b/Software/Visual_Studio/Scripting/Tango.Scripting/Parsing/ScriptParser.cs index e9cb8fc4c..2e7086ce0 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 == "?") 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> 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() { -- cgit v1.3.1