Skip to content

Commit 514a01e

Browse files
committed
Issue EvilBeaver#74 Выводить сведения об ошибке в машиночитаемом виде
1 parent cdf8714 commit 514a01e

File tree

4 files changed

+26
-2
lines changed

4 files changed

+26
-2
lines changed

src/ScriptEngine/CodePositionInfo.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ namespace ScriptEngine
77
{
88
class CodePositionInfo
99
{
10+
public string ModuleName { get; set; }
1011
public int LineNumber { get; set; }
1112
public string Code { get; set; }
1213
}

src/ScriptEngine/CompilerService.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,16 @@ private ModuleHandle Compile(ICodeSource source)
8080

8181
var compiler = new Compiler.Compiler();
8282
ModuleImage compiledImage;
83-
compiledImage = compiler.Compile(parser, _currentContext);
83+
try
84+
{
85+
compiledImage = compiler.Compile(parser, _currentContext);
86+
}
87+
catch (ScriptException e)
88+
{
89+
e.ModuleName = source.SourceDescription;
90+
throw;
91+
}
92+
8493
foreach (var item in _predefinedVariables)
8594
{
8695
var varDef = _scope.GetVariable(item);

src/ScriptEngine/Machine/MachineInstance.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,7 @@ private void MainCommandLoop()
349349
private void SetScriptExceptionSource(RuntimeException exc)
350350
{
351351
exc.LineNumber = _lineNumber;
352+
exc.ModuleName = _module.ModuleInfo.ModuleName;
352353
if (_module.ModuleInfo != null)
353354
{
354355
exc.Code = _module.ModuleInfo.CodeIndexer.GetCodeLine(_lineNumber);

src/ScriptEngine/ScriptException.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,24 @@ internal set
5757
}
5858
}
5959

60+
public string ModuleName
61+
{
62+
get
63+
{
64+
return _codePosition.ModuleName;
65+
}
66+
internal set
67+
{
68+
_codePosition.ModuleName = value;
69+
}
70+
}
71+
6072
public override string Message
6173
{
6274
get
6375
{
64-
return String.Format("{{Ошибка в строке {0}: {1}}}\n {2}",
76+
return String.Format("{{Модуль {0} / Ошибка в строке: {1} / {2}}}\n {3}",
77+
_codePosition.ModuleName,
6578
_codePosition.LineNumber,
6679
base.Message,
6780
_codePosition.Code);

0 commit comments

Comments
 (0)