summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--lib/pure/pegs.nim5
-rw-r--r--tests/stdlib/tpegs.nim3
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/pure/pegs.nim b/lib/pure/pegs.nim
index b6b05cdc1..11270e34c 100644
--- a/lib/pure/pegs.nim
+++ b/lib/pure/pegs.nim
@@ -1285,9 +1285,12 @@ proc parallelReplace*(s: string, subs: varargs[
   # copy the rest:
   add(result, substr(s, i))
 
+when not defined(nimHasEffectsOf):
+  {.pragma: effectsOf.}
+
 proc replace*(s: string, sub: Peg, cb: proc(
               match: int, cnt: int, caps: openArray[string]): string): string {.
-              rtl, extern: "npegs$1cb".} =
+              rtl, extern: "npegs$1cb", effectsOf: cb.} =
   ## Replaces `sub` in `s` by the resulting strings from the callback.
   ## The callback proc receives the index of the current match (starting with 0),
   ## the count of captures and an open array with the captures of each match. Examples:
diff --git a/tests/stdlib/tpegs.nim b/tests/stdlib/tpegs.nim
index 1261d55b8..c3d8942cf 100644
--- a/tests/stdlib/tpegs.nim
+++ b/tests/stdlib/tpegs.nim
@@ -51,6 +51,9 @@ Event parser output
 '''
 """
 
+when defined(nimHasEffectsOf):
+  {.experimental: "strictEffects".}
+
 import std/[strutils, streams, pegs]
 
 const