aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Scripting')
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Basic/IContext.cs2
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs29
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Script.cs5
3 files changed, 17 insertions, 19 deletions
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/IContext.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/IContext.cs
index 906047c2a..d817c5d46 100644
--- a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/IContext.cs
+++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/IContext.cs
@@ -8,6 +8,6 @@ namespace Tango.Scripting.Basic
{
public interface IContext
{
- void WriteLine(String s);
+
}
}
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs
index ff7a3acc2..31be3a714 100644
--- a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs
+++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs
@@ -78,7 +78,7 @@ namespace Tango.Scripting.Basic
}
}
- public static Project New(String name, String code)
+ public static Project New(String name)
{
Project p = new Project();
@@ -88,14 +88,6 @@ namespace Tango.Scripting.Basic
p.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(Enumerable) });
p.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(Form) });
p.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(Project) });
-
- p.Scripts.Add(new Script()
- {
- Name = name,
- IsEntryPoint = true,
- Code = code,
- });
-
return p;
}
@@ -111,6 +103,7 @@ namespace Tango.Scripting.Basic
foreach (var script in Scripts)
{
+ script.LoadCount = 0;
String code = script.Code;
String codeFile = Path.Combine(tempFolder, script.Name);
@@ -119,14 +112,14 @@ namespace Tango.Scripting.Basic
foreach (var file in Scripts.Where(x => !x.IsEntryPoint && script != x).Select(x => Path.Combine(tempFolder, x.Name)))
{
loadingString = $"#load \"{file}\"\n";
+ script.LoadCount++;
}
code = loadingString + code;
if (!script.IsEntryPoint)
{
-
-
+ //In case we use #load
//foreach (var match in Regex.Matches(code, "#load \".+\"").OfType<Match>())
//{
// String line = match.ToString();
@@ -143,9 +136,6 @@ namespace Tango.Scripting.Basic
// }
// }
//}
-
-
-
File.WriteAllText(codeFile, code);
}
else
@@ -162,14 +152,19 @@ namespace Tango.Scripting.Basic
var compileResults = s.Compile();
- foreach (var error in compileResults.Where(x => x.Severity == Microsoft.CodeAnalysis.DiagnosticSeverity.Error || x.Severity == Microsoft.CodeAnalysis.DiagnosticSeverity.Warning))
+ foreach (var error in compileResults.Where(x => x.Severity == Microsoft.CodeAnalysis.DiagnosticSeverity.Error))
{
CompilationError cError = new CompilationError();
cError.File = System.IO.Path.GetFileName(error.Location.SourceTree.FilePath);
+ if (cError.File == String.Empty)
+ {
+ cError.File = Scripts.Single(x => x.IsEntryPoint).Name;
+ }
+ Script errorScript = Scripts.Single(x => x.Name == cError.File);
cError.Message = error.GetMessage();
cError.Severity = error.Severity;
var line = error.Location.GetMappedLineSpan();
- cError.Line = line.StartLinePosition.Line + 1;
+ cError.Line = line.StartLinePosition.Line + 1 + (errorScript != null ? errorScript.LoadCount : 0);
cError.Column = line.StartLinePosition.Character + 1;
cError.Length = line.EndLinePosition.Character - line.StartLinePosition.Character;
result.Errors.Add(cError);
@@ -185,7 +180,7 @@ namespace Tango.Scripting.Basic
if (result.Errors.Count > 0)
{
- throw new InvalidOperationException("There were compilation errors.");
+ throw new InvalidOperationException($"Cannot run project with the following compilation errors:\n{String.Join(Environment.NewLine, result.Errors.Select(x => x.Message))}");
}
Thread scriptThread = null;
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Script.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Script.cs
index fce05636d..753026149 100644
--- a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Script.cs
+++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Script.cs
@@ -24,6 +24,8 @@ namespace Tango.Scripting.Basic
set { _isSelected = value; RaisePropertyChangedAuto(); }
}
+ [JsonIgnore]
+ public int LoadCount { get; internal set; }
public static Script New(String file)
{
@@ -34,12 +36,13 @@ namespace Tango.Scripting.Basic
};
}
- public static Script New(String name, String code)
+ public static Script New(String name, String code, bool isEntryPoint = false)
{
return new Script()
{
Name = name,
Code = code,
+ IsEntryPoint = isEntryPoint,
};
}
}