1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- discard """
- nimout: '''initApple
- deinitApple
- Coral
- enum
- redCoral, blackCoral'''
- output: '''TFoo
- TBar'''
- """
- # bug #1319
- import macros
- type
- TTextKind = enum
- TFoo, TBar
- macro test: untyped =
- var x = @[TFoo, TBar]
- result = newStmtList()
- for i in x:
- result.add newCall(newIdentNode("echo"),
- case i
- of TFoo:
- bindSym("TFoo")
- of TBar:
- bindSym("TBar"))
- test()
- # issue 7827, bindSym power up
- {.experimental: "dynamicBindSym".}
- type
- Apple = ref object
- name: string
- color: int
- weight: int
- proc initApple(name: string): Apple =
- discard
- proc deinitApple(x: Apple) =
- discard
- macro wrapObject(obj: typed, n: varargs[untyped]): untyped =
- let m = n[0]
- for x in m:
- var z = bindSym x
- echo z.repr
- wrapObject(Apple):
- initApple
- deinitApple
- type
- Coral = enum
- redCoral
- blackCoral
- macro mixer(): untyped =
- let m = "Co" & "ral"
- let x = bindSym(m)
- echo x.repr
- echo getType(x).repr
- mixer()
|