added system.unown to make 'owned' sane to use in practice; later on we might change the type inference rules to make it more convenient
This commit is contained in:
parent
ddc86d1b4b
commit
0a84b8fb4d
7 changed files with 53 additions and 9 deletions
|
|
@ -471,10 +471,14 @@ proc semVarOrLet(c: PContext, n: PNode, symkind: TSymKind): PNode =
|
|||
($typ.kind).substr(2).toLowerAscii)
|
||||
elif typ.kind == tyProc and tfUnresolved in typ.flags:
|
||||
localError(c.config, def.info, errProcHasNoConcreteType % def.renderTree)
|
||||
elif symkind == skVar and typ.kind == tyOwned and def.kind notin nkCallKinds:
|
||||
# special type inference rule: 'var it = ownedPointer' is turned
|
||||
# into an unowned pointer.
|
||||
typ = typ.lastSon
|
||||
when false:
|
||||
# XXX This typing rule is neither documented nor complete enough to
|
||||
# justify it. Instead use the newer 'unowned x' until we figured out
|
||||
# a more general solution.
|
||||
if symkind == skVar and typ.kind == tyOwned and def.kind notin nkCallKinds:
|
||||
# special type inference rule: 'var it = ownedPointer' is turned
|
||||
# into an unowned pointer.
|
||||
typ = typ.lastSon
|
||||
else:
|
||||
if symkind == skLet: localError(c.config, a.info, errLetNeedsInit)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue