I'm trying to iterate only a slice of the children of a NimNode, but i'm not 
able to find a way to do it
    
    
    macro xyz(body: untyped): untyped =
        for child in body[1 .. ^1]:
            echo child.astGenRepr
    
    xyz:
        var q = 1
        var p = 2
        var r = 3
    
    
    
    Run

Produces:
    
    
    /usercode/in.nim(2, 22) Error: type mismatch: got <NimNode, 
HSlice[system.int, system.BackwardsIndex]>
    but expected one of:
    proc `[]`(s: string; i: BackwardsIndex): char
      first type mismatch at position: 0
    proc `[]`(s: var string; i: BackwardsIndex): var char
      first type mismatch at position: 0
    proc `[]`[I: Ordinal; T](a: T; i: I): T
      first type mismatch at position: 0
    proc `[]`[Idx, T; U, V: Ordinal](a: array[Idx, T]; x: HSlice[U, V]): seq[T]
      first type mismatch at position: 0
    proc `[]`[Idx, T](a: array[Idx, T]; i: BackwardsIndex): T
      first type mismatch at position: 0
    proc `[]`[Idx, T](a: var array[Idx, T]; i: BackwardsIndex): var T
      first type mismatch at position: 0
    proc `[]`[T, U: Ordinal](s: string; x: HSlice[T, U]): string
      first type mismatch at position: 0
    proc `[]`[T; U, V: Ordinal](s: openArray[T]; x: HSlice[U, V]): seq[T]
      first type mismatch at position: 0
    proc `[]`[T](s: openArray[T]; i: BackwardsIndex): T
      first type mismatch at position: 0
    proc `[]`[T](s: var openArray[T]; i: BackwardsIndex): var T
      first type mismatch at position: 0
    template `[]`(s: string; i: int): char
      first type mismatch at position: 0
    
    expression: `[]`(body, 1 .. BackwardsIndex(1))
    
    
    Run

Is there a way to achieve that ? 

Reply via email to