summary refs log tree commit diff stats
path: root/compiler/semstmts.nim
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/semstmts.nim')
-rw-r--r--compiler/semstmts.nim14
1 files changed, 9 insertions, 5 deletions
diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim
index ec4279e60..365109249 100644
--- a/compiler/semstmts.nim
+++ b/compiler/semstmts.nim
@@ -70,7 +70,7 @@ proc toCover(t: PType): BiggestInt =
   else:
     result = lengthOrd(skipTypes(t, abstractVar-{tyTypeDesc}))
 
-proc performProcvarCheck(c: PContext, n: PNode, s: PSym) =
+proc performProcvarCheck(c: PContext, info: TLineInfo, s: PSym) =
   ## Checks that the given symbol is a proper procedure variable, meaning
   ## that it
   var smoduleId = getModule(s).id
@@ -80,13 +80,17 @@ proc performProcvarCheck(c: PContext, n: PNode, s: PSym) =
       for module in c.friendModules:
         if smoduleId == module.id:
           break outer
-      localError(n.info, errXCannotBePassedToProcVar, s.name.s)
+      localError(info, errXCannotBePassedToProcVar, s.name.s)
 
 proc semProcvarCheck(c: PContext, n: PNode) =
-  let n = n.skipConv
-  if n.kind == nkSym and n.sym.kind in {skProc, skMethod, skConverter,
+  var n = n.skipConv
+  if n.kind in nkSymChoices:
+    for x in n:
+      if x.sym.kind in {skProc, skMethod, skConverter, skIterator}:
+        performProcvarCheck(c, n.info, x.sym)
+  elif n.kind == nkSym and n.sym.kind in {skProc, skMethod, skConverter,
                                         skIterator}:
-    performProcvarCheck(c, n, n.sym)
+    performProcvarCheck(c, n.info, n.sym)
 
 proc semProc(c: PContext, n: PNode): PNode
 
/ahoang/Nim/blame/tools/downloader.nim?h=devel&id=0535b6b6bf5b533f1238832e5f92cdd50e3fa1de'>^
26a8364ed ^
7652d15ed ^

0c7b6c9c1 ^
7652d15ed ^

26a8364ed ^
















7652d15ed ^



26a8364ed ^
7652d15ed ^






















































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