Skip to content

Commit 69ce8fa

Browse files
Version 5.5.2: Added V8ScriptEngineFlags.EnableDateTimeConversion, resolving GitHub Issue ClearFoundry#37; added IScriptEngineException.ScriptException, resolving GitHub Issue ClearFoundry#39; fixed VB.NET access to non-enumerable JavaScript properties (GitHub Issue ClearFoundry#47); updated deployment and API documentation. Tested with V8 6.5.254.41.
1 parent 044733c commit 69ce8fa

File tree

540 files changed

+1498
-1198
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

540 files changed

+1498
-1198
lines changed

ClearScript.NoV8.sln.DotSettings

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
1919
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/CASE_BLOCK_BRACES/@EntryValue">NEXT_LINE</s:String>
2020
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/INITIALIZER_BRACES/@EntryValue">NEXT_LINE</s:String>
21+
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSORHOLDER_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
2122
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_AFTER_TYPECAST_PARENTHESES/@EntryValue">False</s:Boolean>
2223
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_AROUND_MULTIPLICATIVE_OP/@EntryValue">True</s:Boolean>
2324
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_BEFORE_SIZEOF_PARENTHESES/@EntryValue">False</s:Boolean>
@@ -40,6 +41,11 @@
4041
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
4142
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
4243
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticReadonly/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
44+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpAttributeForSingleLineMethodUpgrade/@EntryIndexedValue">True</s:Boolean>
45+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
46+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
47+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpRenamePlacementToArrangementMigration/@EntryIndexedValue">True</s:Boolean>
4348
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
49+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
4450
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
4551
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

ClearScript.sln.DotSettings

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
1919
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/CASE_BLOCK_BRACES/@EntryValue">NEXT_LINE</s:String>
2020
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/INITIALIZER_BRACES/@EntryValue">NEXT_LINE</s:String>
21+
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSORHOLDER_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
2122
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_AFTER_TYPECAST_PARENTHESES/@EntryValue">False</s:Boolean>
2223
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_AROUND_MULTIPLICATIVE_OP/@EntryValue">True</s:Boolean>
2324
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_BEFORE_SIZEOF_PARENTHESES/@EntryValue">False</s:Boolean>
@@ -40,6 +41,11 @@
4041
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
4142
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
4243
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticReadonly/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
44+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpAttributeForSingleLineMethodUpgrade/@EntryIndexedValue">True</s:Boolean>
45+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
46+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
47+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpRenamePlacementToArrangementMigration/@EntryIndexedValue">True</s:Boolean>
4348
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
49+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
4450
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
4551
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

ClearScript/Exports/VersionSymbols.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55

66
#pragma once
77

8-
#define CLEARSCRIPT_VERSION_STRING "5.5.1.1"
9-
#define CLEARSCRIPT_VERSION_COMMA_SEPARATED 5,5,1,1
8+
#define CLEARSCRIPT_VERSION_STRING "5.5.2.0"
9+
#define CLEARSCRIPT_VERSION_COMMA_SEPARATED 5,5,2,0

ClearScript/IScriptEngineException.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,12 @@ public interface IScriptEngineException
4141
bool ExecutionStarted { get; }
4242

4343
/// <summary>
44-
/// Gets the exception that caused the current exception to be thrown, or <c>null</c> if one was not specified.
44+
/// Gets the script exception that caused the current exception to be thrown, or <c>null</c> if one was not specified.
45+
/// </summary>
46+
dynamic ScriptException { get; }
47+
48+
/// <summary>
49+
/// Gets the host exception that caused the current exception to be thrown, or <c>null</c> if one was not specified.
4550
/// </summary>
4651
Exception InnerException { get; }
4752
}

ClearScript/Properties/AssemblyInfo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717
[assembly: InternalsVisibleTo("ClearScriptTest")]
1818

1919
[assembly: ComVisible(false)]
20-
[assembly: AssemblyVersion("5.5.1.1")]
21-
[assembly: AssemblyFileVersion("5.5.1.1")]
20+
[assembly: AssemblyVersion("5.5.2.0")]
21+
[assembly: AssemblyFileVersion("5.5.2.0")]
2222

2323
namespace Microsoft.ClearScript.Properties
2424
{
2525
internal static class ClearScriptVersion
2626
{
27-
public const string Value = "5.5.1.1";
27+
public const string Value = "5.5.2.0";
2828
}
2929
}

