Skip to content

Commit

Permalink
latest-Recommended
Browse files Browse the repository at this point in the history
  • Loading branch information
lahma committed Nov 12, 2023
1 parent 30e1c62 commit 2af43ca
Show file tree
Hide file tree
Showing 35 changed files with 118 additions and 140 deletions.
15 changes: 15 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,21 @@ indent_size = 2
# IDE0055: Fix formatting
dotnet_diagnostic.IDE0055.severity = warning

# Error CA1051 : Do not declare visible instance fields
dotnet_diagnostic.CA1051.severity = none

# Error CA1720 : Identifiers should not contain type names
dotnet_diagnostic.CA1720.severity = none

# Error CA1711: Identifiers should not have incorrect suffix
dotnet_diagnostic.CA1711.severity = none

# Error CA1710: Identifiers should have correct suffix
dotnet_diagnostic.CA1710.severity = none

# Error CA1716: Identifiers should have correct suffix
dotnet_diagnostic.CA1716.severity = none

# Sort using and Import directives with System.* appearing first
dotnet_sort_system_directives_first = true
dotnet_separate_import_directive_groups = false
Expand Down
2 changes: 2 additions & 0 deletions Jint/Constraints/TimeConstraint.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@

namespace Jint.Constraints;

#pragma warning disable CA1001
internal sealed class TimeConstraint : Constraint
#pragma warning restore CA1001
{
private readonly TimeSpan _timeout;
private CancellationTokenSource? _cts;
Expand Down
2 changes: 1 addition & 1 deletion Jint/Jint.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<AnalysisLevel>latest-Minimum</AnalysisLevel>
<AnalysisLevel>latest-Recommended</AnalysisLevel>
</PropertyGroup>

<PropertyGroup Condition=" '$(TargetFramework)' == 'net6.0' or '$(TargetFramework)' == 'netstandard2.1' ">
Expand Down
5 changes: 3 additions & 2 deletions Jint/Native/BigInt/BigIntPrototype.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Globalization;
using System.Numerics;
using Jint.Collections;
using Jint.Native.Object;
Expand Down Expand Up @@ -55,7 +56,7 @@ private JsValue ToLocaleString(JsValue thisObject, JsValue[] arguments)
var x = ThisBigIntValue(thisObject);
//var numberFormat = (NumberFormat) Construct(_realm.Intrinsics.NumberFormat, new[] { locales, options });
// numberFormat.FormatNumeric(x);
return x._value.ToString("R");
return x._value.ToString("R", CultureInfo.InvariantCulture);
}

/// <summary>
Expand Down Expand Up @@ -103,7 +104,7 @@ private JsValue ToBigIntString(JsValue thisObject, JsValue[] arguments)

if (radixMV == 10)
{
return value.ToString("R");
return value.ToString("R", CultureInfo.InvariantCulture);
}

var negative = value < 0;
Expand Down
19 changes: 10 additions & 9 deletions Jint/Native/Date/DatePrototype.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Globalization;
using System.Runtime.CompilerServices;
using Jint.Collections;
using Jint.Native.Object;
Expand Down Expand Up @@ -775,9 +776,9 @@ private JsValue ToUtcString(JsValue thisObject, JsValue[] arguments)

var weekday = _dayNames[WeekDay(tv)];
var month = _monthNames[MonthFromTime(tv)];
var day = DateFromTime(tv).ToString("00");
var day = DateFromTime(tv).ToString("00", CultureInfo.InvariantCulture);
var yv = YearFromTime(tv);
var paddedYear = yv.ToString("0000");
var paddedYear = yv.ToString("0000", CultureInfo.InvariantCulture);

return $"{weekday}, {day} {month} {paddedYear} {TimeString(tv)}";
}
Expand Down Expand Up @@ -1355,11 +1356,11 @@ private static string DateString(DatePresentation tv)
var month = _monthNames[MonthFromTime(tv)];

var dateFromTime = DateFromTime(tv);
var day = System.Math.Max(1, dateFromTime).ToString("00");
var day = System.Math.Max(1, dateFromTime).ToString("00", CultureInfo.InvariantCulture);
var yv = YearFromTime(tv);
var yearSign = yv < 0 ? "-" : "";
var year = System.Math.Abs(yv);
var paddedYear = year.ToString("0000");
var paddedYear = year.ToString("0000", CultureInfo.InvariantCulture);

