summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--lib/pure/asyncfutures.nim64
-rw-r--r--tests/async/tasync_traceback.nim27
2 files changed, 19 insertions, 72 deletions
diff --git a/lib/pure/asyncfutures.nim b/lib/pure/asyncfutures.nim
index d836e3ab7..54b967f90 100644
--- a/lib/pure/asyncfutures.nim
+++ b/lib/pure/asyncfutures.nim
@@ -225,7 +225,7 @@ proc diff[T](a, b: seq[T]): (int, seq[T]) =
   ## .. code-block::nim
   ##   doAssert(diff(@[1,2,42,123], @[1,2,123,678,21]) == (1, @[123,678,21]))
   var lastIndex = 0
-  for i in 0 .. <min(a.len, b.len):
+  for i in 0..<min(a.len, b.len):
     lastIndex = i
     if a[i] != b[i]:
       break
@@ -259,62 +259,6 @@ proc mergeEntries(entries: seq[StackTraceEntry]): seq[StackTraceEntry] =
     result.add(entry)
     i.inc
 
-proc shortenEntries(entries: seq[StackTraceEntry]): seq[StackTraceEntry] =
-  ## Analyzes the entries for patterns and processes them.
-  proc get(entries: seq[StackTraceEntry], i: int): StackTraceEntry =
-    if i >= entries.len:
-      return StackTraceEntry(procName: "", line: 0, filename: "")
-    else:
-      return entries[i]
-
-  result = @[]
-  var i = 0
-  while i < entries.len:
-    var entry = entries[i]
-
-    # Detect this pattern:
-    #   (procname: a, line: 393, filename: asyncmacro.nim)
-    #   ...
-    #   (procname: a_continue, line: 34, filename: asyncmacro.nim)
-    #   ...
-    #   (procname: aIter, line: 40, filename: tasync_traceback.nim)
-    proc searchBackwards(entries: seq[StackTraceEntry],
-                         current: StackTraceEntry): (int, StackTraceEntry) =
-      # Search backwards for the beginning of the pattern.
-      result[0] = 0
-      if not ($current.procName).normalize().endsWith("iter"):
-        return
-
-      # Find (procname: a, line: 393, filename: asyncmacro.nim)
-      let start = entries.len-1
-      var counter = start
-      while counter >= 0:
-        if cmpIgnoreStyle($entries[counter].procName & "iter",
-                          $current.procName) == 0:
-          break
-        counter.dec()
-
-      # Return when no beginning of pattern is found.
-      if counter < 0:
-        return
-
-      result[0] = start - counter
-      result[1] = StackTraceEntry(
-        procName: entries[result[0]].procName,
-        line: current.line,
-        filename: current.filename
-      )
-
-    let (itemsToRemove, newEntry) = searchBackwards(result, entry)
-
-    if itemsToRemove != 0:
-      entry = newEntry
-      # Remove the previous entries.
-      result.setLen(result.len-itemsToRemove)
-
-    result.add(entry)
-    i.inc
-
 proc getHint(entry: StackTraceEntry): string =
   ## We try to provide some hints about stack trace entries that the user
   ## may not be familiar with, in particular calls inside the stdlib.
@@ -372,11 +316,7 @@ proc injectStacktrace[T](future: Future[T]) =
     var newMsg = exceptionMsg & header
 
     let entries = getStackTraceEntries(future.error).mergeEntries()
-    let shortEntries = entries.shortenEntries()
-    newMsg.add($shortEntries)
-    if entries.len > shortEntries.len:
-      newMsg.add("\nDetailed Async traceback:\n")
-      newMsg.add($entries)
+    newMsg.add($entries)
 
     newMsg.add("Exception message: " & exceptionMsg & "\n")
     newMsg.add("Exception type:")
diff --git a/tests/async/tasync_traceback.nim b/tests/async/tasync_traceback.nim
index 5e4f1142f..525914ef3 100644
--- a/tests/async/tasync_traceback.nim
+++ b/tests/async/tasync_traceback.nim
@@ -4,35 +4,42 @@ discard """
   output: '''
 b failure
 Async traceback:
-  tasync_traceback.nim(75) tasync_traceback
+  tasync_traceback.nim(83) tasync_traceback
   asyncmacro.nim(393)      a
-  asyncmacro.nim(43)       cb0
+  asyncmacro.nim(43)       a_continue
   └─Resumes an async procedure
   asyncfutures.nim(211)    callback=
   asyncfutures.nim(190)    addCallback
   asyncfutures.nim(53)     callSoon
-  asyncmacro.nim(34)       cb0
+  asyncmacro.nim(34)       a_continue
   └─Resumes an async procedure
   asyncmacro.nim(0)        aIter
-  asyncfutures.nim(355)    read
-  tasync_traceback.nim(73) a
-  tasync_traceback.nim(70) b
+  asyncfutures.nim(340)    read
+  asyncmacro.nim(34)       a_continue
+  └─Resumes an async procedure
+  tasync_traceback.nim(81) aIter
+  asyncmacro.nim(393)      b
+  asyncmacro.nim(34)       b_continue
+  └─Resumes an async procedure
+  tasync_traceback.nim(78) bIter
 Exception message: b failure
 Exception type:
 
 bar failure
 Async traceback:
-  tasync_traceback.nim(91) tasync_traceback
+  tasync_traceback.nim(99) tasync_traceback
   asyncdispatch.nim(1204)  waitFor
   asyncdispatch.nim(1253)  poll
   └─Processes asynchronous completion events
   asyncdispatch.nim(181)   processPendingCallbacks
   └─Executes pending callbacks
-  asyncmacro.nim(34)       cb0
+  asyncmacro.nim(34)       foo_continue
   └─Resumes an async procedure
   asyncmacro.nim(0)        fooIter
-  asyncfutures.nim(355)    read
-  tasync_traceback.nim(86) barIter
+  asyncfutures.nim(340)    read
+  asyncmacro.nim(34)       bar_continue
+  └─Resumes an async procedure
+  tasync_traceback.nim(94) barIter
 Exception message: bar failure
 Exception type:'''
 """