ClearScript/ScriptEngine.cs

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1272,32 +1272,12 @@ internal virtual void OnAccessSettingsChanged()
12721272

12731273
internal virtual void HostInvoke(Action action)
12741274
{
1275-
var previousEngine = currentEngine;
1276-
currentEngine = this;
1277-
1278-
try
1279-
{
1280-
action();
1281-
}
1282-
finally
1283-
{
1284-
currentEngine = previousEngine;
1285-
}
1275+
action();
12861276
}
12871277

12881278
internal virtual T HostInvoke<T>(Func<T> func)
12891279
{
1290-
var previousEngine = currentEngine;
1291-
currentEngine = this;
1292-
1293-
try
1294-
{
1295-
return func();
1296-
}
1297-
finally
1298-
{
1299-
currentEngine = previousEngine;
1300-
}
1280+
return func();
13011281
}
13021282

13031283
#endregion
@@ -1306,7 +1286,28 @@ internal virtual T HostInvoke<T>(Func<T> func)
13061286

13071287
internal ScriptFrame CurrentScriptFrame { get; private set; }
13081288

1289+
internal IDisposable CreateEngineScope()
1290+
{
1291+
return Scope.Create(() => MiscHelpers.Exchange(ref currentEngine, this), previousEngine => currentEngine = previousEngine);
1292+
}
1293+
13091294
internal virtual void ScriptInvoke(Action action)
1295+
{
1296+
using (CreateEngineScope())
1297+
{
1298+
ScriptInvokeInternal(action);
1299+
}
1300+
}
1301+
1302+
internal virtual T ScriptInvoke<T>(Func<T> func)
1303+
{
1304+
using (CreateEngineScope())
1305+
{
1306+
return ScriptInvokeInternal(func);
1307+
}
1308+
}
1309+
1310+
internal void ScriptInvokeInternal(Action action)
13101311
{
13111312
var previousScriptFrame = CurrentScriptFrame;
13121313
CurrentScriptFrame = new ScriptFrame();
@@ -1321,7 +1322,7 @@ internal virtual void ScriptInvoke(Action action)
13211322
}
13221323
}
13231324

1324-
internal virtual T ScriptInvoke<T>(Func<T> func)
1325+
internal T ScriptInvokeInternal<T>(Func<T> func)
13251326
{
13261327
var previousScriptFrame = CurrentScriptFrame;
13271328
CurrentScriptFrame = new ScriptFrame();
@@ -1350,10 +1351,10 @@ internal static void ThrowScriptError(IScriptEngineException scriptError)
13501351
{
13511352
if (scriptError is ScriptInterruptedException)
13521353
{
1353-
throw new ScriptInterruptedException(scriptError.EngineName, scriptError.Message, scriptError.ErrorDetails, scriptError.HResult, scriptError.IsFatal, scriptError.ExecutionStarted, scriptError.InnerException);
1354+
throw new ScriptInterruptedException(scriptError.EngineName, scriptError.Message, scriptError.ErrorDetails, scriptError.HResult, scriptError.IsFatal, scriptError.ExecutionStarted, scriptError.ScriptException, scriptError.InnerException);
13541355
}
13551356

1356-
throw new ScriptEngineException(scriptError.EngineName, scriptError.Message, scriptError.ErrorDetails, scriptError.HResult, scriptError.IsFatal, scriptError.ExecutionStarted, scriptError.InnerException);
1357+
throw new ScriptEngineException(scriptError.EngineName, scriptError.Message, scriptError.ErrorDetails, scriptError.HResult, scriptError.IsFatal, scriptError.ExecutionStarted, scriptError.ScriptException, scriptError.InnerException);
13571358
}
13581359
}
13591360

ClearScript/ScriptEngineException.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class ScriptEngineException : InvalidOperationException, IScriptEngineExc
2525
private readonly bool executionStarted;
2626
private const string executionStartedItemName = "ExecutionStarted";
2727

28+
private readonly object scriptException;
2829
private const string defaultMessage = "An error occurred during script execution";
2930

3031
#region constructors
@@ -76,14 +77,15 @@ protected ScriptEngineException(SerializationInfo info, StreamingContext context
7677
executionStarted = info.GetBoolean(executionStartedItemName);
7778
}
7879

