Automatic dereferencing is removed (#20531)

This commit is contained in:
ringabout
2022-10-10 21:02:23 +08:00
committed by GitHub
parent b8def03575
commit d954e698b3
8 changed files with 18 additions and 104 deletions

View File

@@ -1,49 +0,0 @@
discard """
output: '''
1
2
3
4
2
88
timplicit done
'''
"""
for x in [1, 2, 3, 4]:
echo x
type
TValue* {.pure, final.} = object of RootObj
a: int
PValue = ref TValue
PPValue = ptr PValue
var x: PValue
new x
var sp: PPValue = addr x
sp.a = 2
if sp.a == 2: echo 2 # with sp[].a the error is gone
# Test the new auto-deref a little
{.experimental.}
proc p(x: var int; y: int) = x += y
block:
var x: ref int
new(x)
x.p(44)
var indirect = p
x.indirect(44)
echo x[]
echo "timplicit done"

View File

@@ -57,3 +57,18 @@ block: # bug #14698
x1: int
x3: seq[int]
doAssert t[].sizeof == Foo1.sizeof
# bug #147
type
TValue* {.pure, final.} = object of RootObj
a: int
PValue = ref TValue
PPValue = ptr PValue
var x: PValue
new x
var sp: PPValue = addr x
sp.a = 2
doAssert sp.a == 2