return weekday + " " + month + " " + day + " " + yearSign + paddedYear;
}
Expand All @@ -1369,9 +1370,9 @@ private static string DateString(DatePresentation tv)
/// </summary>
private static string TimeString(DatePresentation t)
{
var hour = HourFromTime(t).ToString("00");
var minute = MinFromTime(t).ToString("00");
var second = SecFromTime(t).ToString("00");
var hour = HourFromTime(t).ToString("00", CultureInfo.InvariantCulture);
var minute = MinFromTime(t).ToString("00", CultureInfo.InvariantCulture);
var second = SecFromTime(t).ToString("00", CultureInfo.InvariantCulture);

return hour + ":" + minute + ":" + second + " GMT";
}
Expand All @@ -1396,8 +1397,8 @@ private string TimeZoneString(DatePresentation tv)
absOffset = -1 * offset;
}

var offsetMin = MinFromTime(absOffset).ToString("00");
var offsetHour = HourFromTime(absOffset).ToString("00");
var offsetMin = MinFromTime(absOffset).ToString("00", CultureInfo.InvariantCulture);
var offsetHour = HourFromTime(absOffset).ToString("00", CultureInfo.InvariantCulture);

var tzName = " (" + _timeSystem.DefaultTimeZone.StandardName + ")";

Expand Down
4 changes: 3 additions & 1 deletion Jint/Native/Date/MimeKit.cs
Original file line number Diff line number Diff line change
Expand Up @@ -731,7 +731,9 @@ public static bool SkipCommentsAndWhiteSpace(byte[] text, ref int index, int end
if (!SkipComment(text, ref index, endIndex))
{
if (throwOnError)
throw new Exception($"Incomplete comment token at offset {startIndex}");
{
throw new ArgumentException($"Incomplete comment token at offset {startIndex}");
}

return false;
}
Expand Down
2 changes: 1 addition & 1 deletion Jint/Native/Function/ClassDefinition.cs
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ private static ClassFieldDefinition ClassFieldDefinitionEvaluation(Engine engine

private sealed class ClassFieldFunction : Node, IFunction
{
private readonly NodeList<Node> _nodeList = new();
private readonly NodeList<Node> _nodeList;
private readonly BlockStatement _statement;

public ClassFieldFunction(Expression expression) : base(Nodes.ExpressionStatement)
Expand Down
4 changes: 2 additions & 2 deletions Jint/Native/Function/ScriptFunctionInstance.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public sealed class ScriptFunctionInstance : FunctionInstance, IConstructor
/// <summary>
/// https://tc39.es/ecma262/#sec-ecmascript-function-objects-call-thisargument-argumentslist
/// </summary>
protected internal override JsValue Call(JsValue thisArgument, JsValue[] arguments)
protected internal override JsValue Call(JsValue thisObject, JsValue[] arguments)
{
var strict = _functionDefinition.Strict || _thisMode == FunctionThisMode.Strict;
using (new StrictModeScope(strict, true))
Expand All @@ -71,7 +71,7 @@ protected internal override JsValue Call(JsValue thisArgument, JsValue[] argumen
ExceptionHelper.ThrowTypeError(calleeContext.Realm, $"Class constructor {_functionDefinition.Name} cannot be invoked without 'new'");
}

OrdinaryCallBindThis(calleeContext, thisArgument);
OrdinaryCallBindThis(calleeContext, thisObject);

// actual call
var context = _engine._activeEvaluationContext ?? new EvaluationContext(_engine);
Expand Down
28 changes: 13 additions & 15 deletions Jint/Native/Global/GlobalObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ public static JsValue ParseFloat(JsValue thisObject, JsValue[] arguments)
if (trimmedString[0] == '-')
{
i++;
if (trimmedString.Length > 1 && trimmedString[1] == 'I' && trimmedString.StartsWith("-Infinity"))
if (trimmedString.Length > 1 && trimmedString[1] == 'I' && trimmedString.StartsWith("-Infinity", StringComparison.Ordinal))
{
return JsNumber.DoubleNegativeInfinity;
}
Expand All @@ -147,18 +147,18 @@ public static JsValue ParseFloat(JsValue thisObject, JsValue[] arguments)
if (trimmedString[0] == '+')
{
i++;
if (trimmedString.Length > 1 && trimmedString[1] == 'I' && trimmedString.StartsWith("+Infinity"))
if (trimmedString.Length > 1 && trimmedString[1] == 'I' && trimmedString.StartsWith("+Infinity", StringComparison.Ordinal))
{
return JsNumber.DoublePositiveInfinity;
}
}

if (trimmedString.StartsWith("Infinity"))
if (trimmedString.StartsWith("Infinity", StringComparison.Ordinal))
{
return JsNumber.DoublePositiveInfinity;
}

if (trimmedString.StartsWith("NaN"))
if (trimmedString.StartsWith("NaN", StringComparison.Ordinal))
{
return JsNumber.DoubleNaN;
}
Expand Down Expand Up @@ -592,7 +592,7 @@ private static bool IsDigit(char c, int radix, out int result)
/// </summary>
public JsValue Escape(JsValue thisObject, JsValue[] arguments)
{
const string whiteList = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@*_ + -./";
const string WhiteList = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@*_ + -./";
var uriString = TypeConverter.ToString(arguments.At(0));

var strLen = uriString.Length;
Expand All @@ -603,17 +603,17 @@ public JsValue Escape(JsValue thisObject, JsValue[] arguments)
for (var k = 0; k < strLen; k++)
{
var c = uriString[k];
if (whiteList.IndexOf(c) != -1)
if (WhiteList.IndexOf(c) != -1)
{
_stringBuilder.Append(c);
}
else if (c < 256)
{
_stringBuilder.Append($"%{((int) c):X2}");
_stringBuilder.Append('%').AppendFormat(CultureInfo.InvariantCulture, "{0:X2}", (int) c);
}
else
{
_stringBuilder.Append($"%u{((int) c):X4}");
_stringBuilder.Append("%u").AppendFormat(CultureInfo.InvariantCulture, "{0:X4}", (int) c);
}
}

Expand Down Expand Up @@ -641,18 +641,16 @@ public JsValue Unescape(JsValue thisObject, JsValue[] arguments)
&& uriString[k + 1] == 'u'
&& uriString.Skip(k + 2).Take(4).All(IsValidHexaChar))
{
c = (char)int.Parse(
string.Join(string.Empty, uriString.Skip(k + 2).Take(4)),
NumberStyles.AllowHexSpecifier);
var joined = string.Join(string.Empty, uriString.Skip(k + 2).Take(4));
c = (char) int.Parse(joined, NumberStyles.AllowHexSpecifier, CultureInfo.InvariantCulture);

k += 5;
}
else if (k <= strLen - 3
&& uriString.Skip(k + 1).Take(2).All(IsValidHexaChar))
&& uriString.Skip(k + 1).Take(2).All(IsValidHexaChar))
{
c = (char)int.Parse(
string.Join(string.Empty, uriString.Skip(k + 1).Take(2)),
NumberStyles.AllowHexSpecifier);
var joined = string.Join(string.Empty, uriString.Skip(k + 1).Take(2));
c = (char) int.Parse(joined, NumberStyles.AllowHexSpecifier, CultureInfo.InvariantCulture);

k += 2;
}
Expand Down
15 changes: 3 additions & 12 deletions Jint/Native/JsBigInt.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,15 +95,9 @@ public override bool IsLooselyEqual(JsValue value)
return false;
}

public override bool Equals(object? other)
{
return Equals(other as JsBigInt);
}
public override bool Equals(object? obj) => Equals(obj as JsBigInt);

public override bool Equals(JsValue? other)
{
return Equals(other as JsBigInt);
}
public override bool Equals(JsValue? other) => Equals(other as JsBigInt);

public bool Equals(JsBigInt? other)
{
Expand All @@ -115,8 +109,5 @@ public bool Equals(JsBigInt? other)
return ReferenceEquals(this, other) || _value == other._value;
}

public override int GetHashCode()
{
return _value.GetHashCode();
}
public override int GetHashCode() => _value.GetHashCode();
}
4 changes: 2 additions & 2 deletions Jint/Native/JsBoolean.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ public override bool Equals(object? obj)
return Equals(obj as JsBoolean);
}

public override bool Equals(JsValue? obj)
public override bool Equals(JsValue? other)
{
return Equals(obj as JsBoolean);
return Equals(other as JsBoolean);
}

public bool Equals(JsBoolean? other)
Expand Down
2 changes: 1 addition & 1 deletion Jint/Native/JsNull.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public override bool IsLooselyEqual(JsValue value)

public override bool Equals(object? obj) => Equals(obj as JsNull);

public override bool Equals(JsValue? obj) => Equals(obj as JsNull);
public override bool Equals(JsValue? other) => Equals(other as JsNull);

public bool Equals(JsNull? other) => other is not null;

Expand Down
24 changes: 8 additions & 16 deletions Jint/Native/JsNumber.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Diagnostics;
using System.Globalization;
using System.Numerics;
using System.Runtime.CompilerServices;
using Jint.Native.Number;
Expand Down Expand Up @@ -90,10 +91,10 @@ internal static JsNumber Create(object value)
var underlyingType = System.Type.GetTypeCode(Enum.GetUnderlyingType(value.GetType()));
return underlyingType switch
{
TypeCode.Int64 => Create(Convert.ToInt64(value)),
TypeCode.UInt32 => Create(Convert.ToUInt64(value)),
TypeCode.UInt64 => Create(Convert.ToUInt64(value)),
_ => Create(Convert.ToInt32(value))
TypeCode.Int64 => Create(Convert.ToInt64(value, CultureInfo.InvariantCulture)),
TypeCode.UInt32 => Create(Convert.ToUInt64(value, CultureInfo.InvariantCulture)),
TypeCode.UInt64 => Create(Convert.ToUInt64(value, CultureInfo.InvariantCulture)),
_ => Create(Convert.ToInt32(value, CultureInfo.InvariantCulture))
};
}

