I have a problem and I don't know how to solve it. Can someone help me look at 
it?

There seems to be a `RootEffect` here, I don't know how to remove it.

<https://play.nim-lang.org/#pasty=UElbLfBp>
    
    
    import std/streams
    
    type
      Chunk = ref object
      ChunkAllocator = ref ChunkAllocatorObj
      ChunkAllocatorObj = object
      
      MyStream = ref object of StreamObj
        al: ChunkAllocator
    
    method allocChunk*(al: ChunkAllocator): Chunk {.base, raises: [], gcsafe.} 
=  # RootEffect
      discard
    
    proc writeDataImpl(s: Stream, buffer: pointer, bufLen: int) =
      let s = MyStream(s)
      discard s.al.allocChunk()
    
    proc newMyStream(al: ChunkAllocator): MyStream =
      new (result)
      result.writeDataImpl = writeDataImpl   # Error: type mismatch: got 'proc 
(s: Stream, buffer: pointer, bufLen: int){.noSideEffect, gcsafe.}' for 
'writeDataImpl' but expected 'proc (s: Stream, buffer: pointer, bufLen: 
int){.nimcall, gcsafe.}'
    # .tag effects differ
    
    
    
    
    Run

Reply via email to