Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Jint.Benchmark/DictionaryBenchmark.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace Jint.Benchmark;
public class DictionaryBenchmark
{
private static readonly string[] _keys =
{
[
"some",
"key and",
"another",
Expand All @@ -20,7 +20,7 @@ public class DictionaryBenchmark
"asdadsasa",
"23323232323",
"asdadsada sa213"
};
];

[Params(0, 2, 3, 5, 8, 9, 10)]
public int N { get; set; }
Expand Down
2 changes: 1 addition & 1 deletion Jint.Benchmark/UncacheableExpressionsBenchmark.cs
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,6 @@ private void CreateEngine(string script)
engine = new Engine(InitializeEngine);
engine.Execute(script);
engine.Execute(targetObject);
targetJsObject = new[] { engine.GetValue("d") };
targetJsObject = [engine.GetValue("d")];
}
}
2 changes: 1 addition & 1 deletion Jint.Tests/Runtime/ArrayTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ public void Shift()
public void ShouldBeAbleToInitFromArray()
{
var engine = new Engine();
var propertyDescriptors = new JsArray(engine, new JsValue[] { 1 }).GetOwnProperties().ToArray();
var propertyDescriptors = new JsArray(engine, [1]).GetOwnProperties().ToArray();
Assert.Equal(2, propertyDescriptors.Length);
Assert.Equal("0", propertyDescriptors[0].Key);
Assert.Equal(1, propertyDescriptors[0].Value.Value);
Expand Down
2 changes: 1 addition & 1 deletion Jint.Tests/Runtime/Domain/Dimensional.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

public class Dimensional : IComparable<Dimensional>, IEquatable<Dimensional>
{
private readonly MeasureUnit[] PossibleMeasureUnits = new MeasureUnit[] { new MeasureUnit("Mass", "kg", 1.0), new MeasureUnit("Mass", "gr", 0.001), new MeasureUnit("Count", "piece", 1.0) };
private readonly MeasureUnit[] PossibleMeasureUnits = [new MeasureUnit("Mass", "kg", 1.0), new MeasureUnit("Mass", "gr", 0.001), new MeasureUnit("Count", "piece", 1.0)];

public MeasureUnit MeasureUnit { get; private set; }

Expand Down
2 changes: 1 addition & 1 deletion Jint.Tests/Runtime/Domain/IntegerIndexer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ public class IntegerIndexer

public IntegerIndexer()
{
data = new[] {123, 0, 0, 0, 0};
data = [123, 0, 0, 0, 0];
}

public int this[int i]
Expand Down
12 changes: 6 additions & 6 deletions Jint.Tests/Runtime/EngineTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1187,12 +1187,12 @@ public static System.Collections.Generic.IEnumerable<object[]> TestDates
{
get
{
yield return new object[] { new DateTime(2000, 1, 1) };
yield return new object[] { new DateTime(2000, 1, 1, 0, 15, 15, 15) };
yield return new object[] { new DateTime(2000, 6, 1, 0, 15, 15, 15) };
yield return new object[] { new DateTime(1900, 1, 1) };
yield return new object[] { new DateTime(1900, 1, 1, 0, 15, 15, 15) };
yield return new object[] { new DateTime(1900, 6, 1, 0, 15, 15, 15) };
yield return [new DateTime(2000, 1, 1)];
yield return [new DateTime(2000, 1, 1, 0, 15, 15, 15)];
yield return [new DateTime(2000, 6, 1, 0, 15, 15, 15)];
yield return [new DateTime(1900, 1, 1)];
yield return [new DateTime(1900, 1, 1, 0, 15, 15, 15)];
yield return [new DateTime(1900, 6, 1, 0, 15, 15, 15)];
}
}

Expand Down
4 changes: 2 additions & 2 deletions Jint.Tests/Runtime/ExtensionMethods/CustomStringExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ public static ExpandoObject DeserializeObject(this string json)

public static string[] Split(this string value, string split, StringSplitOptions options)
{
return Array.Empty<string>();
return [];
}

public static string[] Split(this string value, int position)
{
var first = value.Substring(0, position);
var second = value.Substring(position);
return new string[] { first, second };
return [first, second];
}
}
20 changes: 10 additions & 10 deletions Jint.Tests/Runtime/FunctionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ function test() {
engine
.SetValue("testFunction", new ClrFunction(engine, "testFunction", (thisValue, args) =>
{
return engine.Invoke(thisValue, "then", new[] { JsValue.Undefined, args.At(0) });
return engine.Invoke(thisValue, "then", [JsValue.Undefined, args.At(0)]);
}))
.SetValue("assertEqual", new Action<object, object>((a, b) => Assert.Equal(b, a)))
.Execute(Script);
Expand Down Expand Up @@ -142,10 +142,10 @@ void addListener(Func<JsValue, JsValue[], JsValue> callback)

Assert.Equal(5, engine.Evaluate("a"));

ev(null, new JsValue[0]);
ev(null, []);
Assert.Equal(10, engine.Evaluate("a"));

ev(null, new JsValue[] { 20 });
ev(null, [20]);
Assert.Equal(30, engine.Evaluate("a"));
}

Expand Down Expand Up @@ -174,10 +174,10 @@ void addListener(Func<JsValue, JsValue[], JsValue> callback)

Assert.Equal(5, engine.Evaluate("a"));

ev(null, new JsValue[0]);
ev(null, []);
Assert.Equal(10, engine.Evaluate("a"));

ev(null, new JsValue[] { 20 });
ev(null, [20]);
Assert.Equal(30, engine.Evaluate("a"));
}