Expand Down Expand Up @@ -265,15 +266,9 @@ public override bool IsLooselyEqual(JsValue value)
return base.IsLooselyEqual(value);
}

public override bool Equals(object? obj)
{
return Equals(obj as JsNumber);
}
public override bool Equals(object? obj) => Equals(obj as JsNumber);

public override bool Equals(JsValue? obj)
{
return Equals(obj as JsNumber);
}
public override bool Equals(JsValue? other) => Equals(other as JsNumber);

public bool Equals(JsNumber? other)
{
Expand All @@ -295,8 +290,5 @@ public bool Equals(JsNumber? other)
return _value == other._value;
}

public override int GetHashCode()
{
return _value.GetHashCode();
}
public override int GetHashCode() => _value.GetHashCode();
}
27 changes: 6 additions & 21 deletions Jint/Native/JsString.cs
Original file line number Diff line number Diff line change
Expand Up @@ -286,15 +286,11 @@ internal string Substring(int startIndex)
return ToString().Substring(startIndex);
}

public sealed override bool Equals(JsValue? obj)
{
return Equals(obj as JsString);
}
public sealed override bool Equals(object? obj) => Equals(obj as JsString);

public virtual bool Equals(string? s)
{
return s != null && ToString() == s;
}
public sealed override bool Equals(JsValue? other) => Equals(other as JsString);

