mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-24 13:30:53 +00:00
fixes #21975
(cherry picked from commit 433b725cbb)
This commit is contained in:
@@ -2805,9 +2805,24 @@ proc recursiveSetFlag(n: PNode, flag: TNodeFlag) =
|
||||
for i in 0..<n.safeLen: recursiveSetFlag(n[i], flag)
|
||||
incl(n.flags, flag)
|
||||
|
||||
proc enterPragmaBlock(c: PContext): POptionEntry =
|
||||
result = POptionEntry(options: c.config.options,
|
||||
notes: c.config.notes,
|
||||
warningAsErrors: c.config.warningAsErrors,
|
||||
features: c.features)
|
||||
|
||||
proc leavePragmaBlock(c: PContext, p: POptionEntry) =
|
||||
c.config.options = p.options
|
||||
c.config.notes = p.notes
|
||||
c.config.warningAsErrors = p.warningAsErrors
|
||||
c.features = p.features
|
||||
|
||||
proc semPragmaBlock(c: PContext, n: PNode; expectedType: PType = nil): PNode =
|
||||
checkSonsLen(n, 2, c.config)
|
||||
let pragmaList = n[0]
|
||||
|
||||
let oldOptionEntry = enterPragmaBlock(c)
|
||||
|
||||
pragma(c, nil, pragmaList, exprPragmas, isStatement = true)
|
||||
|
||||
var inUncheckedAssignSection = 0
|
||||
@@ -2832,6 +2847,8 @@ proc semPragmaBlock(c: PContext, n: PNode; expectedType: PType = nil): PNode =
|
||||
of wNoRewrite: recursiveSetFlag(result, nfNoRewrite)
|
||||
else: discard
|
||||
|
||||
leavePragmaBlock(c, oldOptionEntry)
|
||||
|
||||
proc semStaticStmt(c: PContext, n: PNode): PNode =
|
||||
#echo "semStaticStmt"
|
||||
#writeStackTrace()
|
||||
|
||||
11
tests/pragmas/tpragmablock.nim
Normal file
11
tests/pragmas/tpragmablock.nim
Normal file
@@ -0,0 +1,11 @@
|
||||
discard """
|
||||
matrix: "--warningaserror:BareExcept"
|
||||
"""
|
||||
|
||||
{.warning[BareExcept]:on.}:
|
||||
discard
|
||||
|
||||
try:
|
||||
echo "Y"
|
||||
except: # warning disabled here
|
||||
discard
|
||||
Reference in New Issue
Block a user