summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2019-11-05 11:05:46 +0100
committerMiran <narimiran@disroot.org>2019-11-05 11:05:46 +0100
commit3ba3307d61319984e3e8b1061f38402d53cf8f60 (patch)
treed01213de137a5f3216b5c8cf4cacb16c06c686e6
parentffa9a7405fe55f91d3816d3cf4b3b1b82ede21ff (diff)
downloadNim-3ba3307d61319984e3e8b1061f38402d53cf8f60.tar.gz
remove deprecated procs (#12535)
-rw-r--r--lib/impure/nre.nim6
-rw-r--r--lib/pure/json.nim16
-rw-r--r--lib/pure/os.nim7
-rw-r--r--lib/pure/pegs.nim6
-rw-r--r--lib/pure/strutils.nim278
-rw-r--r--lib/std/editdistance.nim10
-rw-r--r--lib/system.nim90
-rw-r--r--testament/categories.nim70
-rw-r--r--tests/async/twinasyncrw.nim4
-rw-r--r--tests/ccgbugs/taddhigh.nim2
-rw-r--r--tests/concepts/matrixalgo.nim4
-rw-r--r--tests/concepts/t3330.nim20
-rw-r--r--tests/deps/opengl-1.1.0/opengl.nim2
-rw-r--r--tests/destructor/tnewruntime_strutils.nim8
-rw-r--r--tests/gc/closureleak.nim4
-rw-r--r--tests/iter/titer10.nim2
-rw-r--r--tests/macros/tmacrogensym.nim4
-rw-r--r--tests/manyloc/keineschweine/enet_server/enet_client.nim2
-rw-r--r--tests/manyloc/keineschweine/server/sg_lobby.nim2
-rw-r--r--tests/manyloc/named_argument_bug/tri_engine/gfx/gl/primitive.nim6
-rw-r--r--tests/manyloc/named_argument_bug/tri_engine/math/vec.nim4
-rw-r--r--tests/metatype/tstaticvector.nim2
-rw-r--r--tests/misc/tsortdev.nim2
-rw-r--r--tests/misc/tstrange.nim2
-rw-r--r--tests/niminaction/Chapter1/various1.nim2
-rw-r--r--tests/niminaction/Chapter2/various2.nim4
-rw-r--r--tests/niminaction/Chapter3/various3.nim2
-rw-r--r--tests/niminaction/Chapter6/WikipediaStats/concurrency.nim4
-rw-r--r--tests/niminaction/Chapter6/WikipediaStats/concurrency_regex.nim4
-rw-r--r--tests/niminaction/Chapter6/WikipediaStats/parallel_counts.nim4
-rw-r--r--tests/niminaction/Chapter6/WikipediaStats/race_condition.nim2
-rw-r--r--tests/niminaction/Chapter6/WikipediaStats/unguarded_access.nim2
-rw-r--r--tests/niminaction/Chapter7/Tweeter/src/database.nim4
-rw-r--r--tests/parallel/tmissing_deepcopy.nim4
-rw-r--r--tests/parallel/tsimple_array_checks.nim4
-rw-r--r--tests/parallel/twrong_refcounts.nim56
-rw-r--r--tests/showoff/tdrdobbs_examples.nim2
-rw-r--r--tests/statictypes/tpassthruarith.nim2
-rw-r--r--tests/stdlib/tstrutil.nim29
39 files changed, 111 insertions, 567 deletions
diff --git a/lib/impure/nre.nim b/lib/impure/nre.nim
index f0b3074f9..728b9ef30 100644
--- a/lib/impure/nre.nim
+++ b/lib/impure/nre.nim
@@ -357,11 +357,13 @@ iterator items*(pattern: Captures,
 
 proc toSeq*(pattern: CaptureBounds,
             default = none(HSlice[int, int])): seq[Option[HSlice[int, int]]] =
-  accumulateResult(pattern.items(default))
+  result = @[]
+  for it in pattern.items(default): result.add it
 
 proc toSeq*(pattern: Captures,
             default: Option[string] = none(string)): seq[Option[string]] =
-  accumulateResult(pattern.items(default))
+  result = @[]
+  for it in pattern.items(default): result.add it
 
 proc `$`*(pattern: RegexMatch): string =
   return pattern.captures[-1]
diff --git a/lib/pure/json.nim b/lib/pure/json.nim
index 4e88b6528..ff65787d2 100644
--- a/lib/pure/json.nim
+++ b/lib/pure/json.nim
@@ -234,10 +234,6 @@ proc getBiggestInt*(n: JsonNode, default: BiggestInt = 0): BiggestInt =
   if n.isNil or n.kind != JInt: return default
   else: return n.num
 
-proc getNum*(n: JsonNode, default: BiggestInt = 0): BiggestInt {.deprecated:
-  "Deprecated since v0.18.2; use 'getInt' or 'getBiggestInt' instead".} =
-  getBiggestInt(n, default)
-
 proc getFloat*(n: JsonNode, default: float = 0.0): float =
   ## Retrieves the float value of a `JFloat JsonNode`.
   ##
@@ -248,10 +244,6 @@ proc getFloat*(n: JsonNode, default: float = 0.0): float =
   of JInt: return float(n.num)
   else: return default
 
-proc getFNum*(n: JsonNode, default: float = 0.0): float {.deprecated:
-  "Deprecated since v0.18.2; use 'getFloat' instead".} =
-  getFloat(n, default)
-
 proc getBool*(n: JsonNode, default: bool = false): bool =
   ## Retrieves the bool value of a `JBool JsonNode`.
   ##
@@ -259,10 +251,6 @@ proc getBool*(n: JsonNode, default: bool = false): bool =
   if n.isNil or n.kind != JBool: return default
   else: return n.bval
 
-proc getBVal*(n: JsonNode, default: bool = false): bool {.deprecated:
-  "Deprecated since v0.18.2; use 'getBool' instead".} =
-  getBool(n, default)
-
 proc getFields*(n: JsonNode,
     default = initOrderedTable[string, JsonNode](4)):
         OrderedTable[string, JsonNode] =
@@ -502,10 +490,6 @@ proc contains*(node: JsonNode, val: JsonNode): bool =
   assert(node.kind == JArray)
   find(node.elems, val) >= 0
 
-proc existsKey*(node: JsonNode, key: string): bool {.
-    deprecated: "use 'hasKey' instead".} =
-  node.hasKey(key)
-
 proc `{}`*(node: JsonNode, keys: varargs[string]): JsonNode =
   ## Traverses the node and gets the given value. If any of the
   ## keys do not exist, returns ``nil``. Also returns ``nil`` if one of the
diff --git a/lib/pure/os.nim b/lib/pure/os.nim
index c5d66f1ee..39984fe42 100644
--- a/lib/pure/os.nim
+++ b/lib/pure/os.nim
@@ -41,11 +41,6 @@
 ## * `dynlib module <dynlib.html>`_
 ## * `streams module <streams.html>`_
 
-
-{.deadCodeElim: on.}  # dce option deprecated
-
-{.push debugger: off.}
-
 include "system/inclrtl"
 
 import
@@ -3131,8 +3126,6 @@ proc getCurrentProcessId*(): int {.noNimScript.} =
   else:
     result = getpid()
 
-{.pop.}
-
 proc setLastModificationTime*(file: string, t: times.Time) {.noNimScript.} =
   ## Sets the `file`'s last modification time. `OSError` is raised in case of
   ## an error.
diff --git a/lib/pure/pegs.nim b/lib/pure/pegs.nim
index f9620e823..3c3941285 100644
--- a/lib/pure/pegs.nim
+++ b/lib/pure/pegs.nim
@@ -1154,7 +1154,8 @@ proc findAll*(s: string, pattern: Peg, start = 0): seq[string] {.
   noSideEffect, rtl, extern: "npegs$1".} =
   ## returns all matching *substrings* of `s` that match `pattern`.
   ## If it does not match, @[] is returned.
-  accumulateResult(findAll(s, pattern, start))
+  result = @[]
+  for it in findAll(s, pattern, start): result.add it
 
 when not defined(nimhygiene):
   {.pragma: inject.}
@@ -1372,7 +1373,8 @@ iterator split*(s: string, sep: Peg): string =
 proc split*(s: string, sep: Peg): seq[string] {.
   noSideEffect, rtl, extern: "npegs$1".} =
   ## Splits the string `s` into substrings.
-  accumulateResult(split(s, sep))
+  result = @[]
+  for it in split(s, sep): result.add it
 
 # ------------------- scanner -------------------------------------------------
 
diff --git a/lib/pure/strutils.nim b/lib/pure/strutils.nim
index 635a0b828..3d455fd30 100644
--- a/lib/pure/strutils.nim
+++ b/lib/pure/strutils.nim
@@ -80,21 +80,8 @@ when defined(nimVmExportFixed):
   from unicode import toLower, toUpper
   export toLower, toUpper
 
-{.deadCodeElim: on.} # dce option deprecated
-
-{.push debugger: off.} # the user does not want to trace a part
-                       # of the standard library!
-
 include "system/inclrtl"
 
-{.pop.}
-
-# Support old split with set[char]
-when defined(nimOldSplit):
-  {.pragma: deprecatedSplit, deprecated.}
-else:
-  {.pragma: deprecatedSplit.}
-
 const
   Whitespace* = {' ', '\t', '\v', '\r', '\l', '\f'}
     ## All the characters that count as whitespace (space, tab, vertical tab,
@@ -2863,110 +2850,6 @@ iterator tokenize*(s: string, seps: set[char] = Whitespace): tuple[
       break
     i = j
 
-
-
-
-
-# --------------------------------------------------------------------------
-# Deprecated procs
-
-{.push warning[Deprecated]: off.}
-proc editDistance*(a, b: string): int {.noSideEffect,
-  rtl, extern: "nsuEditDistance",
-  deprecated: "use editdistance.editDistanceAscii instead".} =
-  ## Returns the edit distance between `a` and `b`.
-  ##
-  ## This uses the `Levenshtein`:idx: distance algorithm with only a linear
-  ## memory overhead.
-  var len1 = a.len
-  var len2 = b.len
-  if len1 > len2:
-    # make `b` the longer string
-    return editDistance(b, a)
-
-  # strip common prefix:
-  var s = 0
-  while s < len1 and a[s] == b[s]:
-    inc(s)
-    dec(len1)
-    dec(len2)
-  # strip common suffix:
-  while len1 > 0 and len2 > 0 and a[s+len1-1] == b[s+len2-1]:
-    dec(len1)
-    dec(len2)
-  # trivial cases:
-  if len1 == 0: return len2
-  if len2 == 0: return len1
-
-  # another special case:
-  if len1 == 1:
-    for j in s..s+len2-1:
-      if a[s] == b[j]: return len2 - 1
-    return len2
-
-  inc(len1)
-  inc(len2)
-  var half = len1 shr 1
-  # initialize first row:
-  #var row = cast[ptr array[0..high(int) div 8, int]](alloc(len2*sizeof(int)))
-  var row: seq[int]
-  newSeq(row, len2)
-  var e = s + len2 - 1 # end marker
-  for i in 1..len2 - half - 1: row[i] = i
-  row[0] = len1 - half - 1
-  for i in 1 .. len1 - 1:
-    var char1 = a[i + s - 1]
-    var char2p: int
-    var diff, x: int
-    var p: int
-    if i >= len1 - half:
-      # skip the upper triangle:
-      var offset = i - len1 + half
-      char2p = offset
-      p = offset
-      var c3 = row[p] + ord(char1 != b[s + char2p])
-      inc(p)
-      inc(char2p)
-      x = row[p] + 1
-      diff = x
-      if x > c3: x = c3
-      row[p] = x
-      inc(p)
-    else:
-      p = 1
-      char2p = 0
-      diff = i
-      x = i
-    if i <= half + 1:
-      # skip the lower triangle:
-      e = len2 + i - half - 2
-    # main:
-    while p <= e:
-      dec(diff)
-      var c3 = diff + ord(char1 != b[char2p + s])
-      inc(char2p)
-      inc(x)
-      if x > c3: x = c3
-      diff = row[p] + 1
-      if x > diff: x = diff
-      row[p] = x
-      inc(p)
-    # lower triangle sentinel:
-    if i <= half:
-      dec(diff)
-      var c3 = diff + ord(char1 != b[char2p + s])
-      inc(x)
-      if x > c3: x = c3
-      row[p] = x
-  result = row[e]
-{.pop.}
-
-proc isNilOrEmpty*(s: string): bool {.noSideEffect, procvar, rtl,
-                                      extern: "nsuIsNilOrEmpty",
-                                      deprecated: "use 'x.len == 0' instead".} =
-  ## Checks if `s` is nil or empty.
-  result = len(s) == 0
-
 proc isNilOrWhitespace*(s: string): bool {.noSideEffect, procvar, rtl,
     extern: "nsuIsNilOrWhitespace".} =
   ## Checks if `s` is nil or consists entirely of whitespace characters.
@@ -2975,167 +2858,6 @@ proc isNilOrWhitespace*(s: string): bool {.noSideEffect, procvar, rtl,
     if not c.isSpaceAscii():
       return false
 
-template isImpl(call) =
-  if s.len == 0: return false
-  result = true
-  for c in s:
-    if not call(c): return false
-
-proc isAlphaAscii*(s: string): bool {.noSideEffect, procvar,
-  rtl, extern: "nsuIsAlphaAsciiStr",
-  deprecated: "Deprecated since version 0.20 since its semantics are unclear".} =
-  ## Checks whether or not `s` is alphabetical.
-  ##
-  ## This checks a-z, A-Z ASCII characters only.
-  ## Returns true if all characters in `s` are
-  ## alphabetic and there is at least one character
-  ## in `s`.
-  ## Use `Unicode module<unicode.html>`_ for UTF-8 support.
-  runnableExamples:
-    doAssert isAlphaAscii("fooBar") == true
-    doAssert isAlphaAscii("fooBar1") == false
-    doAssert isAlphaAscii("foo Bar") == false
-  isImpl isAlphaAscii
-
-proc isAlphaNumeric*(s: string): bool {.noSideEffect, procvar,
-  rtl, extern: "nsuIsAlphaNumericStr",
-  deprecated: "Deprecated since version 0.20 since its semantics are unclear".} =
-  ## Checks whether or not `s` is alphanumeric.
-  ##
-  ## This checks a-z, A-Z, 0-9 ASCII characters only.
-  ## Returns true if all characters in `s` are
-  ## alpanumeric and there is at least one character
-  ## in `s`.
-  ## Use `Unicode module<unicode.html>`_ for UTF-8 support.
-  runnableExamples:
-    doAssert isAlphaNumeric("fooBar") == true
-    doAssert isAlphaNumeric("fooBar1") == true
-    doAssert isAlphaNumeric("foo Bar") == false
-  isImpl isAlphaNumeric
-
-proc isDigit*(s: string): bool {.noSideEffect, procvar,
-  rtl, extern: "nsuIsDigitStr",
-  deprecated: "Deprecated since version 0.20 since its semantics are unclear".} =
-  ## Checks whether or not `s` is a numeric value.
-  ##
-  ## This checks 0-9 ASCII characters only.
-  ## Returns true if all characters in `s` are
-  ## numeric and there is at least one character
-  ## in `s`.
-  runnableExamples:
-    doAssert isDigit("1908") == true
-    doAssert isDigit("fooBar1") == false
-  isImpl isDigit
-
-proc isSpaceAscii*(s: string): bool {.noSideEffect, procvar,
-  rtl, extern: "nsuIsSpaceAsciiStr",
-  deprecated: "Deprecated since version 0.20 since its semantics are unclear".} =
-  ## Checks whether or not `s` is completely whitespace.
-  ##
-  ## Returns true if all characters in `s` are whitespace
-  ## characters and there is at least one character in `s`.
-  runnableExamples:
-    doAssert isSpaceAscii("   ") == true
-    doAssert isSpaceAscii("") == false
-  isImpl isSpaceAscii
-
-template isCaseImpl(s, charProc, skipNonAlpha) =
-  var hasAtleastOneAlphaChar = false
-  if s.len == 0: return false
-  for c in s:
-    if skipNonAlpha:
-      var charIsAlpha = c.isAlphaAscii()
-      if not hasAtleastOneAlphaChar:
-        hasAtleastOneAlphaChar = charIsAlpha
-      if charIsAlpha and (not charProc(c)):
-        return false
-    else:
-      if not charProc(c):
-        return false
-  return if skipNonAlpha: hasAtleastOneAlphaChar else: true
-
-proc isLowerAscii*(s: string, skipNonAlpha: bool): bool {.
-  deprecated: "Deprecated since version 0.20 since its semantics are unclear".} =
-  ## Checks whether ``s`` is lower case.
-  ##
-  ## This checks ASCII characters only.
-  ##
-  ## If ``skipNonAlpha`` is true, returns true if all alphabetical
-  ## characters in ``s`` are lower case.  Returns false if none of the
-  ## characters in ``s`` are alphabetical.
-  ##
-  ## If ``skipNonAlpha`` is false, returns true only if all characters
-  ## in ``s`` are alphabetical and lower case.
-  ##
-  ## For either value of ``skipNonAlpha``, returns false if ``s`` is
-  ## an empty string.
-  ## Use `Unicode module<unicode.html>`_ for UTF-8 support.
-  runnableExamples:
-    doAssert isLowerAscii("1foobar", false) == false
-    doAssert isLowerAscii("1foobar", true) == true
-    doAssert isLowerAscii("1fooBar", true) == false
-  isCaseImpl(s, isLowerAscii, skipNonAlpha)
-
-proc isUpperAscii*(s: string, skipNonAlpha: bool): bool {.
-  deprecated: "Deprecated since version 0.20 since its semantics are unclear".} =
-  ## Checks whether ``s`` is upper case.
-  ##
-  ## This checks ASCII characters only.
-  ##
-  ## If ``skipNonAlpha`` is true, returns true if all alphabetical
-  ## characters in ``s`` are upper case.  Returns false if none of the
-  ## characters in ``s`` are alphabetical.
-  ##
-  ## If ``skipNonAlpha`` is false, returns true only if all characters
-  ## in ``s`` are alphabetical and upper case.
-  ##
-  ## For either value of ``skipNonAlpha``, returns false if ``s`` is
-  ## an empty string.
-  ## Use `Unicode module<unicode.html>`_ for UTF-8 support.
-  runnableExamples:
-    doAssert isUpperAscii("1FOO", false) == false
-    doAssert isUpperAscii("1FOO", true) == true
-    doAssert isUpperAscii("1Foo", true) == false
-  isCaseImpl(s, isUpperAscii, skipNonAlpha)
-
-proc wordWrap*(s: string, maxLineWidth = 80,
-               splitLongWords = true,
-               seps: set[char] = Whitespace,
-               newLine = "\n"): string {.
-               noSideEffect, rtl, extern: "nsuWordWrap",
-               deprecated: "use wrapWords in std/wordwrap instead".} =
-  ## Word wraps `s`.
-  result = newStringOfCap(s.len + s.len shr 6)
-  var spaceLeft = maxLineWidth
-  var lastSep = ""
-  for word, isSep in tokenize(s, seps):
-    if isSep:
-      lastSep = word
-      spaceLeft = spaceLeft - len(word)
-      continue
-    if len(word) > spaceLeft:
-      if splitLongWords and len(word) > maxLineWidth:
-        result.add(substr(word, 0, spaceLeft-1))
-        var w = spaceLeft
-        var wordLeft = len(word) - spaceLeft
-        while wordLeft > 0:
-          result.add(newLine)
-          var L = min(maxLineWidth, wordLeft)
-          spaceLeft = maxLineWidth - L
-          result.add(substr(word, w, w+L-1))
-          inc(w, L)
-          dec(wordLeft, L)
-      else:
-        spaceLeft = maxLineWidth - len(word)
-        result.add(newLine)
-        result.add(word)
-    else:
-      spaceLeft = spaceLeft - len(word)
-      result.add(lastSep & word)
-      lastSep.setLen(0)
-
-
-
 when isMainModule:
   proc nonStaticTests =
     doAssert formatBiggestFloat(1234.567, ffDecimal, -1) == "1234.567000"
diff --git a/lib/std/editdistance.nim b/lib/std/editdistance.nim
index 6acb7388f..0cb5edc9b 100644
--- a/lib/std/editdistance.nim
+++ b/lib/std/editdistance.nim
@@ -293,3 +293,13 @@ when isMainModule:
   doAssert editDistanceAscii("", "") == 0
   doAssert editDistanceAscii("kitten", "sitting") == 3 # from Wikipedia
   doAssert editDistanceAscii("flaw", "lawn") == 2 # from Wikipedia
+
+
+  assert(editDistance("prefix__hallo_suffix", "prefix__hallo_suffix") == 0)
+  assert(editDistance("prefix__hallo_suffix", "prefix__hallo_suffi1") == 1)
+  assert(editDistance("prefix__hallo_suffix", "prefix__HALLO_suffix") == 5)
+  assert(editDistance("prefix__hallo_suffix", "prefix__ha_suffix") == 3)
+  assert(editDistance("prefix__hallo_suffix", "prefix") == 14)
+  assert(editDistance("prefix__hallo_suffix", "suffix") == 14)
+  assert(editDistance("prefix__hallo_suffix", "prefix__hao_suffix") == 2)
+  assert(editDistance("main", "malign") == 2)
diff --git a/lib/system.nim b/lib/system.nim
index 333cfaf03..4d0915380 100644
--- a/lib/system.nim
+++ b/lib/system.nim
@@ -164,9 +164,6 @@ proc declared*(x: untyped): bool {.magic: "Defined", noSideEffect, compileTime.}
   ##     # provide our own toUpper proc here, because strutils is
   ##     # missing it.
 
-when defined(useNimRtl):
-  {.deadCodeElim: on.}  # dce option deprecated
-
 proc declaredInScope*(x: untyped): bool {.
   magic: "DefinedInScope", noSideEffect, compileTime.}
   ## Special compile-time procedure that checks whether `x` is
@@ -899,17 +896,6 @@ when defined(nimHasalignOf):
 when defined(nimtypedescfixed):
   proc sizeof*(x: typedesc): int {.magic: "SizeOf", noSideEffect.}
 
-proc `<`*[T](x: Ordinal[T]): T {.magic: "UnaryLt", noSideEffect, deprecated.}
-  ## **Deprecated since version 0.18.0**. For the common excluding range
-  ## write ``0 ..< 10`` instead of ``0 .. < 10`` (look at the spacing).
-  ## For ``<x`` write ``pred(x)``.
-  ##
-  ## Unary ``<`` that can be used for excluding ranges.
-  ## Semantically this is the same as `pred <#pred,T,int>`_.
-  ##
-  ## .. code-block:: Nim
-  ##   for i in 0 .. <10: echo i # => 0 1 2 3 4 5 6 7 8 9
-  ##
 
 proc succ*[T: Ordinal](x: T, y = 1): T {.magic: "Succ", noSideEffect.}
   ## Returns the ``y``-th successor (default: 1) of the value ``x``.
@@ -2597,19 +2583,6 @@ when not defined(js) and not defined(booting) and defined(nimTrMacros):
     # unnecessary slow down in this case.
     swap(cast[ptr pointer](addr arr[a])[], cast[ptr pointer](addr arr[b])[])
 
-
-# undocumented:
-proc getRefcount*[T](x: ref T): int {.importc: "getRefcount", noSideEffect,
-  deprecated: "the refcount was never reliable, the GC does not use traditional refcounting".}
-proc getRefcount*(x: string): int {.importc: "getRefcount", noSideEffect,
-  deprecated: "the refcount was never reliable, the GC does not use traditional refcounting".}
-proc getRefcount*[T](x: seq[T]): int {.importc: "getRefcount", noSideEffect,
-  deprecated: "the refcount was never reliable, the GC does not use traditional refcounting".}
-  ##
-  ## Retrieves the reference count of an heap-allocated object. The
-  ## value is implementation-dependent.
-
-
 const
   Inf* = 0x7FF0000000000000'f64
     ## Contains the IEEE floating point value of positive infinity.
@@ -3337,16 +3310,6 @@ when not defined(nimscript) and hasAlloc:
       {.warning: "GC_getStatistics is a no-op in JavaScript".}
       ""
 
-template accumulateResult*(iter: untyped) {.deprecated: "use `sequtils.toSeq` instead (more hygienic, sometimes more efficient)".} =
-  ## **Deprecated since v0.19.2:** use `sequtils.toSeq
-  ## <sequtils.html#toSeq.t,untyped>`_ instead.
-  ##
-  ## Helps to convert an iterator to a proc.
-  ## `sequtils.toSeq <sequtils.html#toSeq.t,untyped>`_ is more hygienic and efficient.
-  ##
-  result = @[]
-  for x in iter: add(result, x)
-
 # we have to compute this here before turning it off in except.nim anyway ...
 const NimStackTrace = compileOption("stacktrace")
 
@@ -3815,19 +3778,6 @@ when not defined(JS): #and not defined(nimscript):
       var e = getCurrentException()
       return if e == nil: "" else: e.msg
 
-    proc onRaise*(action: proc(e: ref Exception): bool{.closure.}) {.deprecated.} =
-      ## **Deprecated since version 0.18.1**: No good usages of this
-      ## feature are known.
-      ##
-      ## Can be used in a ``try`` statement to setup a Lisp-like
-      ## `condition system`:idx:\: This prevents the 'raise' statement to
-      ## raise an exception but instead calls ``action``.
-      ## If ``action`` returns false, the exception has been handled and
-      ## does not propagate further through the call stack.
-      if not isNil(excHandler):
-        excHandler.hasRaiseAction = true
-        excHandler.raiseAction = action
-
     proc setCurrentException*(exc: ref Exception) {.inline, benign.} =
       ## Sets the current exception.
       ##
@@ -4357,34 +4307,6 @@ proc addQuoted*[T](s: var string, x: T) =
   else:
     s.add($x)
 
-when hasAlloc:
-  # XXX: make these the default (or implement the NilObject optimization)
-  proc safeAdd*[T](x: var seq[T], y: T) {.noSideEffect, deprecated.} =
-    ## Adds ``y`` to ``x`` unless ``x`` is not yet initialized; in that case,
-    ## ``x`` becomes ``@[y]``.
-    when defined(nimNoNilSeqs):
-      x.add(y)
-    else:
-      if x == nil: x = @[y]
-      else: x.add(y)
-
-  proc safeAdd*(x: var string, y: char) {.noSideEffect, deprecated.} =
-    ## Adds ``y`` to ``x``. If ``x`` is ``nil`` it is initialized to ``""``.
-    when defined(nimNoNilSeqs):
-      x.add(y)
-    else:
-      if x == nil: x = ""
-      x.add(y)
-
-  proc safeAdd*(x: var string, y: string) {.noSideEffect, deprecated.} =
-    ## Adds ``y`` to ``x`` unless ``x`` is not yet initialized; in that
-    ## case, ``x`` becomes ``y``.
-    when defined(nimNoNilSeqs):
-      x.add(y)
-    else:
-      if x == nil: x = y
-      else: x.add(y)
-
 proc locals*(): RootObj {.magic: "Plugin", noSideEffect.} =
   ## Generates a tuple constructor expression listing all the local variables
   ## in the current scope.
@@ -4436,18 +4358,6 @@ proc procCall*(x: untyped) {.magic: "ProcCall", compileTime.} =
   ##   procCall someMethod(a, b)
   discard
 
-proc xlen*(x: string): int {.magic: "XLenStr", noSideEffect,
-                             deprecated: "use len() instead".} =
-  ## **Deprecated since version 0.18.1**. Use `len()` instead.
-  discard
-proc xlen*[T](x: seq[T]): int {.magic: "XLenSeq", noSideEffect,
-                                deprecated: "use len() instead".} =
-  ## **Deprecated since version 0.18.1**. Use `len()` instead.
-  ##
-  ## Returns the length of a sequence or a string without testing for 'nil'.
-  ## This is an optimization that rarely makes sense.
-  discard
-
 
 proc `==`*(x, y: cstring): bool {.magic: "EqCString", noSideEffect,
                                    inline.} =
diff --git a/testament/categories.nim b/testament/categories.nim
index 49cf97494..938f88bf5 100644
--- a/testament/categories.nim
+++ b/testament/categories.nim
@@ -322,40 +322,44 @@ proc testNimInAction(r: var TResults, cat: Category, options: string) =
     "niminaction/Chapter8/sdl/sdl_test"
     ]
 
-  # Verify that the files have not been modified. Death shall fall upon
-  # whoever edits these hashes without dom96's permission, j/k. But please only
-  # edit when making a conscious breaking change, also please try to make your
-  # commit message clear and notify me so I can easily compile an errata later.
-  const refHashes = @[
-    "51afdfa84b3ca3d810809d6c4e5037ba",
-    "30f07e4cd5eaec981f67868d4e91cfcf",
-    "d14e7c032de36d219c9548066a97e846",
-    "b335635562ff26ec0301bdd86356ac0c",
-    "6c4add749fbf50860e2f523f548e6b0e",
-    "76de5833a7cc46f96b006ce51179aeb1",
-    "705eff79844e219b47366bd431658961",
-    "a1e87b881c5eb161553d119be8b52f64",
-    "2d706a6ec68d2973ec7e733e6d5dce50",
-    "c11a013db35e798f44077bc0763cc86d",
-    "3e32e2c5e9a24bd13375e1cd0467079c",
-    "a5452722b2841f0c1db030cf17708955",
-    "dc6c45eb59f8814aaaf7aabdb8962294",
-    "69d208d281a2e7bffd3eaf4bab2309b1",
-    "ec05666cfb60211bedc5e81d4c1caf3d",
-    "da520038c153f4054cb8cc5faa617714",
-    "59906c8cd819cae67476baa90a36b8c1",
-    "9a8fe78c588d08018843b64b57409a02",
-    "8b5d28e985c0542163927d253a3e4fc9",
-    "783299b98179cc725f9c46b5e3b5381f",
-    "1a2b3fba1187c68d6a9bfa66854f3318",
-    "391ff57b38d9ea6f3eeb3fe69ab539d3"
-  ]
+  when false:
+    # Verify that the files have not been modified. Death shall fall upon
+    # whoever edits these hashes without dom96's permission, j/k. But please only
+    # edit when making a conscious breaking change, also please try to make your
+    # commit message clear and notify me so I can easily compile an errata later.
+    # ---------------------------------------------------------
+    # Hash-checks are disabled for Nim 1.1 and beyond
+    # since we needed to fix the deprecated unary '<' operator.
+    const refHashes = @[
+      "51afdfa84b3ca3d810809d6c4e5037ba",
+      "30f07e4cd5eaec981f67868d4e91cfcf",
+      "d14e7c032de36d219c9548066a97e846",
+      "b335635562ff26ec0301bdd86356ac0c",
+      "6c4add749fbf50860e2f523f548e6b0e",
+      "76de5833a7cc46f96b006ce51179aeb1",
+      "705eff79844e219b47366bd431658961",
+      "a1e87b881c5eb161553d119be8b52f64",
+      "2d706a6ec68d2973ec7e733e6d5dce50",
+      "c11a013db35e798f44077bc0763cc86d",
+      "3e32e2c5e9a24bd13375e1cd0467079c",
+      "a5452722b2841f0c1db030cf17708955",
+      "dc6c45eb59f8814aaaf7aabdb8962294",
+      "69d208d281a2e7bffd3eaf4bab2309b1",
+      "ec05666cfb60211bedc5e81d4c1caf3d",
+      "da520038c153f4054cb8cc5faa617714",
+      "59906c8cd819cae67476baa90a36b8c1",
+      "9a8fe78c588d08018843b64b57409a02",
+      "8b5d28e985c0542163927d253a3e4fc9",
+      "783299b98179cc725f9c46b5e3b5381f",
+      "1a2b3fba1187c68d6a9bfa66854f3318",
+      "391ff57b38d9ea6f3eeb3fe69ab539d3"
+    ]
+    for i, test in tests:
+      let filename = testsDir / test.addFileExt("nim")
+      let testHash = getMD5(readFile(filename).string)
+      doAssert testHash == refHashes[i], "Nim in Action test " & filename &
+          " was changed: " & $(i: i, testHash: testHash, refHash: refHashes[i])
 
-  for i, test in tests:
-    let filename = testsDir / test.addFileExt("nim")
-    let testHash = getMD5(readFile(filename).string)
-    doAssert testHash == refHashes[i], "Nim in Action test " & filename &
-        " was changed: " & $(i: i, testHash: testHash, refHash: refHashes[i])
   # Run the tests.
   for testfile in tests:
     test "tests/" & testfile & ".nim"
diff --git a/tests/async/twinasyncrw.nim b/tests/async/twinasyncrw.nim
index 6763eb5a2..db10fffce 100644
--- a/tests/async/twinasyncrw.nim
+++ b/tests/async/twinasyncrw.nim
@@ -203,11 +203,11 @@ when defined(windows):
       add(result, c)
 
   proc sendMessages(client: AsyncFD) {.async.} =
-    for i in 0 .. <messagesToSend:
+    for i in 0 ..< messagesToSend:
       await winSend(client, "Message " & $i & "\c\L")
 
   proc launchSwarm(port: Port) {.async.} =
-    for i in 0 .. <swarmSize:
+    for i in 0 ..< swarmSize:
       var sock = newNativeSocket()
       setBlocking(sock, false)
 
diff --git a/tests/ccgbugs/taddhigh.nim b/tests/ccgbugs/taddhigh.nim
index 549eb8caa..6b0658612 100644
--- a/tests/ccgbugs/taddhigh.nim
+++ b/tests/ccgbugs/taddhigh.nim
@@ -14,6 +14,6 @@ s.add x
 s.add s[s.high]
 
 s.add s[s.len-1]
-s.add s[s.xlen-1]
+s.add s[s.len-1]
 
 echo s # @[5, 5, 0]
diff --git a/tests/concepts/matrixalgo.nim b/tests/concepts/matrixalgo.nim
index 39cf16685..98e5b8b4f 100644
--- a/tests/concepts/matrixalgo.nim
+++ b/tests/concepts/matrixalgo.nim
@@ -16,8 +16,8 @@ type
   AnyTransform3D* = AnyMatrix[4, 4, float]
 
 proc transposed*(m: AnyMatrix): m.TransposedType =
-  for r in 0 .. <m.R:
-    for c in 0 .. <m.C:
+  for r in 0 ..< m.R:
+    for c in 0 ..< m.C:
       result[r, c] = m[c, r]
 
 proc determinant*(m: AnySquareMatrix): int =
diff --git a/tests/concepts/t3330.nim b/tests/concepts/t3330.nim
index ab77dd347..067e81133 100644
--- a/tests/concepts/t3330.nim
+++ b/tests/concepts/t3330.nim
@@ -9,33 +9,33 @@ proc test(foo: Foo[int])
   required type for foo: Foo[int]
   but expression 'bar' is of type: Bar[system.int]
 t3330.nim(63, 8) Hint: Non-matching candidates for add(k, string, T)
-proc add[T](x: var seq[T]; y: T)
-  first type mismatch at position: 1
-  required type for x: var seq[T]
-  but expression 'k' is of type: Alias
 proc add(x: var string; y: string)
   first type mismatch at position: 1
   required type for x: var string
   but expression 'k' is of type: Alias
+proc add[T](x: var seq[T]; y: openArray[T])
+  first type mismatch at position: 1
+  required type for x: var seq[T]
+  but expression 'k' is of type: Alias
 proc add(result: var string; x: float)
   first type mismatch at position: 1
   required type for result: var string
   but expression 'k' is of type: Alias
-proc add(x: var string; y: char)
+proc add[T](x: var seq[T]; y: T)
   first type mismatch at position: 1
-  required type for x: var string
+  required type for x: var seq[T]
   but expression 'k' is of type: Alias
 proc add(x: var string; y: cstring)
   first type mismatch at position: 1
   required type for x: var string
   but expression 'k' is of type: Alias
-proc add(result: var string; x: int64)
+proc add(x: var string; y: char)
   first type mismatch at position: 1
-  required type for result: var string
+  required type for x: var string
   but expression 'k' is of type: Alias
-proc add[T](x: var seq[T]; y: openArray[T])
+proc add(result: var string; x: int64)
   first type mismatch at position: 1
-  required type for x: var seq[T]
+  required type for result: var string
   but expression 'k' is of type: Alias
 
 t3330.nim(63, 8) template/generic instantiation of `add` from here
diff --git a/tests/deps/opengl-1.1.0/opengl.nim b/tests/deps/opengl-1.1.0/opengl.nim
index bea0c58ca..55e009a46 100644
--- a/tests/deps/opengl-1.1.0/opengl.nim
+++ b/tests/deps/opengl-1.1.0/opengl.nim
@@ -410,7 +410,7 @@ macro wrapErrorChecking(f: stmt): stmt {.immediate.} =
       body = newStmtList glProc
       returnsSomething = child.params[0].kind != nnkEmpty
       callParams = newSeq[when defined(nimnode): NimNode else: PNimrodNode]()
-    for param in params[1 .. <params.len]:
+    for param in params[1 ..< params.len]:
       callParams.add param[0]
 
     let glCall = newCall(glProc.name, callParams)
diff --git a/tests/destructor/tnewruntime_strutils.nim b/tests/destructor/tnewruntime_strutils.nim
index dd190a1b6..54ce4acea 100644
--- a/tests/destructor/tnewruntime_strutils.nim
+++ b/tests/destructor/tnewruntime_strutils.nim
@@ -1,9 +1,9 @@
 discard """
   cmd: '''nim c --newruntime $file'''
-  output: '''443 443'''
+  output: '''422 422'''
 """
 
-import strutils, os
+import strutils, os, std / wordwrap
 
 import core / allocators
 import system / ansi_c
@@ -76,12 +76,12 @@ proc staticTests =
     inp = """ this is a long text --  muchlongerthan10chars and here
                 it goes"""
     outp = " this is a\nlong text\n--\nmuchlongerthan10chars\nand here\nit goes"
-  doAssert wordWrap(inp, 10, false) == outp
+  doAssert wrapWords(inp, 10, false) == outp
 
   let
     longInp = """ThisIsOneVeryLongStringWhichWeWillSplitIntoEightSeparatePartsNow"""
     longOutp = "ThisIsOn\neVeryLon\ngStringW\nhichWeWi\nllSplitI\nntoEight\nSeparate\nPartsNow"
-  doAssert wordWrap(longInp, 8, true) == longOutp
+  doAssert wrapWords(longInp, 8, true) == longOutp
 
   doAssert "$animal eats $food." % ["animal", "The cat", "food", "fish"] ==
             "The cat eats fish."
diff --git a/tests/gc/closureleak.nim b/tests/gc/closureleak.nim
index d2ecc0b54..f86a936d8 100644
--- a/tests/gc/closureleak.nim
+++ b/tests/gc/closureleak.nim
@@ -22,10 +22,10 @@ proc newFoo*(): ref TFoo =
   alive_foos.add result.id
   inc foo_counter
 
-for i in 0 .. <10:
+for i in 0 ..< 10:
  discard newFoo()
 
-for i in 0 .. <10:
+for i in 0 ..< 10:
   let f = newFoo()
   f.fn = proc =
     echo f.id
diff --git a/tests/iter/titer10.nim b/tests/iter/titer10.nim
index 9c76b62e1..ae36aa519 100644
--- a/tests/iter/titer10.nim
+++ b/tests/iter/titer10.nim
@@ -40,7 +40,7 @@ when true:
                  @[2, 3]]
 
   iterator threadUniqs(seq1: seq[seq[int]]): seq[seq[int]] =
-    for i in 0 .. <seq1.len:
+    for i in 0 ..< seq1.len:
       block:
         let i = i
         yield seq1.filter do (x: seq[int]) -> bool: x[0] == seq1[i][0]
diff --git a/tests/macros/tmacrogensym.nim b/tests/macros/tmacrogensym.nim
index 1237b8bf7..15a08c574 100644
--- a/tests/macros/tmacrogensym.nim
+++ b/tests/macros/tmacrogensym.nim
@@ -8,7 +8,7 @@ proc convertReturns(node, retFutureSym: NimNode): NimNode {.compileTime.} =
     result = newCall(newIdentNode("complete"), retFutureSym, node[0])
   else:
     result = node
-    for i in 0 .. <node.len:
+    for i in 0 ..< node.len:
       result[i] = convertReturns(node[i], retFutureSym)
 
 macro async2(prc: untyped): untyped =
@@ -51,7 +51,7 @@ macro async2(prc: untyped): untyped =
   result = prc
 
   # Remove the 'closure' pragma.
-  for i in 0 .. <result[4].len:
+  for i in 0 ..< result[4].len:
     if result[4][i].ident == !"async":
       result[4].del(i)
 
diff --git a/tests/manyloc/keineschweine/enet_server/enet_client.nim b/tests/manyloc/keineschweine/enet_server/enet_client.nim
index 7b8576a14..7aa7b9c2f 100644
--- a/tests/manyloc/keineschweine/enet_server/enet_client.nim
+++ b/tests/manyloc/keineschweine/enet_server/enet_client.nim
@@ -197,7 +197,7 @@ proc lobbyInit*() =
     messageArea.scrollBack -= 1
     update(messageArea))
   gui.newButton(text = "Flood msg area", position = vec2f(185, 30), onClick = proc(b: PButton) =
-    for i in 0.. <30:
+    for i in 0..< 30:
       dispMessage($i))"""
   dirServer = newServer()
   dirServer.addHandler HChat, handleChat
diff --git a/tests/manyloc/keineschweine/server/sg_lobby.nim b/tests/manyloc/keineschweine/server/sg_lobby.nim
index d83f35726..d7e01e6e6 100644
--- a/tests/manyloc/keineschweine/server/sg_lobby.nim
+++ b/tests/manyloc/keineschweine/server/sg_lobby.nim
@@ -243,7 +243,7 @@ proc lobbyInit*() =
     messageArea.scrollBack -= 1
     update(messageArea))
   gui.newButton(text = "Flood msg area", position = vec2f(185, 30), onClick = proc(b: PButton) =
-    for i in 0.. <30:
+    for i in 0..< 30:
       dispMessage($i))
 
 var i = 0
diff --git a/tests/manyloc/named_argument_bug/tri_engine/gfx/gl/primitive.nim b/tests/manyloc/named_argument_bug/tri_engine/gfx/gl/primitive.nim
index 8c26c04eb..3bfaf1cbc 100644
--- a/tests/manyloc/named_argument_bug/tri_engine/gfx/gl/primitive.nim
+++ b/tests/manyloc/named_argument_bug/tri_engine/gfx/gl/primitive.nim
@@ -61,7 +61,7 @@ proc newPrimitive*(verts: var seq[TVert],
                    color=white(),
                    z: TZ_range=0): PPrimitive =
   var indices = newSeq[GLushort](verts.len)
-  for i in 0 .. <verts.len:
+  for i in 0 ..< verts.len:
     indices[i] = i.GLushort
 
   new(result)
@@ -108,7 +108,7 @@ proc updVerts*(o: PPrimitive, start, `end`: int, f: proc(i: int, vert: var TVert
                    cast[GLvoid](cast[int](o.verts[0].addr) + byteOffset))
 
 proc updAllVerts(o: PPrimitive, f: proc(i: int, vert: var TVert)) =
-  for i in 0 .. <o.verts.len:
+  for i in 0 ..< o.verts.len:
     f(i, o.verts[i])
 
   ?glBindBuffer(GLarrayBuffer, o.arrBufId)
@@ -132,7 +132,7 @@ proc newVertCircle*(circle: TCircle, nSegs: Natural=0): seq[TVert] =
 
   result = newSeq[TVert](nSegs)
   #result[0] = newVert(circle.p, newV2xy(0.5))
-  for i in 1 .. <nSegs:
+  for i in 1 ..< nSegs:
     let pos = newV2(x + circle.p.x, y + circle.p.y)
     let texCoord = pos * newV2xy(1.0 / circle.r)
 
diff --git a/tests/manyloc/named_argument_bug/tri_engine/math/vec.nim b/tests/manyloc/named_argument_bug/tri_engine/math/vec.nim
index 926958fe4..18ede6100 100644
--- a/tests/manyloc/named_argument_bug/tri_engine/math/vec.nim
+++ b/tests/manyloc/named_argument_bug/tri_engine/math/vec.nim
@@ -14,7 +14,7 @@ type
 # TODO: Change to TVT when compiler issue is resolved.
 proc `$`*[T](o: TV2[T]): string =
   result = "("
-  for i in 0 .. <o.len:
+  for i in 0 ..< o.len:
     result &= $o[0]
     if i != o.len - 1:
       result &= ", "
@@ -47,7 +47,7 @@ proc `+`*(lhs: TV2[TR], rhs: TV2[TR]): TV2[TR] =
 #    result += a[i] * b[i]
 
 proc dot[T](a, b: TV2[T]): T =
-  for i in 0 .. <a.len:
+  for i in 0 ..< a.len:
     result += a[i] * b[i]
 
 assert dot(newV2(), newV2()) == 0.0
diff --git a/tests/metatype/tstaticvector.nim b/tests/metatype/tstaticvector.nim
index 1a7bdeafe..ca16518fe 100644
--- a/tests/metatype/tstaticvector.nim
+++ b/tests/metatype/tstaticvector.nim
@@ -61,7 +61,7 @@ proc row*(a: TMatrix; i: int): auto =
 
 proc col*(a: TMatrix; j: int): auto =
   result = TVec[TMatrix.N, TMatrix.T]()
-  for idx in 0 .. <TMatrix.N:
+  for idx in 0 ..< TMatrix.N:
     result.data[idx] = a.data[(TMatrix.N * (idx)) + (j-1)]
 
 proc mul*(a: TMat4f; b: TMat4f): TMat4f =
diff --git a/tests/misc/tsortdev.nim b/tests/misc/tsortdev.nim
index 0b2a4f3e8..6a290577b 100644
--- a/tests/misc/tsortdev.nim
+++ b/tests/misc/tsortdev.nim
@@ -39,7 +39,7 @@ proc cmpPlatforms(a, b: string): int =
 
 proc sorted[T](a: openArray[T]): bool =
   result = true
-  for i in 0 .. < a.high:
+  for i in 0 ..< a.high:
     if cmpPlatforms(a[i], a[i+1]) > 0:
       echo "Out of order: ", a[i], " ", a[i+1]
       result = false
diff --git a/tests/misc/tstrange.nim b/tests/misc/tstrange.nim
index 82a82d267..f8c063240 100644
--- a/tests/misc/tstrange.nim
+++ b/tests/misc/tstrange.nim
@@ -24,5 +24,5 @@ write(stdout, ack(5, 4))
 
 # bug #1442
 let h=3
-for x in 0.. <h.int:
+for x in 0 ..< h.int:
   echo x
diff --git a/tests/niminaction/Chapter1/various1.nim b/tests/niminaction/Chapter1/various1.nim
index 688180fd2..4e2cb463d 100644
--- a/tests/niminaction/Chapter1/various1.nim
+++ b/tests/niminaction/Chapter1/various1.nim
@@ -19,7 +19,7 @@ proc showNumber(num: int | float) =
 showNumber(3.14)
 showNumber(42)
 
-for i in 0 .. <10:
+for i in 0 ..< 10:
   echo(i)
 
 block: # Block added due to clash.
diff --git a/tests/niminaction/Chapter2/various2.nim b/tests/niminaction/Chapter2/various2.nim
index 3f6a3f453..dddbdb472 100644
--- a/tests/niminaction/Chapter2/various2.nim
+++ b/tests/niminaction/Chapter2/various2.nim
@@ -202,7 +202,7 @@ block:
 
 block:
   let list = @[4, 8, 15, 16, 23, 42]
-  for i in 0 .. <list.len:
+  for i in 0 ..< list.len:
     stdout.write($list[i] & " ")
 
 var collection: set[int16]
@@ -366,4 +366,4 @@ block:
     Color {.pure.} = enum
       red, green, blue
 
-  let color = Color.red
\ No newline at end of file
+  let color = Color.red
diff --git a/tests/niminaction/Chapter3/various3.nim b/tests/niminaction/Chapter3/various3.nim
index 7b2776d70..711740da8 100644
--- a/tests/niminaction/Chapter3/various3.nim
+++ b/tests/niminaction/Chapter3/various3.nim
@@ -46,7 +46,7 @@ assert obj["username"].str == "Dominik"
 
 block:
   proc count10(): int =
-    for i in 0 .. <10:
+    for i in 0 ..< 10:
       result.inc
   assert count10() == 10
 
diff --git a/tests/niminaction/Chapter6/WikipediaStats/concurrency.nim b/tests/niminaction/Chapter6/WikipediaStats/concurrency.nim
index 766f07fa5..913cd77db 100644
--- a/tests/niminaction/Chapter6/WikipediaStats/concurrency.nim
+++ b/tests/niminaction/Chapter6/WikipediaStats/concurrency.nim
@@ -67,9 +67,9 @@ proc readChunks(filename: string, chunksize = 1000000): Stats =
       # Find where the last line ends
       chunkLen.dec
 
-    responses.add(spawn parse(buffer[0 .. <chunkLen]))
+    responses.add(spawn parse(buffer[0 ..< chunkLen]))
     oldBufferLen = readSize - chunkLen
-    buffer[0 .. <oldBufferLen] = buffer[readSize - oldBufferLen .. ^1]
+    buffer[0 ..< oldBufferLen] = buffer[readSize - oldBufferLen .. ^1]
 
   for resp in responses:
     let statistic = ^resp
diff --git a/tests/niminaction/Chapter6/WikipediaStats/concurrency_regex.nim b/tests/niminaction/Chapter6/WikipediaStats/concurrency_regex.nim
index 19b157926..102313de9 100644
--- a/tests/niminaction/Chapter6/WikipediaStats/concurrency_regex.nim
+++ b/tests/niminaction/Chapter6/WikipediaStats/concurrency_regex.nim
@@ -51,9 +51,9 @@ proc readChunks(filename: string, chunksize = 1000000): Stats =
       # Find where the last line ends
       chunkLen.dec
 
-    responses.add(spawn parse(buffer[0 .. <chunkLen]))
+    responses.add(spawn parse(buffer[0 ..< chunkLen]))
     oldBufferLen = readSize - chunkLen
-    buffer[0 .. <oldBufferLen] = buffer[readSize - oldBufferLen .. ^1]
+    buffer[0 ..< oldBufferLen] = buffer[readSize - oldBufferLen .. ^1]
 
   echo("Spawns: ", responses.len)
   for resp in responses:
diff --git a/tests/niminaction/Chapter6/WikipediaStats/parallel_counts.nim b/tests/niminaction/Chapter6/WikipediaStats/parallel_counts.nim
index 2c4a59d83..379ec7364 100644
--- a/tests/niminaction/Chapter6/WikipediaStats/parallel_counts.nim
+++ b/tests/niminaction/Chapter6/WikipediaStats/parallel_counts.nim
@@ -58,9 +58,9 @@ proc readPageCounts(filename: string, chunkSize = 1_000_000) =
     while chunkLen >= 0 and buffer[chunkLen - 1] notin NewLines:
       chunkLen.dec
 
-    responses.add(spawn parseChunk(buffer[0 .. <chunkLen]))
+    responses.add(spawn parseChunk(buffer[0 ..< chunkLen]))
     oldBufferLen = readSize - chunkLen
-    buffer[0 .. <oldBufferLen] = buffer[readSize - oldBufferLen .. ^1]
+    buffer[0 ..< oldBufferLen] = buffer[readSize - oldBufferLen .. ^1]
 
   var mostPopular = newStats()
   for resp in responses:
diff --git a/tests/niminaction/Chapter6/WikipediaStats/race_condition.nim b/tests/niminaction/Chapter6/WikipediaStats/race_condition.nim
index db68aeb5c..f4b072204 100644
--- a/tests/niminaction/Chapter6/WikipediaStats/race_condition.nim
+++ b/tests/niminaction/Chapter6/WikipediaStats/race_condition.nim
@@ -7,7 +7,7 @@ import threadpool
 var counter = 0
 
 proc increment(x: int) =
-  for i in 0 .. <x:
+  for i in 0 ..< x:
     let value = counter + 1
     counter = value
 
diff --git a/tests/niminaction/Chapter6/WikipediaStats/unguarded_access.nim b/tests/niminaction/Chapter6/WikipediaStats/unguarded_access.nim
index 502ea61a9..7bdde8397 100644
--- a/tests/niminaction/Chapter6/WikipediaStats/unguarded_access.nim
+++ b/tests/niminaction/Chapter6/WikipediaStats/unguarded_access.nim
@@ -10,7 +10,7 @@ initLock(counterLock)
 var counter {.guard: counterLock.} = 0
 
 proc increment(x: int) =
-  for i in 0 .. <x:
+  for i in 0 ..< x:
     let value = counter + 1
     counter = value
 
diff --git a/tests/niminaction/Chapter7/Tweeter/src/database.nim b/tests/niminaction/Chapter7/Tweeter/src/database.nim
index 4faba3f6a..3785ea307 100644
--- a/tests/niminaction/Chapter7/Tweeter/src/database.nim
+++ b/tests/niminaction/Chapter7/Tweeter/src/database.nim
@@ -79,9 +79,9 @@ proc findMessages*(database: Database, usernames: seq[string],
   result = @[]
   if usernames.len == 0: return
   var whereClause = " WHERE "
-  for i in 0 .. <usernames.len:
+  for i in 0 ..< usernames.len:
     whereClause.add("username = ? ")
-    if i != <usernames.len:
+    if i != usernames.high:
       whereClause.add("or ")
 
   let messages = database.db.getAllRows(
diff --git a/tests/parallel/tmissing_deepcopy.nim b/tests/parallel/tmissing_deepcopy.nim
index 694eb77db..94e027b60 100644
--- a/tests/parallel/tmissing_deepcopy.nim
+++ b/tests/parallel/tmissing_deepcopy.nim
@@ -26,9 +26,9 @@ proc greet(p:Person) =
     " friend:", p.friend.name, "(", cast[int](addr p.friend.name),") }"
 
 proc setup =
-  for i in 0 .. <20:
+  for i in 0 ..< 20:
     people.add newPerson("Person" & $(i + 1))
-  for i in 0 .. <20:
+  for i in 0 ..< 20:
     people[i].friend = people[19-i]
 
 proc update =
diff --git a/tests/parallel/tsimple_array_checks.nim b/tests/parallel/tsimple_array_checks.nim
index 5d6e87efe..650b809e0 100644
--- a/tests/parallel/tsimple_array_checks.nim
+++ b/tests/parallel/tsimple_array_checks.nim
@@ -35,9 +35,9 @@ proc main =
   parallel:
     for n in nums: # Error: cannot prove: i <= len(nums) + -1
       spawn log(n)
-    #for i in 0 .. <nums.len: # Error: cannot prove: i <= len(nums) + -1
+    #for i in 0 ..< nums.len: # Error: cannot prove: i <= len(nums) + -1
     #for i in 0 .. nums.len-1: # WORKS!
-    #for i in 0 .. <nums.len: # WORKS!
+    #for i in 0 ..< nums.len: # WORKS!
     #  spawn log(nums[i])
 
 # Array needs explicit size to work, probably related to issue #2287
diff --git a/tests/parallel/twrong_refcounts.nim b/tests/parallel/twrong_refcounts.nim
deleted file mode 100644
index ed3c1b894..000000000
--- a/tests/parallel/twrong_refcounts.nim
+++ /dev/null
@@ -1,56 +0,0 @@
-discard """
-  output: "Success"
-  target: "c"
-"""
-
-# Note: target: "cpp" fails because we can't yet have `extern "C"` mangling in
-# `exportc` procs.
-import math, random, threadPool
-
-# ---
-
-type
-  Person = object
-    age: int
-    friend: ref Person
-
-var
-  people: seq[ref Person] = @[]
-
-proc newPerson(age:int): ref Person =
-  result.new()
-  result.age = age
-
-proc greet(p:Person) =
-  #echo p.age, ", ", p.friend.age
-  p.friend.age += 1
-
-# ---
-
-proc setup =
-  for i in 0 .. <20:
-    people.add newPerson(i + 1)
-  for i in 0 .. <20:
-    people[i].friend = people[random(20)]
-
-proc update =
-  var countA: array[20, int]
-  var countB: array[20, int]
-
-  for i, p in people:
-    countA[i] = getRefCount(p)
-  parallel:
-    for i in 0 .. people.high:
-      spawn greet(people[i][])
-  for i, p in people:
-    countB[i] = getRefCount(p)
-
-  for i in 0 .. <20:
-    doAssert countA[i] == countB[i]
-  echo "Success"
-
-# ---
-
-when true:
-  setup()
-  update()
diff --git a/tests/showoff/tdrdobbs_examples.nim b/tests/showoff/tdrdobbs_examples.nim
index 8687ee529..0e10c6dd8 100644
--- a/tests/showoff/tdrdobbs_examples.nim
+++ b/tests/showoff/tdrdobbs_examples.nim
@@ -47,7 +47,7 @@ proc filter[T](a: openarray[T], predicate: proc (x: T): bool): seq[T] =
 
 proc map[T, S](a: openarray[T], fn: proc (x: T): S): seq[S] =
   newSeq(result, a.len)
-  for i in 0 .. <a.len: result[i] = fn(a[i])
+  for i in 0 ..< a.len: result[i] = fn(a[i])
 
 
 type
diff --git a/tests/statictypes/tpassthruarith.nim b/tests/statictypes/tpassthruarith.nim
index 90fc7824c..857e5b0af 100644
--- a/tests/statictypes/tpassthruarith.nim
+++ b/tests/statictypes/tpassthruarith.nim
@@ -46,7 +46,7 @@ type
   Vect[N: static[int], A] = array[N, A]
 
 proc push[N: static[int], A](a: Vect[N, A], x: A): Vect[N + 1, A] =
-  for n in 0 .. < N:
+  for n in 0 ..<  N:
     result[n] = a[n]
   result[N] = x
 
diff --git a/tests/stdlib/tstrutil.nim b/tests/stdlib/tstrutil.nim
index 304c2c325..0ad0cbd46 100644
--- a/tests/stdlib/tstrutil.nim
+++ b/tests/stdlib/tstrutil.nim
@@ -155,24 +155,6 @@ proc testDelete =
   delete(s, 0, 0)
   assert s == "1236789ABCDEFG"
 
-proc testIsAlphaNumeric =
-  assert isAlphaNumeric("abcdABC1234") == true
-  assert isAlphaNumeric("a") == true
-  assert isAlphaNumeric("abcABC?1234") == false
-  assert isAlphaNumeric("abcABC 1234") == false
-  assert isAlphaNumeric(".") == false
-
-testIsAlphaNumeric()
-
-proc testIsDigit =
-  assert isDigit("1") == true
-  assert isDigit("1234") == true
-  assert isDigit("abcABC?1234") == false
-  assert isDigit(".") == false
-  assert isDigit(":") == false
-
-testIsDigit()
-
 proc testFind =
   assert "0123456789ABCDEFGH".find('A') == 10
   assert "0123456789ABCDEFGH".find('A', 5) == 10
@@ -273,15 +255,6 @@ assert(insertSep($232) == "232")
 assert(insertSep($12345, ',') == "12,345")
 assert(insertSep($0) == "0")
 
-assert(editDistance("prefix__hallo_suffix", "prefix__hallo_suffix") == 0)
-assert(editDistance("prefix__hallo_suffix", "prefix__hallo_suffi1") == 1)
-assert(editDistance("prefix__hallo_suffix", "prefix__HALLO_suffix") == 5)
-assert(editDistance("prefix__hallo_suffix", "prefix__ha_suffix") == 3)
-assert(editDistance("prefix__hallo_suffix", "prefix") == 14)
-assert(editDistance("prefix__hallo_suffix", "suffix") == 14)
-assert(editDistance("prefix__hallo_suffix", "prefix__hao_suffix") == 2)
-assert(editDistance("main", "malign") == 2)
-
 assert "/1/2/3".rfind('/') == 4
 assert "/1/2/3".rfind('/', last=1) == 0
 assert "/1/2/3".rfind('0') == -1
@@ -307,7 +280,7 @@ assert "".toHex == ""
 assert "\x00\xFF\x80".toHex == "00FF80"
 assert "0123456789abcdef".parseHexStr.toHex == "0123456789ABCDEF"
 
-assert(' '.repeat(8)== "        ")
+assert(' '.repeat(8) == "        ")
 assert(" ".repeat(8) == "        ")
 assert(spaces(8) == "        ")