mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-12 22:33:49 +00:00
#23032 --------- Co-authored-by: Nikolay Nikolov <nickysn@gmail.com> Co-authored-by: Pylgos <43234674+Pylgos@users.noreply.github.com> Co-authored-by: Andreas Rumpf <rumpf_a@web.de> Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com> Co-authored-by: Jason Beetham <beefers331@gmail.com>
20 lines
378 B
Nim
20 lines
378 B
Nim
import std/macros
|
|
|
|
type A[T, H] = object
|
|
|
|
proc `%*`(a: A): bool = true
|
|
proc `%*`[T](a: A[int, T]): bool = false
|
|
|
|
macro collapse(s: untyped) =
|
|
result = newStmtList()
|
|
result.add quote do:
|
|
doAssert(`s`(A[float, int]()) == true)
|
|
|
|
macro startHere(n: untyped): untyped =
|
|
result = newStmtList()
|
|
let s = n[0]
|
|
result.add quote do:
|
|
`s`.collapse()
|
|
|
|
startHere(`a` %* `b`)
|