Expand All @@ -196,11 +196,11 @@ void addListener(Func<JsValue, JsValue[], JsValue> callback)

engine.Execute(@"addListener(Boolean)");

Assert.Equal(true, ev(JsValue.Undefined, new JsValue[] { "test" }));
Assert.Equal(true, ev(JsValue.Undefined, new JsValue[] { 5 }));
Assert.Equal(false, ev(JsValue.Undefined, new JsValue[] { false }));
Assert.Equal(false, ev(JsValue.Undefined, new JsValue[] { 0}));
Assert.Equal(false, ev(JsValue.Undefined, new JsValue[] { JsValue.Undefined }));
Assert.Equal(true, ev(JsValue.Undefined, ["test"]));
Assert.Equal(true, ev(JsValue.Undefined, [5]));
Assert.Equal(false, ev(JsValue.Undefined, [false]));
Assert.Equal(false, ev(JsValue.Undefined, [0]));
Assert.Equal(false, ev(JsValue.Undefined, [JsValue.Undefined]));
}

[Fact]
Expand Down
6 changes: 3 additions & 3 deletions Jint.Tests/Runtime/InteropTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2813,7 +2813,7 @@ public void CanCheckIfCallable()
var result = engine.GetValue("f");
Assert.True(result.IsCallable);

Assert.True(result.Call(Array.Empty<JsValue>()).AsBoolean());
Assert.True(result.Call([]).AsBoolean());
Assert.True(result.Call().AsBoolean());
}

Expand Down Expand Up @@ -3422,7 +3422,7 @@ public Strings(string[] strings)

public class Utils
{
public IStringCollection GetStrings() => new Strings(new[] { "a", "b", "c" });
public IStringCollection GetStrings() => new Strings(["a", "b", "c"]);
}

[Fact]
Expand Down Expand Up @@ -3722,7 +3722,7 @@ public class Lion : Animal
public class Zoo
{
public Animal king { get => (new Animal[] { new Lion() })[0]; }
public Animal[] animals { get => new Animal[] { new Lion(), new Elephant() }; }
public Animal[] animals { get => [new Lion(), new Elephant()]; }
}

[Fact]
Expand Down
10 changes: 5 additions & 5 deletions Jint.Tests/Runtime/JsonSerializerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public void JsonStringOutputIsIndentedWhenSpacerDefined()
JsObject instance = new JsObject(engine);
instance["a"] = "b";
instance["b"] = 2;
instance["c"] = new JsArray(engine, new JsValue[] { new JsNumber(4), new JsNumber(5), new JsNumber(6) });
instance["c"] = new JsArray(engine, [new JsNumber(4), new JsNumber(5), new JsNumber(6)]);
instance["d"] = true;

string actual = serializer.Serialize(instance, JsValue.Undefined, new JsNumber(2)).ToString();
Expand All @@ -75,7 +75,7 @@ public void JsonStringOutputIsCompactWithoutSpacer()
JsObject instance = new JsObject(engine);
instance["a"] = "b";
instance["b"] = 2;
instance["c"] = new JsArray(engine, new JsValue[] { new JsNumber(4), new JsNumber(5), new JsNumber(6) });
instance["c"] = new JsArray(engine, [new JsNumber(4), new JsNumber(5), new JsNumber(6)]);
instance["d"] = true;

