Skip to content

Commit 2be5a7c

Browse files
committed
Fixed a problems in calculation of error locations
1 parent f0fdf3e commit 2be5a7c

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

src/JavaScriptEngineSwitcher.ChakraCore/ChakraCoreJsEngine.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Linq;
55
using System.Reflection;
66
using System.Runtime.InteropServices;
7+
using System.Text.RegularExpressions;
78

89
using OriginalJsException = JavaScriptEngineSwitcher.ChakraCore.JsRt.JsException;
910

@@ -32,6 +33,13 @@ public sealed class ChakraCoreJsEngine : JsEngineBase
3233
/// </summary>
3334
private const string EngineVersion = "1.4.1";
3435

36+
/// <summary>
37+
/// Regular expression for working with the string representation of error
38+
/// </summary>
39+
private static readonly Regex _errorStringRegex =
40+
new Regex(@"[ ]{3,5}at (?:[A-Za-z_\$][0-9A-Za-z_\$ ]* )?" +
41+
@"\([^\s*?""<>|][^\t\n\r*?""<>|]*?:(?<lineNumber>\d+):(?<columnNumber>\d+)\)");
42+
3543
/// <summary>
3644
/// Instance of JS runtime
3745
/// </summary>
@@ -917,6 +925,18 @@ private static JsRuntimeException ConvertJsExceptionToJsRuntimeException(
917925
columnNumber = columnPropertyValue.ConvertToNumber().ToInt32() + 1;
918926
}
919927

928+
if (lineNumber <= 0 && columnNumber <= 0)
929+
{
930+
Match errorStringMatch = _errorStringRegex.Match(message);
931+
if (errorStringMatch.Success)
932+
{
933+
GroupCollection errorStringGroups = errorStringMatch.Groups;
934+
935+
lineNumber = int.Parse(errorStringGroups["lineNumber"].Value);
936+
columnNumber = int.Parse(errorStringGroups["columnNumber"].Value);
937+
}
938+
}
939+
920940
JsPropertyId sourcePropertyId = JsPropertyId.FromString("source");
921941
if (errorValue.HasProperty(sourcePropertyId))
922942
{

src/JavaScriptEngineSwitcher.Jint/JintJsEngine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ private JsRuntimeException ConvertJavaScriptExceptionToJsRuntimeException(
172172
{
173173
string category = string.Empty;
174174
int lineNumber = jsException.LineNumber;
175-
int columnNumber = jsException.Column;
175+
int columnNumber = jsException.Column + 1;
176176
string message = jsException.Message;
177177
OriginalJsValue errorValue = jsException.Error;
178178

src/JavaScriptEngineSwitcher.Jurassic/JurassicJsEngine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ private JsRuntimeException ConvertJavascriptExceptionToJsRuntimeException(
170170
Category = jsException.Name,
171171
LineNumber = jsException.LineNumber,
172172
ColumnNumber = 0,
173-
SourceFragment = jsException.SourcePath
173+
SourceFragment = string.Empty
174174
};
175175

176176
return jsRuntimeException;

src/JavaScriptEngineSwitcher.V8/V8JsEngine.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ public sealed class V8JsEngine : JsEngineBase
4848
/// Regular expression for working with the string representation of error
4949
/// </summary>
5050
private static readonly Regex _errorStringRegex =
51-
new Regex(@"at (?:[A-Za-z_\$][0-9A-Za-z_\$]* )?" +
52-
@"\(?Script Document(?:\s*\[(temp|\d+)\])?:(?<lineNumber>\d+):(?<columnNumber>\d+)\)?");
51+
new Regex(@"[ ]{3,5}at (?:[A-Za-z_\$][0-9A-Za-z_\$]* )?" +
52+
@"\(?[^\s*?""<>|][^\t\n\r*?""<>|]*?:(?<lineNumber>\d+):(?<columnNumber>\d+)\)? -> ");
5353

5454
/// <summary>
5555
/// Synchronizer of code execution

0 commit comments

Comments
 (0)