mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-12 22:33:49 +00:00
* 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
52 lines
654 B
Nim
52 lines
654 B
Nim
discard """
|
|
output: '''
|
|
123
|
|
Hallo Welt
|
|
Hallo Welt
|
|
1
|
|
()
|
|
'''
|
|
"""
|
|
|
|
import macros
|
|
|
|
macro mac(): untyped =
|
|
quote do:
|
|
proc test(): int =
|
|
(proc(): int = result = 123)()
|
|
|
|
mac()
|
|
echo test()
|
|
|
|
macro foobar(arg: untyped): untyped =
|
|
result = arg
|
|
result.add quote do:
|
|
`result`
|
|
|
|
foobar:
|
|
echo "Hallo Welt"
|
|
|
|
# bug #3744
|
|
import macros
|
|
macro t(): untyped =
|
|
return quote do:
|
|
proc tp(): int =
|
|
result = 1
|
|
t()
|
|
|
|
echo tp()
|
|
|
|
|
|
# https://github.com/nim-lang/Nim/issues/9866
|
|
type
|
|
# Foo = int # works
|
|
Foo = object # fails
|
|
|
|
macro dispatchGen(): untyped =
|
|
var shOpt: Foo
|
|
result = quote do:
|
|
let baz = `shOpt`
|
|
echo `shOpt`
|
|
|
|
dispatchGen()
|