string actual = serializer.Serialize(instance, JsValue.Undefined, JsValue.Undefined).ToString();
Expand All @@ -88,7 +88,7 @@ public void ArrayWithUndefinedWillBeNull()
using var engine = new Engine();
var serializer = new JsonSerializer(engine);

JsArray array = new JsArray(engine, new JsValue[] { JsValue.Undefined, new JsNumber(42) });
JsArray array = new JsArray(engine, [JsValue.Undefined, new JsNumber(42)]);
string actual = serializer.Serialize(array, JsValue.Undefined, JsValue.Undefined).ToString();
Assert.Equal("[null,42]", actual);
}
Expand Down Expand Up @@ -125,7 +125,7 @@ public void InfinityAndNaNGetsSerializedAsNull()
{
using var engine = new Engine();
var serializer = new JsonSerializer(engine);
JsArray array = new JsArray(engine, new JsValue[] { JsNumber.DoubleNegativeInfinity, JsNumber.DoublePositiveInfinity, JsNumber.DoubleNaN });
JsArray array = new JsArray(engine, [JsNumber.DoubleNegativeInfinity, JsNumber.DoublePositiveInfinity, JsNumber.DoubleNaN]);
string actual = serializer.Serialize(array, JsValue.Undefined, JsValue.Undefined).ToString();
Assert.Equal("[null,null,null]", actual);
}
Expand All @@ -139,7 +139,7 @@ public void ArrayAsReplacedDictatesPropertiesToSerializer()
JsObject instance = new JsObject(engine);
instance["a"] = 21;
instance["b"] = 42;
JsValue replacer = new JsArray(engine, new JsValue[] { new JsString("b"), new JsString("z") });
JsValue replacer = new JsArray(engine, [new JsString("b"), new JsString("z")]);
string actual = serializer.Serialize(instance, replacer, JsValue.Undefined).ToString();
Assert.Equal("{\"b\":42}", actual);
}
Expand Down
18 changes: 8 additions & 10 deletions Jint.Tests/Runtime/ModuleTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -229,20 +229,18 @@ public void ShouldAddModuleFromClrFunction()
export const result = [fns.act_noargs(), fns.act_args('ok'), fns.fn_noargs(), fns.fn_args('ok')];");
var ns = _engine.Modules.Import("my-module");

Assert.Equal(new[]
{
Assert.Equal([
"act_noargs",
"act_args:ok",
"fn_noargs",
"fn_args:ok"
}, received.ToArray());
Assert.Equal(new[]
{
], received.ToArray());
Assert.Equal([
"undefined",
"undefined",
"ret",
"ret"
}, ns.Get("result").AsArray().Select(x => x.ToString()).ToArray());
], ns.Get("result").AsArray().Select(x => x.ToString()).ToArray());
}

private class ImportedClass
Expand Down Expand Up @@ -398,7 +396,7 @@ public void EngineExecutePassesSourceForModuleResolving()
log(value);
})();
";
List<string> logStatements = new List<string>();
List<string> logStatements = [];
engine.SetValue("log", logStatements.Add);

engine.Execute(code, source: "file:///folder/main.js");
Expand All @@ -423,7 +421,7 @@ public void EngineExecuteUsesScriptSourceForSource()
log(value);
})();
";
List<string> logStatements = new List<string>();
List<string> logStatements = [];
engine.SetValue("log", logStatements.Add);

var script = Engine.PrepareScript(code, source: "file:///folder/main.js");
Expand All @@ -449,7 +447,7 @@ public void EngineEvaluatePassesSourceForModuleResolving()
log(value);
})();
";
List<string> logStatements = new List<string>();
List<string> logStatements = [];
engine.SetValue("log", logStatements.Add);

engine.Evaluate(code, source: "file:///folder/main.js");
Expand All @@ -474,7 +472,7 @@ public void EngineEvaluateUsesScriptSourceForSource()
log(value);
})();
";
List<string> logStatements = new List<string>();
List<string> logStatements = [];
engine.SetValue("log", logStatements.Add);

var script = Engine.PrepareScript(code, source: "file:///folder/main.js");
Expand Down
8 changes: 4 additions & 4 deletions Jint.Tests/Runtime/PromiseTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ public void WithResolvers_calling_resolve_resolves_promise()
{
// Arrange
using var engine = new Engine();
List<string> logMessages = new();
List<string> logMessages = [];
engine.SetValue("log", logMessages.Add);

// Act
Expand All @@ -520,7 +520,7 @@ public void WithResolvers_calling_resolve_resolves_promise()
engine.RunAvailableContinuations();

// Assert
List<string> expected = new() { "start", "end", "resolved" };
List<string> expected = ["start", "end", "resolved"];
Assert.Equal(expected, logMessages);
}

