diff options
author | Araq <rumpf_a@web.de> | 2015-07-22 19:47:20 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-07-24 01:04:40 +0200 |
commit | d82d430cbe304e891228b65bbfcedf8219c70a33 (patch) | |
tree | b885550a6d19442fe5be97df031b92e8059eb002 /compiler | |
parent | cd42d38887d6c15be42c79b51d86e172f271d5f7 (diff) | |
download | Nim-d82d430cbe304e891228b65bbfcedf8219c70a33.tar.gz |
fixes #2823
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/ccgtypes.nim | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/ccgtypes.nim b/compiler/ccgtypes.nim index 3742fd2fd..84d02d1da 100644 --- a/compiler/ccgtypes.nim +++ b/compiler/ccgtypes.nim @@ -323,7 +323,8 @@ proc paramStorageLoc(param: PSym): TStorageLoc = result = OnUnknown proc genProcParams(m: BModule, t: PType, rettype, params: var Rope, - check: var IntSet, declareEnvironment=true) = + check: var IntSet, declareEnvironment=true; + weakDep=false) = params = nil if (t.sons[0] == nil) or isInvalidReturnType(t.sons[0]): rettype = ~"void" @@ -341,6 +342,8 @@ proc genProcParams(m: BModule, t: PType, rettype, params: var Rope, add(params, ~"*") incl(param.loc.flags, lfIndirect) param.loc.s = OnUnknown + elif weakDep: + add(params, getTypeDescWeak(m, param.typ, check)) else: add(params, getTypeDescAux(m, param.typ, check)) add(params, ~" ") @@ -577,7 +580,7 @@ proc getTypeDescAux(m: BModule, typ: PType, check: var IntSet): Rope = result = getTypeName(t) idTablePut(m.typeCache, t, result) var rettype, desc: Rope - genProcParams(m, t, rettype, desc, check) + genProcParams(m, t, rettype, desc, check, true, true) if not isImportedType(t): if t.callConv != ccClosure: # procedure vars may need a closure! addf(m.s[cfsTypes], "typedef $1_PTR($2, $3) $4;$n", |