summary refs log tree commit diff stats
path: root/tests/closure/tmacrobust1512.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/closure/tmacrobust1512.nim')
-rw-r--r--tests/closure/tmacrobust1512.nim222
1 files changed, 104 insertions, 118 deletions
diff --git a/tests/closure/tmacrobust1512.nim b/tests/closure/tmacrobust1512.nim
index 95681e750..0f44c5e1a 100644
--- a/tests/closure/tmacrobust1512.nim
+++ b/tests/closure/tmacrobust1512.nim
@@ -1,115 +1,110 @@
+discard """
+output: ""
+"""
+
 import macros, strutils
 
 # https://github.com/nim-lang/Nim/issues/1512
 
-proc macrobust0 (raw_input: string) =
+proc macrobust0(input: string): string =
   var output = ""
-  proc p1 (a:string) =
-    output.add (a)
-
-  proc p2 (a:string) = p1 (a)
-  proc p3 (a:string) = p2 (a)
-  proc p4 (a:string) = p3 (a)
-  proc p5 (a:string) = p4 (a)
-  proc p6 (a:string) = p5 (a)
-  proc p7 (a:string) = p6 (a)
-  proc p8 (a:string) = p7 (a)
-  proc p9 (a:string) = p8 (a)
-  proc p10 (a:string) = p9 (a)
-  proc p11 (a:string) = p10 (a)
-  proc p12 (a:string) = p11 (a)
-  proc p13 (a:string) = p12 (a)
-  proc p14 (a:string) = p13 (a)
-  proc p15 (a:string) = p14 (a)
-  proc p16 (a:string) = p15 (a)
-  proc p17 (a:string) = p16 (a)
-  proc p18 (a:string) = p17 (a)
-  proc p19 (a:string) = p18 (a)
-  proc p20 (a:string) = p19 (a)
-
-  let input = $raw_input
-
-  for a in input.split ():
-    p20 (a)
-    p19 (a)
-
-
-    p18 (a)
-    p17 (a)
-    p16 (a)
-    p15 (a)
-    p14 (a)
-    p13 (a)
-    p12 (a)
-    p11 (a)
-    p10 (a)
-    p9 (a)
-    p8 (a)
-    p7 (a)
-    p6 (a)
-    p5 (a)
-    p4 (a)
-    p3 (a)
-    p2 (a)
-    p1 (a)
-
-
-  echo output
-
-macro macrobust (raw_input: expr) : stmt =
-
+  proc p1(a:string) =
+    output.add(a)
+
+  proc p2(a:string) = p1(a)
+  proc p3(a:string) = p2(a)
+  proc p4(a:string) = p3(a)
+  proc p5(a:string) = p4(a)
+  proc p6(a:string) = p5(a)
+  proc p7(a:string) = p6(a)
+  proc p8(a:string) = p7(a)
+  proc p9(a:string) = p8(a)
+  proc p10(a:string) = p9(a)
+  proc p11(a:string) = p10(a)
+  proc p12(a:string) = p11(a)
+  proc p13(a:string) = p12(a)
+  proc p14(a:string) = p13(a)
+  proc p15(a:string) = p14(a)
+  proc p16(a:string) = p15(a)
+  proc p17(a:string) = p16(a)
+  proc p18(a:string) = p17(a)
+  proc p19(a:string) = p18(a)
+  proc p20(a:string) = p19(a)
+
+  for a in input.split():
+    p20(a)
+    p19(a)
+    p18(a)
+    p17(a)
+    p16(a)
+    p15(a)
+    p14(a)
+    p13(a)
+    p12(a)
+    p11(a)
+    p10(a)
+    p9(a)
+    p8(a)
+    p7(a)
+    p6(a)
+    p5(a)
+    p4(a)
+    p3(a)
+    p2(a)
+    p1(a)
+
+  result = output
+
+macro macrobust(input: static[string]): untyped =
   var output = ""
