@@ -78,29 +78,39 @@ doAssert(someGlobalPtr[] == 5)
78
78
someGlobalPtr[] = 10
79
79
doAssert (someGlobal == 10 )
80
80
81
- from std/ decls import byLent
82
-
83
81
block :
84
82
# issue #14576
85
83
# lots of these used to give: Error: internal error: genAddr: 2
84
+ proc byLentAny [T](a: T): lent T = a
85
+ proc byLentVar [T](a: var T): lent T = a # see also decls.byLent
86
86
proc byPtr [T](a: T): ptr T = a.unsafeAddr
87
87
88
88
block :
89
89
let a = (10 ,11 )
90
- let (x,y) = byLent (a)
90
+ let (x,y) = byLentAny (a)
91
+ doAssert (x,y) == a
92
+ block :
93
+ var a = (10 ,11 )
94
+ let (x,y) = byLentAny (a)
91
95
doAssert (x,y) == a
92
96
93
97
block :
94
98
let a = 10
95
- doAssert byLent (a) == 10
96
- let a2 = byLent (a)
99
+ doAssert byLentAny (a) == 10
100
+ let a2 = byLentAny (a)
97
101
doAssert a2 == 10
98
102
99
103
block :
100
104
let a = [11 ,12 ]
101
- doAssert byLent (a) == [11 ,12 ]
105
+ doAssert byLentAny (a) == [11 ,12 ]
102
106
let a2 = (11 ,)
103
- doAssert byLent (a2) == (11 ,)
107
+ doAssert byLentAny (a2) == (11 ,)
108
+
109
+ block :
110
+ var a = [11 ,12 ]
111
+ doAssert byLentVar (a) == [11 ,12 ]
112
+ var a2 = (11 ,)
113
+ doAssert byLentVar (a2) == (11 ,)
104
114
105
115
block :
106
116
when defined (c) and defined (release):
@@ -114,9 +124,9 @@ block:
114
124
doAssert byPtr (a3)[] == 14
115
125
116
126
block :
117
- proc byLent2 [T](a: seq [T]): lent T = a[1 ]
127
+ proc byLentElem [T](a: seq [T]): lent T = a[1 ]
118
128
var a = @ [20 ,21 ,22 ]
119
- doAssert byLent2 (a) == 21
129
+ doAssert byLentElem (a) == 21
120
130
121
131
block : # sanity checks
122
132
proc bar [T](a: var T): var T = a
0 commit comments