* fix #10339 by checking for nkObjConstr * revert check for nkObjConstr, return type from nkEmpty node The correct type needed in `semObjConstr` to fix #10339 is indeed available, but attached to an `nkEmpty` node. These were previously discarded in `semTypeNode`, which is used to extract the type for the object. * simplify return of PType from `nkEmpty` * also fixes #9866, add test case
This commit is contained in:
parent
efa4b9adaa
commit
d9ee377517
3 changed files with 33 additions and 1 deletions
|
|
@ -137,3 +137,20 @@ block:
|
|||
type
|
||||
Coord[N: static[int]] = tuple[col, row: range[0'i8 .. (N.int8-1)]]
|
||||
Point[N: static[int]] = range[0'i16 .. N.int16 * N.int16 - 1]
|
||||
|
||||
# https://github.com/nim-lang/Nim/issues/10339
|
||||
block:
|
||||
type
|
||||
MicroKernel = object
|
||||
a: float
|
||||
b: int
|
||||
|
||||
macro extractA(ukernel: static MicroKernel): untyped =
|
||||
result = newLit ukernel.a
|
||||
|
||||
proc tFunc[ukernel: static MicroKernel]() =
|
||||
const x = ukernel.extractA
|
||||
doAssert x == 5.5
|
||||
|
||||
const uk = MicroKernel(a: 5.5, b: 1)
|
||||
tFunc[uk]()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue