summary refs log blame commit diff stats
path: root/tests/stdlib/tsugar.nim
blob: 5006cf52b9517c558293a2c4b451cb7d5eb07bdf (plain) (tree)
1
2
           
                                      

























                                                                                      








                                                
discard """
  output: "@[@[], @[], @[], @[], @[]]"
"""
import sugar
import macros

block distinctBase:
  block:
    type
      Foo[T] = distinct seq[T]
    var a: Foo[int]
    doAssert a.type.distinctBase is seq[int]

  block:
    # simplified from https://github.com/nim-lang/Nim/pull/8531#issuecomment-410436458
    macro uintImpl(bits: static[int]): untyped =
      if bits >= 128:
        let inner = getAST(uintImpl(bits div 2))
        result = newTree(nnkBracketExpr, ident("UintImpl"), inner)
      else:
        result = ident("uint64")

    type
      BaseUint = UintImpl or SomeUnsignedInt
      UintImpl[Baseuint] = object
      Uint[bits: static[int]] = distinct uintImpl(bits)

    doAssert Uint[128].distinctBase is UintImpl[uint64]

# bug #7816
import sequtils

proc tester[T](x: T) =
  let test = toSeq(0..4).map(i => newSeq[int]())
  echo test

tester(1)