aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs')
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs21
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);