blob: fecd8ee2661b6fbea5318f8a0da0bda268553f36 (
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
|
# issue #20073
type Foo = object
proc foo(f: Foo) = discard
template works*() =
var f: Foo
foo(f)
template boom*() =
var f: Foo
f.foo() # Error: attempting to call undeclared routine: 'foo'
f.foo # Error: undeclared field: 'foo' for type a.Foo
# issue #7085
proc bar(a: string): string =
return a & "bar"
template baz*(a: string): string =
var b = a.bar()
b
# issue #7223
import mdotcall2
type
Bytes* = seq[byte]
BytesRange* = object
bytes*: Bytes
ibegin*, iend*: int
proc privateProc(r: BytesRange): int = r.ibegin
template rangeBeginAddr*(r: BytesRange): pointer =
r.bytes.baseAddr.shift(r.privateProc)
# issue #11733
type ObjA* = object
proc foo2(o: var ObjA) = discard
proc bar2(o: var ObjA, arg: Natural) = discard
template publicTemplateObjSyntax*(o: var ObjA, arg: Natural, doStuff: untyped) =
o.foo2()
doStuff
o.bar2(arg)
# issue #15246
import os
template sourceBaseName*(): string =
bind splitFile
instantiationInfo().filename.splitFile().name
# issue #12683
import unicode
template toRune(s: string): Rune = s.runeAt(0)
proc heh*[T](x: Slice[T], chars: string) = discard chars.toRune
# issue #7889
from streams import newStringStream, readData, writeData
template bindmeTemplate*(): untyped =
var tst = "sometext"
var ss = newStringStream("anothertext")
ss.writeData(tst[0].addr, 2)
discard ss.readData(tst[0].addr, 2) # <= comment this out to make compilation successful
from macros import quote, newIdentNode
macro bindmeQuote*(): untyped =
quote do:
var tst = "sometext"
var ss = newStringStream("anothertext")
ss.writeData(tst[0].addr, 2)
discard ss.readData(tst[0].addr, 2) # <= comment this out to make compilation successful
|