Nim/tests/metatype/ttypedesc2.nim
Timothee Cour b80d293a3f
close #12704 by adding a test (tuple codegen error) (#13592)
* close #12704 by adding a test

* move test to tests/metatype/ttypedesc2.nim
2020-03-06 08:55:53 +01:00

93 lines
No EOL
1.7 KiB
Nim

discard """
output: '''(x: 'a')'''
"""
type
Bar[T] = object
x: T
proc infer(T: typeDesc): Bar[T] = Bar[T](x: 'a')
let foo = infer(char)
echo foo
when true:
# bug #1783
type
uoffset_t* = uint32
FlatBufferBuilder* = object
Array* [T] = object
o*: uoffset_t
len*: int
data*: ptr UncheckedArray[T]
proc ca* (fbb: ptr FlatBufferBuilder, T: typedesc, len: int): Array[T] {.noinit.} =
result.len = len
var fbb: ptr FlatBufferBuilder
let boolarray = ca(fbb, bool, 2)
let boolarray2 = fbb.ca(bool, 2)
# bug #1664
type Point[T] = tuple[x, y: T]
proc origin(T: typedesc): Point[T] = discard
discard origin(int)
block: # issue #12704
const a = $("a", "b")
proc fun() =
const str = $int
let b = $(str, "asdf")
fun()
# https://github.com/nim-lang/Nim/issues/7516
import typetraits
block: #issue #12704
const a = $("a", "b")
proc fun() =
const str = name(int)
let b = $(str, "asdf")
fun()
proc hasDefault1(T: type = int): auto = return T.name
doAssert hasDefault1(int) == "int"
doAssert hasDefault1(string) == "string"
doAssert hasDefault1() == "int"
proc hasDefault2(T = string): auto = return T.name
doAssert hasDefault2(int) == "int"
doAssert hasDefault2(string) == "string"
doAssert hasDefault2() == "string"
# bug #9195
type
Error = enum
erA, erB, erC
Result[T, U] = object
x: T
u: U
PB = object
proc decodeUVarint*(itzzz: typedesc[SomeUnsignedInt],
data: openArray[char]): Result[itzzz, Error] =
result = Result[itzzz, Error](x: 0, u: erC)
discard decodeUVarint(uint32, "abc")
type
X = object
Y[T] = object
proc testObj(typ: typedesc[object]): Y[typ] =
discard
discard testObj(X)
#bug 12804
import typetraits
discard int.name[0]