* Implemented level based macro expand functionality - it can handle single macro call or expand whole function/proc/etc and it - In addition, I have altered the parser to provide the endInfo for the node. The usefulness of the `endInfo` is not limited to the `expandMacro` functionality but also it is useful for `ideOutline` functionality and I have altered the ideOutline functionality to use `endInfo`. Note `endInfo` most of the time is lost during the AST transformation thus in `nimsuggest.nim` I am using freshly parsed tree to get the location information. * Make sure we stop expanding correctly * Test CI * Fix tv3_outline.nim
27 lines
531 B
Nim
27 lines
531 B
Nim
# tests v3
|
|
|
|
type
|
|
Foo* = ref object of RootObj
|
|
bar*: string
|
|
|
|
proc test(f: Foo) =
|
|
echo f.ba#[!]#r
|
|
|
|
#[!]#
|
|
|
|
discard """
|
|
$nimsuggest --v3 --tester $file
|
|
>use $1
|
|
def skField tv3.Foo.bar string $file 5 4 "" 100
|
|
use skField tv3.Foo.bar string $file 8 9 "" 100
|
|
>def $1
|
|
def skField tv3.Foo.bar string $file 5 4 "" 100
|
|
>sug $1
|
|
sug skField bar string $file 5 4 "" 100 Prefix
|
|
>globalSymbols test
|
|
def skProc tv3.test proc (f: Foo){.gcsafe.} $file 7 5 "" 100
|
|
>globalSymbols Foo
|
|
def skType tv3.Foo Foo $file 4 2 "" 100
|
|
>def $2
|
|
>use $2
|
|
"""
|