Skip to content

Commit 314f4a1

Browse files
committed
Fix several cases of name shadowing, and greatly simplify some
unnecessary stack operations with tuple appending.
1 parent 5c896fa commit 314f4a1

File tree

2 files changed

+32
-74
lines changed

2 files changed

+32
-74
lines changed

ASTree.cpp

Lines changed: 31 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -245,20 +245,20 @@ PycRef<ASTNode> BuildFromCode(PycRef<PycCode> code, PycModule* mod)
245245
break;
246246
case Pyc::BUILD_CLASS:
247247
{
248-
PycRef<ASTNode> code = stack.top();
248+
PycRef<ASTNode> class_code = stack.top();
249249
stack.pop();
250250
PycRef<ASTNode> bases = stack.top();
251251
stack.pop();
252252
PycRef<ASTNode> name = stack.top();
253253
stack.pop();
254-
stack.push(new ASTClass(code, bases, name));
254+
stack.push(new ASTClass(class_code, bases, name));
255255
}
256256
break;
257257
case Pyc::BUILD_FUNCTION:
258258
{
259-
PycRef<ASTNode> code = stack.top();
259+
PycRef<ASTNode> fun_code = stack.top();
260260
stack.pop();
261-
stack.push(new ASTFunction(code, ASTFunction::defarg_t()));
261+
stack.push(new ASTFunction(fun_code, ASTFunction::defarg_t()));
262262
}
263263
break;
264264
case Pyc::BUILD_LIST_A:
@@ -435,17 +435,17 @@ PycRef<ASTNode> BuildFromCode(PycRef<PycCode> code, PycModule* mod)
435435
PycRef<ASTNode> param = stack.top();
436436
stack.pop();
437437
if (param.type() == ASTNode::NODE_FUNCTION) {
438-
PycRef<ASTNode> code = param.cast<ASTFunction>()->code();
439-
PycRef<PycCode> code_src = code.cast<ASTObject>()->object().cast<PycCode>();
438+
PycRef<ASTNode> fun_code = param.cast<ASTFunction>()->code();
439+
PycRef<PycCode> code_src = fun_code.cast<ASTObject>()->object().cast<PycCode>();
440440
PycRef<PycString> function_name = code_src->name();
441441
if (function_name->isEqual("<lambda>")) {
442442
pparamList.push_front(param);
443443
} else {
444444
// Decorator used
445-
PycRef<ASTNode> name = new ASTName(function_name);
446-
curblock->append(new ASTStore(param, name));
445+
PycRef<ASTNode> decor_name = new ASTName(function_name);
446+
curblock->append(new ASTStore(param, decor_name));
447447

448-
pparamList.push_front(name);
448+
pparamList.push_front(decor_name);
449449
}
450450
} else {
451451
pparamList.push_front(param);
@@ -1326,14 +1326,14 @@ PycRef<ASTNode> BuildFromCode(PycRef<PycCode> code, PycModule* mod)
13261326
case Pyc::MAKE_CLOSURE_A:
13271327
case Pyc::MAKE_FUNCTION_A:
13281328
{
1329-
PycRef<ASTNode> code = stack.top();
1329+
PycRef<ASTNode> fun_code = stack.top();
13301330
stack.pop();
13311331

13321332
/* Test for the qualified name of the function (at TOS) */
1333-
int tos_type = code.cast<ASTObject>()->object().type();
1333+
int tos_type = fun_code.cast<ASTObject>()->object().type();
13341334
if (tos_type != PycObject::TYPE_CODE &&
13351335
tos_type != PycObject::TYPE_CODE2) {
1336-
code = stack.top();
1336+
fun_code = stack.top();
13371337
stack.pop();
13381338
}
13391339

@@ -1342,7 +1342,7 @@ PycRef<ASTNode> BuildFromCode(PycRef<PycCode> code, PycModule* mod)
13421342
defArgs.push_front(stack.top());
13431343
stack.pop();
13441344
}
1345-
stack.push(new ASTFunction(code, defArgs));
1345+
stack.push(new ASTFunction(fun_code, defArgs));
13461346
}
13471347
break;
13481348
case Pyc::NOP:
@@ -1707,19 +1707,12 @@ PycRef<ASTNode> BuildFromCode(PycRef<PycCode> code, PycModule* mod)
17071707
PycRef<ASTNode> attr = new ASTBinary(name, new ASTName(code->getName(operand)), ASTBinary::BIN_ATTR);
17081708

17091709
PycRef<ASTNode> tup = stack.top();
1710-
if (tup.type() == ASTNode::NODE_TUPLE) {
1711-
stack.pop();
1712-
1713-
PycRef<ASTTuple> tuple = tup.cast<ASTTuple>();
1714-
tuple->add(attr);
1715-
1716-
stack.push(tuple.cast<ASTNode>());
1717-
} else {
1710+
if (tup.type() == ASTNode::NODE_TUPLE)
1711+
tup.cast<ASTTuple>()->add(attr);
1712+
else
17181713
fputs("Something TERRIBLE happened!\n", stderr);
1719-
}
17201714

