Skip to content

Commit 89b54cb

Browse files
committed
reduce: reduce structs/enums/etc better
1 parent 67c9720 commit 89b54cb

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

tools/reduce.cpp

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -262,21 +262,30 @@ static bool removeBlocksOfCode(const ReduceSettings &settings, std::vector<std::
262262

263263
// does code block start with "{"
264264
std::size_t pos2 = pos;
265-
if (filedata[pos].find("(") != std::string::npos && filedata[pos].find(")")==std::string::npos) {
266-
++pos2;
267-
while (pos2+2U < filedata.size() && !filedata[pos2].empty() && filedata[pos2].find_first_of("(){}") == std::string::npos)
268-
++pos2;
269-
if (filedata[pos2].find_first_of("({}")!=std::string::npos || filedata[pos2].find(")") == std::string::npos)
270-
break;
265+
266+
// struct X { ..
267+
if (filedata[pos].find_first_of("();}") == std::string::npos && filedata[pos].at(filedata[pos].size()-1U) == '{') {
268+
271269
}
272-
pos2++;
273-
if (pos2 < filedata.size() && !filedata[pos2].empty() && filedata[pos2].at(filedata[pos2].find_first_not_of(" ")) == ':') {
270+
271+
// function declaration ..
272+
else {
273+
if (filedata[pos].find("(") != std::string::npos && filedata[pos].find(")")==std::string::npos) {
274+
++pos2;
275+
while (pos2+2U < filedata.size() && !filedata[pos2].empty() && filedata[pos2].find_first_of("(){}") == std::string::npos)
276+
++pos2;
277+
if (filedata[pos2].find_first_of("({}")!=std::string::npos || filedata[pos2].find(")") == std::string::npos)
278+
break;
279+
}
274280
pos2++;
275-
while (pos2 < filedata.size() && !filedata[pos2].empty() && filedata[pos2].at(filedata[pos2].find_first_not_of(" ")) == ',')
281+
if (pos2 < filedata.size() && !filedata[pos2].empty() && filedata[pos2].at(filedata[pos2].find_first_not_of(" ")) == ':') {
276282
pos2++;
283+
while (pos2 < filedata.size() && !filedata[pos2].empty() && filedata[pos2].at(filedata[pos2].find_first_not_of(" ")) == ',')
284+
pos2++;
285+
}
286+
if (pos2+2U >= filedata.size() || filedata[pos2] != "{")
287+
break;
277288
}
278-
if (pos2+2U >= filedata.size() || filedata[pos2] != "{")
279-
break;
280289
pos2++;
281290

282291
// find end of block..

0 commit comments

Comments
 (0)