Merge pull request #3036 from nanoant/patch/macros-sametype
macros: Introduce sameType(a, b) for node types
This commit is contained in:
commit
e38a989a6f
6 changed files with 54 additions and 3 deletions
41
tests/macros/tsametype.nim
Normal file
41
tests/macros/tsametype.nim
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
discard """
|
||||
output: '''1
|
||||
0
|
||||
1
|
||||
0
|
||||
1
|
||||
0
|
||||
1
|
||||
0
|
||||
1
|
||||
0'''
|
||||
"""
|
||||
|
||||
import macros
|
||||
|
||||
macro same(a: typedesc, b: typedesc): expr =
|
||||
newLit(a.getType[1].sameType b.getType[1])
|
||||
|
||||
echo same(int, int)
|
||||
echo same(int, float)
|
||||
|
||||
type
|
||||
SomeInt = int
|
||||
DistinctInt = distinct int
|
||||
SomeFloat = float
|
||||
DistinctFloat = distinct float
|
||||
|
||||
echo same(int, SomeInt)
|
||||
echo same(int, DistinctInt)
|
||||
echo same(float, SomeFloat)
|
||||
echo same(float, DistinctFloat)
|
||||
|
||||
type
|
||||
Obj = object of RootObj
|
||||
SubObj = object of Obj
|
||||
Other = object of RootObj
|
||||
|
||||
echo same(Obj, Obj)
|
||||
echo same(int, Obj)
|
||||
echo same(SubObj, SubObj)
|
||||
echo same(Other, Obj)
|
||||
Loading…
Add table
Add a link
Reference in a new issue