mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-14 15:23:27 +00:00
fixes #9940
This commit is contained in:
@@ -1475,7 +1475,7 @@ proc genObjectInfo(m: BModule; typ, origType: PType, name: Rope; info: TLineInfo
|
||||
typeToString(typ))
|
||||
genTypeInfoAux(m, typ, origType, name, info)
|
||||
var tmp = getNimNode(m)
|
||||
if not isImportedType(typ):
|
||||
if (not isImportedType(typ)) or tfCompleteStruct in typ.flags:
|
||||
genObjectFields(m, typ, origType, typ.n, tmp, info)
|
||||
m.s[cfsTypeInit3].addf("$1.node = &$2;$n", [tiNameForHcr(m, name), tmp])
|
||||
var t = typ.baseClass
|
||||
|
||||
@@ -24,7 +24,10 @@ type
|
||||
fulfilled: Atomic[bool]
|
||||
|
||||
var x: Pledge
|
||||
when defined(gcRefc):
|
||||
when defined(cpp):
|
||||
# TODO: fixme
|
||||
discard "it doesn't work for refc/orc because of contrived `Atomic` in cpp"
|
||||
elif defined(gcRefc):
|
||||
doAssert x.repr == "[p = nil]"
|
||||
elif not defined(cpp): # fixme # bug #20081
|
||||
else: # fixme # bug #20081
|
||||
doAssert x.repr == "Pledge(p: nil)"
|
||||
|
||||
@@ -4,6 +4,7 @@ success
|
||||
M1 M2
|
||||
ok
|
||||
'''
|
||||
matrix: "--mm:refc;--mm:orc"
|
||||
"""
|
||||
|
||||
type
|
||||
@@ -133,3 +134,30 @@ proc foo = # bug #23280
|
||||
doAssert L mod 6 == 0
|
||||
|
||||
foo()
|
||||
|
||||
block: # bug #9940
|
||||
{.emit:"""/*TYPESECTION*/
|
||||
typedef struct { int base; } S;
|
||||
""".}
|
||||
|
||||
type S {.importc: "S", completeStruct.} = object
|
||||
base: cint
|
||||
proc init(x:ptr S) =
|
||||
x.base = 1
|
||||
|
||||
type
|
||||
Foo = object
|
||||
a: seq[float]
|
||||
b: seq[float]
|
||||
c: seq[float]
|
||||
d: seq[float]
|
||||
s: S
|
||||
|
||||
proc newT(): Foo =
|
||||
var t: Foo
|
||||
t.s.addr.init
|
||||
doAssert t.s.base == 1
|
||||
t
|
||||
|
||||
var t = newT()
|
||||
doAssert t.s.base == 1
|
||||
|
||||
Reference in New Issue
Block a user