Revert "fix tforwardgeneric"

This reverts commit d82a032566.
This commit is contained in:
Araq
2013-05-27 23:18:15 +02:00
parent 9c45e33d8c
commit e3f93241c3
4 changed files with 6 additions and 8 deletions

View File

@@ -1285,9 +1285,9 @@ proc getStrOrChar*(a: PNode): string =
proc isGenericRoutine*(s: PSym): bool =
case s.kind
of skProc, skTemplate, skMacro, skIterator, skMethod, skConverter:
result = sfFromGeneric in s.flags
result = s.ast != nil and s.ast[genericParamsPos].kind != nkEmpty
else: nil
proc isRoutine*(s: PSym): bool {.inline.} =
result = s.kind in {skProc, skTemplate, skMacro, skIterator, skMethod,
skConverter}

View File

@@ -288,9 +288,6 @@ proc interestingVar(s: PSym): bool {.inline.} =
proc semCaptureSym*(s, owner: PSym) =
if interestingVar(s) and owner.id != s.owner.id and s.kind != skResult:
if owner.typ != nil and not isGenericRoutine(owner):
# XXX: is this really safe?
# if we capture a var from another generic routine,
# it won't be consider captured.
owner.typ.callConv = ccClosure
#echo "semCaptureSym ", owner.name.s, owner.id, " ", s.name.s, s.id
# since the analysis is not entirely correct, we don't set 'tfCapturesEnv'

View File

@@ -125,6 +125,8 @@ proc fixupInstantiatedSymbols(c: PContext, s: PSym) =
openScope(c)
var n = oldPrc.ast
n.sons[bodyPos] = copyTree(s.getBody)
if n.sons[paramsPos].kind != nkEmpty:
addParams(c, oldPrc.typ.n, oldPrc.kind)
instantiateBody(c, n, oldPrc)
closeScope(c)
popInfoContext()

View File

@@ -1,5 +1,5 @@
discard """
output: "1.1000000000000001e+00 11"
output: "1.0000000000000000e+00 10"
ccodecheck: "!@'ClEnv'"
"""
@@ -8,6 +8,5 @@ proc p[T](a, b: T): T
echo p(0.9, 0.1), " ", p(9, 1)
proc p[T](a, b: T): T =
let c = b
result = a + b + c
result = a + b