17211715
if (--unpack <= 0) {
1722-
PycRef<ASTNode> tup = stack.top();
17231716
stack.pop();
17241717
PycRef<ASTNode> seq = stack.top();
17251718
stack.pop();
@@ -1743,19 +1736,12 @@ PycRef<ASTNode> BuildFromCode(PycRef<PycCode> code, PycModule* mod)
17431736
PycRef<ASTNode> name = new ASTName(code->getCellVar(operand));
17441737

17451738
PycRef<ASTNode> tup = stack.top();
1746-
if (tup.type() == ASTNode::NODE_TUPLE) {
1747-
stack.pop();
1748-
1749-
PycRef<ASTTuple> tuple = tup.cast<ASTTuple>();
1750-
tuple->add(name);
1751-
1752-
stack.push(tuple.cast<ASTNode>());
1753-
} else {
1739+
if (tup.type() == ASTNode::NODE_TUPLE)
1740+
tup.cast<ASTTuple>()->add(name);
1741+
else
17541742
fputs("Something TERRIBLE happened!\n", stderr);
1755-
}
17561743

17571744
if (--unpack <= 0) {
1758-
PycRef<ASTNode> tup = stack.top();
17591745
stack.pop();
17601746
PycRef<ASTNode> seq = stack.top();
17611747
stack.pop();
@@ -1781,19 +1767,12 @@ PycRef<ASTNode> BuildFromCode(PycRef<PycCode> code, PycModule* mod)
17811767
name = new ASTName(code->getVarName(operand));
17821768

17831769
PycRef<ASTNode> tup = stack.top();
1784-
if (tup.type() == ASTNode::NODE_TUPLE) {
1785-
stack.pop();
1786-
1787-
PycRef<ASTTuple> tuple = tup.cast<ASTTuple>();
1788-
tuple->add(name);
1789-
1790-
stack.push(tuple.cast<ASTNode>());
1791-
} else {
1770+
if (tup.type() == ASTNode::NODE_TUPLE)
1771+
tup.cast<ASTTuple>()->add(name);
1772+
else
17921773
fputs("Something TERRIBLE happened!\n", stderr);
1793-
}
17941774

17951775
if (--unpack <= 0) {
1796-
PycRef<ASTNode> tup = stack.top();
17971776
stack.pop();
17981777
PycRef<ASTNode> seq = stack.top();
17991778
stack.pop();
@@ -1843,19 +1822,12 @@ PycRef<ASTNode> BuildFromCode(PycRef<PycCode> code, PycModule* mod)
18431822

18441823
if (unpack) {
18451824
PycRef<ASTNode> tup = stack.top();
1846-
if (tup.type() == ASTNode::NODE_TUPLE) {
1847-
stack.pop();
1848-
1849-
PycRef<ASTTuple> tuple = tup.cast<ASTTuple>();
1850-
tuple->add(name);
1851-
1852-
stack.push(tuple.cast<ASTNode>());
1853-
} else {
1825+
if (tup.type() == ASTNode::NODE_TUPLE)
1826+
tup.cast<ASTTuple>()->add(name);
1827+
else
18541828
fputs("Something TERRIBLE happened!\n", stderr);
1855-
}
18561829

18571830
if (--unpack <= 0) {
1858-
PycRef<ASTNode> tup = stack.top();
18591831
stack.pop();
18601832
PycRef<ASTNode> seq = stack.top();
18611833
stack.pop();
@@ -1886,19 +1858,12 @@ PycRef<ASTNode> BuildFromCode(PycRef<PycCode> code, PycModule* mod)
18861858
PycRef<ASTNode> name = new ASTName(code->getName(operand));
18871859

18881860
PycRef<ASTNode> tup = stack.top();
1889-
if (tup.type() == ASTNode::NODE_TUPLE) {
1890-
stack.pop();
1891-
1892-
PycRef<ASTTuple> tuple = tup.cast<ASTTuple>();
1893-
tuple->add(name);
1894-
1895-
stack.push(tuple.cast<ASTNode>());
1896-
} else {
1861+
if (tup.type() == ASTNode::NODE_TUPLE)
1862+
tup.cast<ASTTuple>()->add(name);
1863+
else
18971864
fputs("Something TERRIBLE happened!\n", stderr);
1898-
}
18991865

19001866
if (--unpack <= 0) {
1901-
PycRef<ASTNode> tup = stack.top();
19021867
stack.pop();
19031868
PycRef<ASTNode> seq = stack.top();
19041869
stack.pop();
@@ -2005,19 +1970,12 @@ PycRef<ASTNode> BuildFromCode(PycRef<PycCode> code, PycModule* mod)
20051970
PycRef<ASTNode> save = new ASTSubscr(dest, subscr);
20061971

20071972
PycRef<ASTNode> tup = stack.top();
2008-
if (tup.type() == ASTNode::NODE_TUPLE) {
2009-
stack.pop();
2010-
2011-
PycRef<ASTTuple> tuple = tup.cast<ASTTuple>();
2012-
tuple->add(save);
2013-
2014-
stack.push(tuple.cast<ASTNode>());
2015-
} else {
1973+
if (tup.type() == ASTNode::NODE_TUPLE)
1974+
tup.cast<ASTTuple>()->add(save);
1975+
else
20161976
fputs("Something TERRIBLE happened!\n", stderr);
2017-
}
20181977

20191978
if (--unpack <= 0) {
2020-
PycRef<ASTNode> tup = stack.top();
20211979
stack.pop();
20221980
PycRef<ASTNode> seq = stack.top();
20231981
stack.pop();

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
88
find_package(PythonInterp REQUIRED)
99

1010
if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
11-
set(CMAKE_CXX_FLAGS "-Wall -Wextra -Werror ${CMAKE_CXX_FLAGS}")
11+
set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wshadow -Werror ${CMAKE_CXX_FLAGS}")
1212
endif()
1313

1414
set(PYTHON_VERSIONS

0 commit comments

Comments
 (0)