fixes #5354
This commit is contained in:
parent
c8ae7164e5
commit
36d3fd64da
2 changed files with 22 additions and 5 deletions
|
|
@ -1093,11 +1093,11 @@ proc builtinFieldAccess(c: PContext, n: PNode, flags: TExprFlags): PNode =
|
||||||
return readTypeParameter(c, ty, i, n.info)
|
return readTypeParameter(c, ty, i, n.info)
|
||||||
of tyObject, tyTuple:
|
of tyObject, tyTuple:
|
||||||
if ty.n != nil and ty.n.kind == nkRecList:
|
if ty.n != nil and ty.n.kind == nkRecList:
|
||||||
for field in ty.n:
|
let field = lookupInRecord(ty.n, i)
|
||||||
if field.sym.name == i:
|
if field != nil:
|
||||||
n.typ = newTypeWithSons(c, tyFieldAccessor, @[ty, field.sym.typ])
|
n.typ = newTypeWithSons(c, tyFieldAccessor, @[ty, field.typ])
|
||||||
n.typ.n = copyTree(n)
|
n.typ.n = copyTree(n)
|
||||||
return n
|
return n
|
||||||
else:
|
else:
|
||||||
# echo "TYPE FIELD ACCESS"
|
# echo "TYPE FIELD ACCESS"
|
||||||
# debug ty
|
# debug ty
|
||||||
|
|
|
||||||
17
tests/metatype/tfieldaccessor.nim
Normal file
17
tests/metatype/tfieldaccessor.nim
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
type
|
||||||
|
Test = object
|
||||||
|
x: int
|
||||||
|
case p: bool
|
||||||
|
of true:
|
||||||
|
a: int
|
||||||
|
else:
|
||||||
|
case q: bool
|
||||||
|
of true:
|
||||||
|
b: int
|
||||||
|
else:
|
||||||
|
discard
|
||||||
|
|
||||||
|
proc f[T](t: typedesc[T]): int =
|
||||||
|
1
|
||||||
|
|
||||||
|
assert Test.f == 1
|
||||||
Loading…
Add table
Add a link
Reference in a new issue