Revert "fixes #20883; Unspecified generic on default value segfaults the compiler (#20917)"
This reverts commit 10b6e4f5b4.
This commit is contained in:
parent
e98efdcc5e
commit
feb0481ba3
2 changed files with 2 additions and 7 deletions
|
|
@ -81,7 +81,6 @@ type
|
||||||
info*: TLineInfo
|
info*: TLineInfo
|
||||||
allowMetaTypes*: bool # allow types such as seq[Number]
|
allowMetaTypes*: bool # allow types such as seq[Number]
|
||||||
# i.e. the result contains unresolved generics
|
# i.e. the result contains unresolved generics
|
||||||
fromStaticExpr*: bool
|
|
||||||
skipTypedesc*: bool # whether we should skip typeDescs
|
skipTypedesc*: bool # whether we should skip typeDescs
|
||||||
isReturnType*: bool
|
isReturnType*: bool
|
||||||
owner*: PSym # where this instantiation comes from
|
owner*: PSym # where this instantiation comes from
|
||||||
|
|
@ -239,8 +238,6 @@ proc replaceTypeVarsN(cl: var TReplTypeVars, n: PNode; start=0): PNode =
|
||||||
assert result.kind notin nkCallKinds
|
assert result.kind notin nkCallKinds
|
||||||
else:
|
else:
|
||||||
if n.len > 0:
|
if n.len > 0:
|
||||||
if n.kind in nkCallKinds and n[0].kind == nkIdent and cl.fromStaticExpr:
|
|
||||||
localError(cl.c.config, n.info, "An unresolved call in staticExpr: '" & renderTree(n) & "'")
|
|
||||||
newSons(result, n.len)
|
newSons(result, n.len)
|
||||||
if start > 0:
|
if start > 0:
|
||||||
result[0] = n[0]
|
result[0] = n[0]
|
||||||
|
|
@ -663,11 +660,10 @@ proc initTypeVars*(p: PContext, typeMap: LayeredIdTable, info: TLineInfo;
|
||||||
result.owner = owner
|
result.owner = owner
|
||||||
|
|
||||||
proc replaceTypesInBody*(p: PContext, pt: TIdTable, n: PNode;
|
proc replaceTypesInBody*(p: PContext, pt: TIdTable, n: PNode;
|
||||||
owner: PSym, allowMetaTypes = false, fromStaticExpr = false): PNode =
|
owner: PSym, allowMetaTypes = false): PNode =
|
||||||
var typeMap = initLayeredTypeMap(pt)
|
var typeMap = initLayeredTypeMap(pt)
|
||||||
var cl = initTypeVars(p, typeMap, n.info, owner)
|
var cl = initTypeVars(p, typeMap, n.info, owner)
|
||||||
cl.allowMetaTypes = allowMetaTypes
|
cl.allowMetaTypes = allowMetaTypes
|
||||||
cl.fromStaticExpr = fromStaticExpr
|
|
||||||
pushInfoContext(p.config, n.info)
|
pushInfoContext(p.config, n.info)
|
||||||
result = replaceTypeVarsN(cl, n)
|
result = replaceTypeVarsN(cl, n)
|
||||||
popInfoContext(p.config)
|
popInfoContext(p.config)
|
||||||
|
|
|
||||||
|
|
@ -807,8 +807,7 @@ proc tryResolvingStaticExpr(c: var TCandidate, n: PNode,
|
||||||
# N is bound to a concrete value during the matching of the first param.
|
# N is bound to a concrete value during the matching of the first param.
|
||||||
# This proc is used to evaluate such static expressions.
|
# This proc is used to evaluate such static expressions.
|
||||||
let instantiated = replaceTypesInBody(c.c, c.bindings, n, nil,
|
let instantiated = replaceTypesInBody(c.c, c.bindings, n, nil,
|
||||||
allowMetaTypes = allowUnresolved,
|
allowMetaTypes = allowUnresolved)
|
||||||
fromStaticExpr = true)
|
|
||||||
result = c.c.semExpr(c.c, instantiated)
|
result = c.c.semExpr(c.c, instantiated)
|
||||||
|
|
||||||
proc inferStaticParam*(c: var TCandidate, lhs: PNode, rhs: BiggestInt): bool =
|
proc inferStaticParam*(c: var TCandidate, lhs: PNode, rhs: BiggestInt): bool =
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue