fixes #4625
This commit is contained in:
parent
3a5edd2c6c
commit
3710e62241
2 changed files with 23 additions and 1 deletions
|
|
@ -546,7 +546,7 @@ proc getTypeDescAux(m: BModule, typ: PType, check: var IntSet): Rope =
|
||||||
of tyRef, tyPtr, tyVar:
|
of tyRef, tyPtr, tyVar:
|
||||||
var star = if t.kind == tyVar and tfVarIsPtr notin typ.flags and
|
var star = if t.kind == tyVar and tfVarIsPtr notin typ.flags and
|
||||||
compileToCpp(m): "&" else: "*"
|
compileToCpp(m): "&" else: "*"
|
||||||
var et = t.lastSon
|
var et = typ.skipTypes(abstractInst).lastSon
|
||||||
var etB = et.skipTypes(abstractInst)
|
var etB = et.skipTypes(abstractInst)
|
||||||
if etB.kind in {tyArrayConstr, tyArray, tyOpenArray, tyVarargs}:
|
if etB.kind in {tyArrayConstr, tyArray, tyOpenArray, tyVarargs}:
|
||||||
# this is correct! sets have no proper base type, so we treat
|
# this is correct! sets have no proper base type, so we treat
|
||||||
|
|
|
||||||
22
tests/cpp/tempty_generic_obj.nim
Normal file
22
tests/cpp/tempty_generic_obj.nim
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
discard """
|
||||||
|
cmd: "nim cpp $file"
|
||||||
|
output: '''int
|
||||||
|
float'''
|
||||||
|
"""
|
||||||
|
|
||||||
|
import typetraits
|
||||||
|
|
||||||
|
# bug #4625
|
||||||
|
type
|
||||||
|
Vector {.importcpp: "std::vector<'0 >", header: "vector".} [T] = object
|
||||||
|
|
||||||
|
proc initVector[T](): Vector[T] {.importcpp: "'0(@)", header: "vector", constructor.}
|
||||||
|
|
||||||
|
proc doSomething[T](v: var Vector[T]) =
|
||||||
|
echo T.name
|
||||||
|
|
||||||
|
var v = initVector[int]()
|
||||||
|
v.doSomething()
|
||||||
|
|
||||||
|
var vf = initVector[float]()
|
||||||
|
vf.doSomething() # Nim uses doSomething[int] here in C++
|
||||||
Loading…
Add table
Add a link
Reference in a new issue