Don't consider concept types as non-complex during codegen (#8119)
Fixes #7125
This commit is contained in:
parent
a85493610c
commit
bb23d903b6
2 changed files with 15 additions and 2 deletions
|
|
@ -288,7 +288,7 @@ type
|
||||||
proc genRefAssign(p: BProc, dest, src: TLoc, flags: TAssignmentFlags)
|
proc genRefAssign(p: BProc, dest, src: TLoc, flags: TAssignmentFlags)
|
||||||
|
|
||||||
proc isComplexValueType(t: PType): bool {.inline.} =
|
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
|
result = t.kind in {tyArray, tySet, tyTuple, tyObject} or
|
||||||
(t.kind == tyProc and t.callConv == ccClosure)
|
(t.kind == tyProc and t.callConv == ccClosure)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@ implicit generic
|
||||||
generic
|
generic
|
||||||
false
|
false
|
||||||
true
|
true
|
||||||
-1'''
|
-1
|
||||||
|
Meow'''
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# https://github.com/nim-lang/Nim/issues/1147
|
# https://github.com/nim-lang/Nim/issues/1147
|
||||||
|
|
@ -98,3 +99,15 @@ let b = B()
|
||||||
echo b is A
|
echo b is A
|
||||||
echo b.size()
|
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()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue