diff --git a/lib/packages/docutils/dochelpers.nim b/lib/packages/docutils/dochelpers.nim index 0a41d85b53d6..cb9bda4ba883 100644 --- a/lib/packages/docutils/dochelpers.nim +++ b/lib/packages/docutils/dochelpers.nim @@ -18,6 +18,7 @@ import std/strutils when defined(nimPreviewSlimSystem): import std/[assertions, syncio] + from std/objectequals import nil type @@ -42,6 +43,10 @@ proc `$`*(s: LangSymbol): string = # for debug s.symKind, s.symTypeKind , s.name, s.generics, $s.isGroup, $s.parametersProvided, $s.parameters, s.outType] +when defined(nimPreviewSlimSystem): + proc `==`*(a, b: LangSymbol): bool {.inline.} = + result = objectequals.`==`(a, b) + func nimIdentBackticksNormalize*(s: string): string = ## Normalizes the string `s` as a Nim identifier. ## diff --git a/lib/pure/collections/heapqueue.nim b/lib/pure/collections/heapqueue.nim index 96f9b4430006..05521aaab5a3 100644 --- a/lib/pure/collections/heapqueue.nim +++ b/lib/pure/collections/heapqueue.nim @@ -264,3 +264,7 @@ proc `$`*[T](heap: HeapQueue[T]): string = if result.len > 1: result.add(", ") result.addQuoted(x) result.add("]") + +proc `==`*[T](a, b: HeapQueue[T]): bool {.inline.} = + ## Equality operator for heaps. + result = a.data == b.data diff --git a/lib/system.nim b/lib/system.nim index c806a08b3698..9c388c35edb2 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -1778,6 +1778,11 @@ proc pop*[T](s: var seq[T]): T {.inline, noSideEffect.} = result = s[L] setLen(s, L) +proc `==`*[T, U](x, y: HSlice[T, U]): bool {.inline.} = + ## Equality operator for slices. + mixin `==` + result = x.a == y.a and x.b == y.b + when defined(nimPreviewSlimSystem): # no `object`, moved to std/objectequals proc `==`*[T: tuple](x, y: T): bool = diff --git a/tests/stdlib/concurrency/tatomics.nim b/tests/stdlib/concurrency/tatomics.nim index 08f2e7d3eed7..76c261135cb2 100644 --- a/tests/stdlib/concurrency/tatomics.nim +++ b/tests/stdlib/concurrency/tatomics.nim @@ -7,7 +7,7 @@ discard """ # test atomic operations import std/[atomics, bitops] -import std/assertions +import std/[assertions, objectequals] type diff --git a/tests/stdlib/talgorithm.nim b/tests/stdlib/talgorithm.nim index e2024df0c357..aaa4e6744d0b 100644 --- a/tests/stdlib/talgorithm.nim +++ b/tests/stdlib/talgorithm.nim @@ -7,7 +7,7 @@ discard """ #12928,10456 import std/[sequtils, algorithm, json, sugar] -import std/assertions +import std/[assertions, objectequals] proc test() = try: diff --git a/tests/stdlib/tgenast.nim b/tests/stdlib/tgenast.nim index d99c9312e9a1..9259462cb39a 100644 --- a/tests/stdlib/tgenast.nim +++ b/tests/stdlib/tgenast.nim @@ -7,7 +7,7 @@ discard """ import std/genasts import std/macros from std/strformat import `&` -import std/assertions +import std/[assertions, objectequals] import ./mgenast proc main = diff --git a/tests/stdlib/timportutils.nim b/tests/stdlib/timportutils.nim index 67209228297e..c15596ee2bc6 100644 --- a/tests/stdlib/timportutils.nim +++ b/tests/stdlib/timportutils.nim @@ -2,7 +2,7 @@ discard """ matrix: "--mm:refc; --mm:orc" """ -import std/[importutils, assertions] +import std/[importutils, assertions, objectequals] import stdtest/testutils import mimportutils diff --git a/tests/stdlib/tjson.nim b/tests/stdlib/tjson.nim index e425501f699e..53d7a9b6af8b 100644 --- a/tests/stdlib/tjson.nim +++ b/tests/stdlib/tjson.nim @@ -14,7 +14,7 @@ when not defined(js): import std/streams import stdtest/testutils from std/fenv import epsilon -import std/[assertions, objectdollar] +import std/[assertions, objectdollar, objectequals] proc testRoundtrip[T](t: T, expected: string) = # checks that `T => json => T2 => json2` is such that json2 = json diff --git a/tests/stdlib/tjsonmacro.nim b/tests/stdlib/tjsonmacro.nim index 5a1b4b2944be..ca9f4ed3e490 100644 --- a/tests/stdlib/tjsonmacro.nim +++ b/tests/stdlib/tjsonmacro.nim @@ -5,7 +5,7 @@ discard """ """ import json, strutils, options, tables -import std/assertions +import std/[assertions, objectequals] # The definition of the `%` proc needs to be here, since the `% c` calls below # can only find our custom `%` proc for `Pix` if defined in global scope. diff --git a/tests/stdlib/tjsonutils.nim b/tests/stdlib/tjsonutils.nim index 9acf4c9e545e..c9418cdfa1e9 100644 --- a/tests/stdlib/tjsonutils.nim +++ b/tests/stdlib/tjsonutils.nim @@ -8,7 +8,7 @@ import std/json from std/math import isNaN, signbit from std/fenv import epsilon from stdtest/testutils import whenRuntimeJs -import std/[assertions, objectdollar] +import std/[assertions, objectdollar, objectequals] proc testRoundtrip[T](t: T, expected: string) = # checks that `T => json => T2 => json2` is such that json2 = json diff --git a/tests/stdlib/tmarshal.nim b/tests/stdlib/tmarshal.nim index 32991ccc911c..a495b0878b61 100644 --- a/tests/stdlib/tmarshal.nim +++ b/tests/stdlib/tmarshal.nim @@ -3,7 +3,7 @@ discard """ """ import std/marshal -import std/[assertions, objectdollar, streams] +import std/[assertions, objectdollar, objectequals, streams] # TODO: add static tests diff --git a/tests/stdlib/tposix.nim b/tests/stdlib/tposix.nim index 060482229a4b..2e41d5da907d 100644 --- a/tests/stdlib/tposix.nim +++ b/tests/stdlib/tposix.nim @@ -8,7 +8,7 @@ discard """ when not defined(windows): import posix - import std/[assertions, syncio] + import std/[assertions, syncio, objectequals] var u: Utsname diff --git a/tests/stdlib/trandom.nim b/tests/stdlib/trandom.nim index eb32f7757569..8d7817dd2a4c 100644 --- a/tests/stdlib/trandom.nim +++ b/tests/stdlib/trandom.nim @@ -2,7 +2,7 @@ discard """ joinable: false # to avoid messing with global rand state matrix: "--mm:refc; --mm:orc; --backend:js --jsbigint64:off -d:nimStringHash2; --backend:js --jsbigint64:on" """ -import std/[assertions, formatfloat] +import std/[assertions, formatfloat, objectequals] import std/[random, math, stats, sets, tables] import std/private/jsutils when not defined(js): diff --git a/tests/stdlib/tsequtils.nim b/tests/stdlib/tsequtils.nim index 1094ae2335eb..5bde008855fd 100644 --- a/tests/stdlib/tsequtils.nim +++ b/tests/stdlib/tsequtils.nim @@ -8,7 +8,7 @@ discard """ import std/sequtils import strutils from algorithm import sorted -import std/assertions +import std/[assertions, objectequals] {.experimental: "strictEffects".} {.push warningAsError[Effect]: on.} diff --git a/tests/stdlib/tsortcall.nim b/tests/stdlib/tsortcall.nim index 32e004921477..8a29cabf5eb1 100644 --- a/tests/stdlib/tsortcall.nim +++ b/tests/stdlib/tsortcall.nim @@ -4,6 +4,7 @@ discard """ import algorithm import unittest +import std/objectequals suite "test sort, sorted, and isSorted procs": diff --git a/tests/stdlib/tsugar.nim b/tests/stdlib/tsugar.nim index 2ea96cfbbf6e..cb50dc0e36fe 100644 --- a/tests/stdlib/tsugar.nim +++ b/tests/stdlib/tsugar.nim @@ -6,7 +6,7 @@ x + y = 30 ''' """ import std/[sugar, algorithm, random, sets, tables, strutils, sequtils] -import std/[syncio, assertions] +import std/[syncio, assertions, objectequals] type # for capture test, ref #20679 FooCapture = ref object diff --git a/tests/stdlib/ttables.nim b/tests/stdlib/ttables.nim index c529aff9fb85..70e0e961893f 100644 --- a/tests/stdlib/ttables.nim +++ b/tests/stdlib/ttables.nim @@ -3,7 +3,7 @@ discard """ """ import tables, hashes -import std/assertions +import std/[assertions, objectequals] type Person = object diff --git a/tests/stdlib/ttimes.nim b/tests/stdlib/ttimes.nim index 0f04168dc6cd..3ca9dad971c4 100644 --- a/tests/stdlib/ttimes.nim +++ b/tests/stdlib/ttimes.nim @@ -3,7 +3,7 @@ discard """ """ import times, strutils, unittest -import std/assertions +import std/[assertions, objectequals] when not defined(js): import os diff --git a/tests/stdlib/tunittest.nim b/tests/stdlib/tunittest.nim index 0442c7863b25..0216acbd6bd8 100644 --- a/tests/stdlib/tunittest.nim +++ b/tests/stdlib/tunittest.nim @@ -23,7 +23,7 @@ matrix: "--mm:refc; --mm:orc" targets: "c js" """ -import std/[unittest, sequtils, assertions] +import std/[unittest, sequtils, assertions, objectequals] from std/unittest {.all.} import matchFilter proc doThings(spuds: var int): int = diff --git a/tests/stdlib/turi.nim b/tests/stdlib/turi.nim index 9c717c5b159a..27435be60e12 100644 --- a/tests/stdlib/turi.nim +++ b/tests/stdlib/turi.nim @@ -6,7 +6,7 @@ discard """ import std/uri from std/uri {.all.} as uri2 import removeDotSegments from std/sequtils import toSeq -import std/assertions +import std/[assertions, objectequals] template main() = block: # encodeUrl, decodeUrl diff --git a/tests/stdlib/twrapnils.nim b/tests/stdlib/twrapnils.nim index 3da230b5e4f1..717355cd6f5c 100644 --- a/tests/stdlib/twrapnils.nim +++ b/tests/stdlib/twrapnils.nim @@ -4,7 +4,7 @@ discard """ import std/wrapnils from std/options import get, isSome -import std/assertions +import std/[assertions, objectequals] proc checkNotZero(x: float): float = doAssert x != 0