public virtual bool Equals(string? other) => other != null && ToString() == other;

public virtual bool Equals(JsString? other)
{
Expand Down Expand Up @@ -326,15 +322,7 @@ public override bool IsLooselyEqual(JsValue value)
return base.IsLooselyEqual(value);
}

public sealed override bool Equals(object? obj)
{
return Equals(obj as JsString);
}

public override int GetHashCode()
{
return _value.GetHashCode();
}
public override int GetHashCode() => _value.GetHashCode();

internal sealed class ConcatenatedString : JsString
{
Expand Down Expand Up @@ -445,10 +433,7 @@ public override bool Equals(JsString? other)
return ToString() == other.ToString();
}

public override int GetHashCode()
{
return _stringBuilder?.GetHashCode() ?? _value.GetHashCode();
}
public override int GetHashCode() => _stringBuilder?.GetHashCode() ?? _value.GetHashCode();

internal override JsValue DoClone()
{
Expand Down
2 changes: 1 addition & 1 deletion Jint/Native/JsSymbol.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public override string ToString()

public override bool Equals(object? obj) => Equals(obj as JsSymbol);

public override bool Equals(JsValue? obj) => Equals(obj as JsSymbol);
public override bool Equals(JsValue? other) => Equals(other as JsSymbol);

public bool Equals(JsSymbol? other) => ReferenceEquals(this, other);

Expand Down

0 comments on commit 2af43ca

Please sign in to comment.