Don't consider concept types as non-complex during codegen (#8119)

Fixes #7125
This commit is contained in:
LemonBoy
2018-06-27 17:21:53 +02:00
committed by Andreas Rumpf
parent a85493610c
commit bb23d903b6
2 changed files with 15 additions and 2 deletions

View File

@@ -288,7 +288,7 @@ type
proc genRefAssign(p: BProc, dest, src: TLoc, flags: TAssignmentFlags)
proc isComplexValueType(t: PType): bool {.inline.} =
let t = t.skipTypes(abstractInst)
let t = t.skipTypes(abstractInst + tyUserTypeClasses)
result = t.kind in {tyArray, tySet, tyTuple, tyObject} or
(t.kind == tyProc and t.callConv == ccClosure)

View File

@@ -9,7 +9,8 @@ implicit generic
generic
false
true
-1'''
-1
Meow'''
"""
# https://github.com/nim-lang/Nim/issues/1147
@@ -98,3 +99,15 @@ let b = B()
echo b is A
echo b.size()
# https://github.com/nim-lang/Nim/issues/7125
type
Thing = concept x
x.hello is string
Cat = object
proc hello(d: Cat): string = "Meow"
proc sayHello(c: Thing) = echo(c.hello)
var a: Thing = Cat()
a.sayHello()