Skip to content

Commit

Permalink
fixes #5140
Browse files Browse the repository at this point in the history
  • Loading branch information
Araq committed Dec 22, 2016
1 parent 237e266 commit 0ef6815
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
4 changes: 3 additions & 1 deletion compiler/ccgtypes.nim
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,9 @@ proc isImportedType(t: PType): bool =
result = t.sym != nil and sfImportc in t.sym.flags

proc isImportedCppType(t: PType): bool =
result = t.sym != nil and sfInfixCall in t.sym.flags
let x = t.skipTypes(irrelevantForBackend)
result = (t.sym != nil and sfInfixCall in t.sym.flags) or
(x.sym != nil and sfInfixCall in x.sym.flags)

proc getTypeDescAux(m: BModule, origTyp: PType, check: var IntSet): Rope
proc needsComplexAssignment(typ: PType): bool =
Expand Down
28 changes: 28 additions & 0 deletions tests/cpp/tdont_init_instantiation.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
discard """
cmd: "nim cpp $file"
output: ''''''
"""

# bug #5140
{.emit:"""
#import <cassert>
template <typename X> class C {
public:
int d;
C(): d(1) { }
C<X>& operator=(const C<X> other) {
assert(d == 1);
}
};
""".}

type C{.importcpp, header: "<stdio.h>", nodecl.} [X] = object
proc mkC[X]: C[X] {.importcpp: "C<'*0>()", constructor, nodecl.}

proc foo(): C[int] =
result = mkC[int]()

discard foo()

0 comments on commit 0ef6815

Please sign in to comment.