I have problems with the procedure `magicsAfterOverloadResolution`. I added a proc to system.nim: proc alignOf*[T](x: T): int {.magic: "AlignOf", noSideEffect.}
And ann entry in `magicsAfterOverloadResolution`: of mAlignOf: echo "evaluating mAlignOf:" let typ = n[1].typ debug(typ) let align = typ.getAlign result = newIntNode(nkIntLit, align) result.info = n.info debug(result) The output I get is the following: nim c compiler/nim CC: compiler_sem bin/nim_temp c -r testsizeof evaluating mAlignOf: tyObject SimpleAlignment(null, node: { "kind": "nkRecList", "info": ["testsizeof.nim", 12, 20], "flags": {}, "sons": [ { "kind": "nkSym", "info": ["testsizeof.nim", 13, 4], "flags": {}, "sym": a_104030, "typ": tyInt8 int8 }, { "kind": "nkSym", "info": ["testsizeof.nim", 13, 6], "flags": {}, "sym": b_104031, "typ": tyInt8 int8 }, { "kind": "nkSym", "info": ["testsizeof.nim", 14, 4], "flags": {}, "sym": c_104032, "typ": tyInt64 int64 } ] }) { "kind": "nkIntLit", "info": ["testsizeof.nim", 111, 51], "flags": {}, "intVal": 8 } testsizeof.nim(111, 52) Error: type mismatch: got (void) but expected one of: proc `$`(x: int): string [...] FAILURE the line with the error in testsizeof.nim is the following: echo a.type.name, ":\t", sizeof(a), "\t", alignof(a) where a is of type `SimpleAlignment` type SimpleAlignment = object a,b: int8 c: int64 Why do I get this error? I create an **integer literal**, and the compiler complains that it is of **type void**!