Merge pull request #9937 from cooldome/pragmablock_custom_pragma

Language feature: implement custom pragmas in pragma blocks
This commit is contained in:
Andreas Rumpf 2018-12-12 10:15:25 +01:00 • committed by GitHub
commit d9ae9201c4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 9 deletions

View file

@ -174,3 +174,25 @@ type
var foo: Something
foo.cardinal = north
doAssert foo.b.hasCustomPragma(thingy) == true
proc myproc(s: string): int =
{.thingy.}:
s.len
doAssert myproc("123") == 3
let xx = compiles:
proc myproc_bad(s: string): int =
{.not_exist.}:
s.len
doAssert: xx == false
macro checkSym(s: typed{nkSym}): untyped =
let body = s.getImpl.body
doAssert body[1].kind == nnkPragmaBlock
doAssert body[1][0].kind == nnkPragma
doAssert body[1][0][0] == bindSym"thingy"
checkSym(myproc)