79-
internal ScriptEngineException(string engineName, string message, string errorDetails, int errorCode, bool isFatal, bool executionStarted, Exception innerException)
80+
internal ScriptEngineException(string engineName, string message, string errorDetails, int errorCode, bool isFatal, bool executionStarted, object scriptException, Exception innerException)
8081
: base(MiscHelpers.EnsureNonBlank(message, defaultMessage), innerException)
8182
{
8283
this.engineName = engineName;
8384
// ReSharper disable once RedundantBaseQualifier
8485
this.errorDetails = MiscHelpers.EnsureNonBlank(errorDetails, base.Message);
8586
this.isFatal = isFatal;
8687
this.executionStarted = executionStarted;
88+
this.scriptException = scriptException;
8789

8890
if (errorCode != 0)
8991
{
@@ -135,6 +137,14 @@ public bool ExecutionStarted
135137
get { return executionStarted; }
136138
}
137139

140+
/// <summary>
141+
/// Gets the script exception that caused the current exception to be thrown, or <c>null</c> if one was not specified.
142+
/// </summary>
143+
public dynamic ScriptException
144+
{
145+
get { return scriptException; }
146+
}
147+
138148
#endregion
139149

140150
#region Object overrides

ClearScript/ScriptInterruptedException.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class ScriptInterruptedException : OperationCanceledException, IScriptEng
2525
private readonly bool executionStarted;
2626
private const string executionStartedItemName = "ExecutionStarted";
2727

28+
private readonly object scriptException;
2829
private const string defaultMessage = "Script execution was interrupted";
2930

3031
#region constructors
@@ -76,14 +77,15 @@ protected ScriptInterruptedException(SerializationInfo info, StreamingContext co
7677
executionStarted = info.GetBoolean(executionStartedItemName);
7778
}
7879

79-
internal ScriptInterruptedException(string engineName, string message, string errorDetails, int errorCode, bool isFatal, bool executionStarted, Exception innerException)
80+
internal ScriptInterruptedException(string engineName, string message, string errorDetails, int errorCode, bool isFatal, bool executionStarted, object scriptException, Exception innerException)
8081
: base(MiscHelpers.EnsureNonBlank(message, defaultMessage), innerException)
8182
{
8283
this.engineName = engineName;
8384
// ReSharper disable once RedundantBaseQualifier
8485
this.errorDetails = MiscHelpers.EnsureNonBlank(errorDetails, base.Message);
8586
this.isFatal = isFatal;
8687
this.executionStarted = executionStarted;
88+
this.scriptException = scriptException;
8789

8890
if (errorCode != 0)
8991
{
@@ -135,6 +137,14 @@ public bool ExecutionStarted
135137
get { return executionStarted; }
136138
}
137139

140+
/// <summary>
141+
/// Gets the script exception that caused the current exception to be thrown, or <c>null</c> if one was not specified.
142+
/// </summary>
143+
public dynamic ScriptException
144+
{
145+
get { return scriptException; }
146+
}
147+
138148
#endregion
139149

140150
#region Object overrides

ClearScript/ScriptItem.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ public static void ThrowLastScriptError()
2727
{
2828
if (scriptError is ScriptInterruptedException)
2929
{
30-
throw new ScriptInterruptedException(scriptError.EngineName, scriptError.Message, scriptError.ErrorDetails, scriptError.HResult, scriptError.IsFatal, scriptError.ExecutionStarted, scriptError.InnerException);
30+
throw new ScriptInterruptedException(scriptError.EngineName, scriptError.Message, scriptError.ErrorDetails, scriptError.HResult, scriptError.IsFatal, scriptError.ExecutionStarted, scriptError.ScriptException, scriptError.InnerException);
3131
}
3232

33-
throw new ScriptEngineException(scriptError.EngineName, scriptError.Message, scriptError.ErrorDetails, scriptError.HResult, scriptError.IsFatal, scriptError.ExecutionStarted, scriptError.InnerException);
33+
throw new ScriptEngineException(scriptError.EngineName, scriptError.Message, scriptError.ErrorDetails, scriptError.HResult, scriptError.IsFatal, scriptError.ExecutionStarted, scriptError.ScriptException, scriptError.InnerException);
3434
}
3535
}
3636

ClearScript/Util/DisposedFlag.cs

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)