@@ -373,7 +373,7 @@ proc splitDefinition*(def: NimNode): tuple[lhs: NimNode, rhs: NimNode, exported:
373373 let def2 = def[0 ]
374374 case def2.kind
375375 of nnkInfix:
376- doAssert $ def2[0 ].ident == " *="
376+ doAssert def2[0 ].strVal == " *="
377377 result .lhs = def2[1 ]
378378 result .rhs = def2[2 ]
379379 result .exported = true
@@ -394,19 +394,25 @@ macro byRef*(def: untyped): untyped =
394394 doAssert type (x1) is int and x == @ [1 ,12 ,3 ]
395395
396396 let (name, exp, exported) = splitDefinition (def)
397- result = quote do :
398- let myAddr = addr `exp`
399- template `name` : untyped = myAddr[]
400397 if exported:
401- result .add quote do : export `name`
398+ result = quote do :
399+ let myAddr = addr `exp`
400+ template `name` * : untyped = myAddr[]
401+ else :
402+ result = quote do :
403+ let myAddr = addr `exp`
404+ template `name` : untyped = myAddr[]
402405
403406macro byPtr * (def: untyped ): untyped =
404407 # # Same as `byRef` but uses uses `unsafeAddr` instead of `addr`; `byRef` is
405408 # # safer and should be preferred when possible.
406409 # # This can for example be used on `let` variables.
407410 let (name, exp, exported) = splitDefinition (def)
408- result = quote do :
409- let myAddr = unsafeAddr `exp`
410- template `name` : untyped = myAddr[]
411411 if exported:
412- result .add quote do : export `name`
412+ result = quote do :
413+ let myAddr = unsafeAddr `exp`
414+ template `name` * : untyped = myAddr[]
415+ else :
416+ result = quote do :
417+ let myAddr = unsafeAddr `exp`
418+ template `name` : untyped = myAddr[]
0 commit comments