Hi,

I want to declare a function that takes another one as its parameter. 
    
    
    func someFunc(f: func(): bool): bool =
      f()
    
    
    Run

So I expect `someFunc` and `f` to have the `noSideEffect` pragma. 
    
    
    import std/typetraits
    
    echo someFunc.type()
    
    
    Run

But only `someFunc` has it, not its parameter. 
    
    
    proc (f: proc (): bool{.closure.}): bool{.noSideEffect, gcsafe, locks: 
<unknown>.}
    
    
    Run

Speaking of side effect, this affects lambdas too. 
    
    
    echo type(func (): bool)
    
    
    Run
    
    
    proc (): bool{.closure.}
    
    
    Run

So, is it a bug ?

Although it is not a big deal since the first `func` in `someFunc` enforces `f` 
to have no side effects.

Reply via email to