diff options
author | cooldome <ariabushenko@gmail.com> | 2020-11-20 13:58:16 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-20 14:58:16 +0100 |
commit | fcb2ec4ed69fe924e7e3899e0084f534124255d4 (patch) | |
tree | 27f848f60dfe7e2a93f69362419e78b93e0c2a00 /tests | |
parent | 07ad608fb2a9387fefc61a8eef9e0777660516a9 (diff) | |
download | Nim-fcb2ec4ed69fe924e7e3899e0084f534124255d4.tar.gz |
fix #15958 (#15970) [backport:1.4]
* fix #15958 * also cover openArray and VarArgs * more tests * cover even more types * cover even more types * Trigger build * Trigger build * cover sets passed as arrays
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lent/tbasic_lent_check.nim | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/lent/tbasic_lent_check.nim b/tests/lent/tbasic_lent_check.nim index 4389cbc6e..e22f7bb50 100644 --- a/tests/lent/tbasic_lent_check.nim +++ b/tests/lent/tbasic_lent_check.nim @@ -1,4 +1,5 @@ discard """ + targets: "c cpp" output: "1" """ @@ -14,3 +15,41 @@ proc main = doAssert(not compiles(passToVar(viewInto(x)))) main() + + +#------------------------------------------------------------------------------ +# issue #15958 + +block: + proc byLent[T](a: T): lent T = a + let a = [11,12] + let b = @[21,23] + let ss = {1, 2, 3, 5} + doAssert byLent(a) == [11,12] + doAssert byLent(a).unsafeAddr == a.unsafeAddr + doAssert byLent(b) == @[21,23] + doAssert byLent(b).unsafeAddr == b.unsafeAddr + doAssert byLent(ss) == {1, 2, 3, 5} + doAssert byLent(ss).unsafeAddr == ss.unsafeAddr + + let r = new(float) + r[] = 10.0 + doAssert byLent(r)[] == 10.0 + + let p = create(float) + p[] = 20.0 + doAssert byLent(p)[] == 20.0 + + proc byLent2[T](a: openarray[T]): lent T = a[0] + doAssert byLent2(a) == 11 + doAssert byLent2(a).unsafeAddr == a[0].unsafeAddr + doAssert byLent2(b) == 21 + doAssert byLent2(b).unsafeAddr == b[0].unsafeAddr + + proc byLent3[T](a: varargs[T]): lent T = a[1] + let + x = 10 + y = 20 + z = 30 + doAssert byLent3(x, y, z) == 20 + |