summary refs log tree commit diff stats
path: root/tests/closure/tmacrobust1512.nim
blob: 5f13e82863ad2c0042a9d7029bb8528935bd04b7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import macros, strutils

# https://github.com/nim-lang/Nim/issues/1512

proc macrobust0(raw_input: 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: untyped): 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 """
  fdsasadfsdfa sadfsdafsdaf
  dsfsdafdsfadsfa fsdaasdfasdf
  fsdafsadfsad asdfasdfasdf
  fdsasdfasdfa sadfsadfsadf
  sadfasdfsdaf sadfsdafsdaf dsfasdaf
  sadfsdafsadf fdsasdafsadf fdsasadfsdaf
  sdfasadfsdafdfsa sadfsadfsdaf
  sdafsdaffsda sdfasadfsadf
  fsdasdafsdfa sdfasdfafsda
  sdfasdafsadf sdfasdafsdaf sdfasdafsdaf
"""


macrobust0 """
  fdsasadfsdfa sadfsdafsdaf
  dsfsdafdsfadsfa fsdaasdfasdf
  fsdafsadfsad asdfasdfasdf
  fdsasdfasdfa sadfsadfsadf
  sadfasdfsdaf sadfsdafsdaf dsfasdaf
  sadfsdafsadf fdsasdafsadf fdsasadfsdaf
  sdfasadfsdafdfsa sadfsadfsdaf
  sdafsdaffsda sdfasadfsadf
  fsdasdafsdfa sdfasdfafsda
  sdfasdafsadf sdfasdafsdaf sdfasdafsdaf
"""