-  proc p1 (a:string) =
-    output.add (a)
-
-  proc p2 (a:string) = p1 (a)
-  proc p3 (a:string) = p2 (a)
-  proc p4 (a:string) = p3 (a)
-  proc p5 (a:string) = p4 (a)
-  proc p6 (a:string) = p5 (a)
-  proc p7 (a:string) = p6 (a)
-  proc p8 (a:string) = p7 (a)
-  proc p9 (a:string) = p8 (a)
-  proc p10 (a:string) = p9 (a)
-  proc p11 (a:string) = p10 (a)
-  proc p12 (a:string) = p11 (a)
-  proc p13 (a:string) = p12 (a)
-  proc p14 (a:string) = p13 (a)
-  proc p15 (a:string) = p14 (a)
-  proc p16 (a:string) = p15 (a)
-  proc p17 (a:string) = p16 (a)
-  proc p18 (a:string) = p17 (a)
-  proc p19 (a:string) = p18 (a)
-  proc p20 (a:string) = p19 (a)
-
-  let input = $raw_input
-
-  for a in input.split ():
-    p20 (a)
-    p19 (a)
-
-    p18 (a)
-    p17 (a)
-    p16 (a)
-    p15 (a)
-    p14 (a)
-    p13 (a)
-    p12 (a)
-    p11 (a)
-    p10 (a)
-    p9 (a)
-    p8 (a)
-    p7 (a)
-    p6 (a)
-    p5 (a)
-    p4 (a)
-    p3 (a)
-    p2 (a)
-
-  echo output
-  discard result
-
-macrobust """
+  proc p1(a:string) =
+    output.add(a)
+
+  proc p2(a:string) = p1(a)
+  proc p3(a:string) = p2(a)
+  proc p4(a:string) = p3(a)
+  proc p5(a:string) = p4(a)
+  proc p6(a:string) = p5(a)
+  proc p7(a:string) = p6(a)
+  proc p8(a:string) = p7(a)
+  proc p9(a:string) = p8(a)
+  proc p10(a:string) = p9(a)
+  proc p11(a:string) = p10(a)
+  proc p12(a:string) = p11(a)
+  proc p13(a:string) = p12(a)
+  proc p14(a:string) = p13(a)
+  proc p15(a:string) = p14(a)
+  proc p16(a:string) = p15(a)
+  proc p17(a:string) = p16(a)
+  proc p18(a:string) = p17(a)
+  proc p19(a:string) = p18(a)
+  proc p20(a:string) = p19(a)
+
+  for a in input.split():
+    p20(a)
+    p19(a)
+    p18(a)
+    p17(a)
+    p16(a)
+    p15(a)
+    p14(a)
+    p13(a)
+    p12(a)
+    p11(a)
+    p10(a)
+    p9(a)
+    p8(a)
+    p7(a)
+    p6(a)
+    p5(a)
+    p4(a)
+    p3(a)
+    p2(a)
+    p1(a)
+
+  result = newLit(output)
+
+const input = """
   fdsasadfsdfa sadfsdafsdaf
   dsfsdafdsfadsfa fsdaasdfasdf
   fsdafsadfsad asdfasdfasdf
@@ -122,16 +117,7 @@ macrobust """
   sdfasdafsadf sdfasdafsdaf sdfasdafsdaf
 """
 
+let str1 = macrobust(input)
+let str2 = macrobust0(input)
 
-macrobust0 """
-  fdsasadfsdfa sadfsdafsdaf
-  dsfsdafdsfadsfa fsdaasdfasdf
-  fsdafsadfsad asdfasdfasdf
-  fdsasdfasdfa sadfsadfsadf
-  sadfasdfsdaf sadfsdafsdaf dsfasdaf
-  sadfsdafsadf fdsasdafsadf fdsasadfsdaf
-  sdfasadfsdafdfsa sadfsadfsdaf
-  sdafsdaffsda sdfasadfsadf
-  fsdasdafsdfa sdfasdfafsda
-  sdfasdafsadf sdfasdafsdaf sdfasdafsdaf
-"""
\ No newline at end of file
+doAssert str1 == str2