Delete statements in a {} block when they are SEF
This is probably equivalent to what we did, as FoldStmt changes SEF statements to ';' statements, but it's simpler.
This commit is contained in:
@@ -1578,17 +1578,18 @@ class foldconst(object):
|
|||||||
return
|
return
|
||||||
|
|
||||||
if nt == '{}':
|
if nt == '{}':
|
||||||
|
# Remove SEF statements, and mark as SEF if it ends up empty
|
||||||
idx = 0
|
idx = 0
|
||||||
issef = True
|
issef = True
|
||||||
while idx < len(child):
|
while idx < len(child):
|
||||||
self.FoldTree(child, idx)
|
self.FoldTree(child, idx)
|
||||||
self.FoldStmt(child, idx)
|
self.FoldStmt(child, idx)
|
||||||
issef = issef and child[idx].SEF
|
if child[idx].SEF:
|
||||||
if child[idx].nt == ';' \
|
# SEF statements can be removed
|
||||||
or child[idx].nt == '{}' and not child[idx].ch:
|
|
||||||
del child[idx]
|
del child[idx]
|
||||||
else:
|
else:
|
||||||
idx += 1
|
idx += 1
|
||||||
|
issef = False
|
||||||
if issef:
|
if issef:
|
||||||
node.SEF = True
|
node.SEF = True
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user