diff options
Diffstat (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Basic')
3 files changed, 43 insertions, 14 deletions
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/CompilationError.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/CompilationError.cs index 27c710b2f..eda72fa6e 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/CompilationError.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/CompilationError.cs @@ -12,6 +12,7 @@ namespace Tango.Scripting.Basic public String File { get; set; } public String Message { get; set; } public DiagnosticSeverity Severity { get; set; } + public int Position { get; set; } public int Line { get; set; } public int Column { get; set; } public int Length { get; set; } diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs index 446e5b529..fef43a35f 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs @@ -60,18 +60,6 @@ namespace Tango.Scripting.Basic Scripts.CollectionChanged += (x, e) => { RaisePropertyChanged(nameof(AdditionalScripts)); }; } - public static TProject New<TProject, TContext>(String name) where TProject : Project<TContext> where TContext : IContext - { - TProject p = Activator.CreateInstance<TProject>(); - - p.Name = name; - - p.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(String))); - p.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(Enumerable))); - p.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(Form))); - return p; - } - public Task<CompilationResult> Compile() { return Task.Factory.StartNew<CompilationResult>(() => @@ -85,6 +73,7 @@ namespace Tango.Scripting.Basic foreach (var script in Scripts) { script.LoadCount = 0; + script.LoadCharCount = 0; String code = script.Code; String codeFile = Path.Combine(tempFolder, script.Name); @@ -94,6 +83,7 @@ namespace Tango.Scripting.Basic { loadingString = $"#load \"{file}\"\n"; script.LoadCount++; + script.LoadCharCount += loadingString.Length; } code = loadingString + code; @@ -133,6 +123,8 @@ namespace Tango.Scripting.Basic var compileResults = s.Compile(); + GC.Collect(); + foreach (var error in compileResults.Where(x => x.Severity == Microsoft.CodeAnalysis.DiagnosticSeverity.Error)) { CompilationError cError = new CompilationError(); @@ -144,6 +136,7 @@ namespace Tango.Scripting.Basic Script errorScript = Scripts.Single(x => x.Name == cError.File); cError.Message = error.GetMessage(); cError.Severity = error.Severity; + cError.Position = error.Location.SourceSpan.Start - (errorScript != null ? errorScript.LoadCharCount : 0); var line = error.Location.GetMappedLineSpan(); cError.Line = line.StartLinePosition.Line + 1 - (errorScript != null ? errorScript.LoadCount : 0); cError.Column = line.StartLinePosition.Character + 1; @@ -187,6 +180,10 @@ namespace Tango.Scripting.Basic { session.Failed(ex.InnerException); } + finally + { + GC.Collect(); + } }); scriptThread.SetApartmentState(ApartmentState); diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Script.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Script.cs index 753026149..c465292cb 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Script.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Script.cs @@ -12,10 +12,39 @@ namespace Tango.Scripting.Basic { public class Script : ExtendedObject, IScriptSource { - public String Name { get; set; } - public String Code { get; set; } + private String _name; + public String Name + { + get { return _name; } + set { _name = value; RaisePropertyChangedAuto(); } + } + public bool IsEntryPoint { get; set; } + private String _code; + public String Code + { + get { return _code; } + set + { + if (_code != null && _code != value) + { + IsChanged = true; + } + + _code = value; + RaisePropertyChangedAuto(); + } + } + + private bool _isChanged; + [JsonIgnore] + public bool IsChanged + { + get { return _isChanged; } + set { _isChanged = value; RaisePropertyChangedAuto(); } + } + private bool _isSelected; [JsonIgnore] public bool IsSelected @@ -26,6 +55,8 @@ namespace Tango.Scripting.Basic [JsonIgnore] public int LoadCount { get; internal set; } + [JsonIgnore] + public int LoadCharCount { get; set; } public static Script New(String file) { |
