'lock levels' are deprecated, now a noop (#20539)
* 'lock levels' are deprecated, now a noop * fixes tests
This commit is contained in:
parent
7587371554
commit
5602183234
57 changed files with 121 additions and 372 deletions
|
|
@ -48,7 +48,6 @@ type
|
|||
ProcConvMismatch* = enum
|
||||
pcmNoSideEffect
|
||||
pcmNotGcSafe
|
||||
pcmLockDifference
|
||||
pcmNotIterator
|
||||
pcmDifferentCallConv
|
||||
|
||||
|
|
@ -728,9 +727,6 @@ proc typeToString(typ: PType, prefer: TPreferedDesc = preferName): string =
|
|||
if tfThread in t.flags:
|
||||
addSep(prag)
|
||||
prag.add("gcsafe")
|
||||
if t.lockLevel.ord != UnspecifiedLockLevel.ord:
|
||||
addSep(prag)
|
||||
prag.add("locks: " & $t.lockLevel)
|
||||
if prag.len != 0: result.add("{." & prag & ".}")
|
||||
of tyVarargs:
|
||||
result = typeToStr[t.kind] % typeToString(t[0])
|
||||
|
|
@ -1386,7 +1382,6 @@ type
|
|||
efRaisesUnknown
|
||||
efTagsDiffer
|
||||
efTagsUnknown
|
||||
efLockLevelsDiffer
|
||||
efEffectsDelayed
|
||||
efTagsIllegal
|
||||
|
||||
|
|
@ -1430,17 +1425,13 @@ proc compatibleEffects*(formal, actual: PType): EffectsCompat =
|
|||
elif hasIncompatibleEffect(sn, real[tagEffects]):
|
||||
return efTagsIllegal
|
||||
|
||||
if formal.lockLevel.ord < 0 or
|
||||
actual.lockLevel.ord <= formal.lockLevel.ord:
|
||||
for i in 1 ..< min(formal.n.len, actual.n.len):
|
||||
if formal.n[i].sym.flags * {sfEffectsDelayed} != actual.n[i].sym.flags * {sfEffectsDelayed}:
|
||||
result = efEffectsDelayed
|
||||
break
|
||||
|
||||
for i in 1 ..< min(formal.n.len, actual.n.len):
|
||||
if formal.n[i].sym.flags * {sfEffectsDelayed} != actual.n[i].sym.flags * {sfEffectsDelayed}:
|
||||
result = efEffectsDelayed
|
||||
break
|
||||
result = efCompat
|
||||
|
||||
result = efCompat
|
||||
else:
|
||||
result = efLockLevelsDiffer
|
||||
|
||||
proc isCompileTimeOnly*(t: PType): bool {.inline.} =
|
||||
result = t.kind in {tyTypeDesc, tyStatic}
|
||||
|
|
@ -1577,13 +1568,6 @@ proc getProcConvMismatch*(c: ConfigRef, f, a: PType, rel = isNone): (set[ProcCon
|
|||
result[1] = isNone
|
||||
result[0].incl pcmDifferentCallConv
|
||||
|
||||
if f.lockLevel.ord != UnspecifiedLockLevel.ord and
|
||||
a.lockLevel.ord != UnspecifiedLockLevel.ord:
|
||||
# proctypeRel has more logic to catch this difference,
|
||||
# so dont need to do `rel = isNone`
|
||||
# but it's a pragma mismatch reason which is why it's here
|
||||
result[0].incl pcmLockDifference
|
||||
|
||||
proc addPragmaAndCallConvMismatch*(message: var string, formal, actual: PType, conf: ConfigRef) =
|
||||
assert formal.kind == tyProc and actual.kind == tyProc
|
||||
let (convMismatch, _) = getProcConvMismatch(conf, formal, actual)
|
||||
|
|
@ -1598,9 +1582,6 @@ proc addPragmaAndCallConvMismatch*(message: var string, formal, actual: PType, c
|
|||
expectedPragmas.add "noSideEffect, "
|
||||
of pcmNotGcSafe:
|
||||
expectedPragmas.add "gcsafe, "
|
||||
of pcmLockDifference:
|
||||
gotPragmas.add("locks: " & $actual.lockLevel & ", ")
|
||||
expectedPragmas.add("locks: " & $formal.lockLevel & ", ")
|
||||
of pcmNotIterator: discard
|
||||
|
||||
if expectedPragmas.len > 0:
|
||||
|
|
@ -1621,8 +1602,6 @@ proc processPragmaAndCallConvMismatch(msg: var string, formal, actual: PType, co
|
|||
msg.add "\n.tag effects differ"
|
||||
of efTagsUnknown:
|
||||
msg.add "\n.tag effect is 'any tag allowed'"
|
||||
of efLockLevelsDiffer:
|
||||
msg.add "\nlock levels differ"
|
||||
of efEffectsDelayed:
|
||||
msg.add "\n.effectsOf annotations differ"
|
||||
of efTagsIllegal:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue