diff options
Diffstat (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs')
| -rw-r--r-- | Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs | 21 |
1 files changed, 9 insertions, 12 deletions
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); |