Expand All @@ -529,7 +529,7 @@ public void WithResolvers_calling_reject_rejects_promise()
{
// Arrange
using var engine = new Engine();
List<string> logMessages = new();
List<string> logMessages = [];
engine.SetValue("log", logMessages.Add);

// Act
Expand All @@ -546,7 +546,7 @@ public void WithResolvers_calling_reject_rejects_promise()
engine.RunAvailableContinuations();

// Assert
List<string> expected = new() { "start", "end", "rejected" };
List<string> expected = ["start", "end", "rejected"];
Assert.Equal(expected, logMessages);
}
}
2 changes: 1 addition & 1 deletion Jint.Tests/Runtime/RegExpTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ public void ShouldAllowProblematicGroupNames()

var match = engine.Evaluate("'abc'.match(/(?<$group>b)/)").AsArray();
var groups = match.Get("groups").AsObject();
Assert.Equal(new[] { "$group" }, groups.GetOwnPropertyKeys().Select(k => k.AsString()));
Assert.Equal(["$group"], groups.GetOwnPropertyKeys().Select(k => k.AsString()));
Assert.Equal("b", groups["$group"]);

var result = engine.Evaluate("'abc'.replace(/(?<$group>b)/g, '-$<$group>-')").AsString();
Expand Down
2 changes: 1 addition & 1 deletion Jint/Engine.Ast.cs
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ public CachedHoistingScope(Program program)
{
Scope = HoistingScope.GetProgramLevelDeclarations(program);

VarNames = new List<Key>();
VarNames = [];
GatherVarNames(Scope, VarNames);

LexNames = DeclarationCacheBuilder.Build(Scope._lexicalDeclarations);
Expand Down
18 changes: 9 additions & 9 deletions Jint/HoistingScope.cs
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,9 @@ public static void GetImportsAndExports(
}

var exportEntries = treeWalker._exportEntries;
localExportEntries = new();
indirectExportEntries = new();
starExportEntries = new();
localExportEntries = [];
indirectExportEntries = [];
starExportEntries = [];

if (exportEntries != null)
{
Expand Down Expand Up @@ -177,11 +177,11 @@ public void Visit(Node node, Node? parent)
var variableDeclaration = (VariableDeclaration)childNode;
if (variableDeclaration.Kind == VariableDeclarationKind.Var)
{
_variableDeclarations ??= new List<VariableDeclaration>();
_variableDeclarations ??= [];
_variableDeclarations.Add(variableDeclaration);
if (_collectVarNames)
{
_varNames ??= new List<Key>();
_varNames ??= [];
ref readonly var nodeList = ref variableDeclaration.Declarations;
foreach (var declaration in nodeList)
{
Expand All @@ -195,11 +195,11 @@ public void Visit(Node node, Node? parent)

if (parent is null or AstModule && variableDeclaration.Kind != VariableDeclarationKind.Var)
{
_lexicalDeclarations ??= new List<Declaration>();
_lexicalDeclarations ??= [];
_lexicalDeclarations.Add(variableDeclaration);
if (_collectLexicalNames)
{
_lexicalNames ??= new List<string>();
_lexicalNames ??= [];
ref readonly var nodeList = ref variableDeclaration.Declarations;
foreach (var declaration in nodeList)
{
Expand All @@ -216,13 +216,13 @@ public void Visit(Node node, Node? parent)
// function declarations are not hoisted if they are under block or case clauses
if (parent is null || (node.Type != NodeType.BlockStatement && node.Type != NodeType.SwitchCase))
{
_functions ??= new List<FunctionDeclaration>();
_functions ??= [];
_functions.Add((FunctionDeclaration)childNode);
}
}
else if (childType == NodeType.ClassDeclaration && parent is null or AstModule)
{
_lexicalDeclarations ??= new List<Declaration>();
_lexicalDeclarations ??= [];
_lexicalDeclarations.Add((Declaration) childNode);
}

Expand Down
2 changes: 2 additions & 0 deletions Jint/Jint.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
<Nullable>enable</Nullable>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>

<EnableNETAnalyzers>true</EnableNETAnalyzers>
<AnalysisLevel>latest-Recommended</AnalysisLevel>
<EnforceCodeStyleInBuild>false</EnforceCodeStyleInBuild>

<GenerateDocumentationFile>true</GenerateDocumentationFile>
<PackageReadmeFile>README.md</PackageReadmeFile>
Expand Down
Loading