Skip to content

Commit ad24c6e

Browse files
authored
fixes #352 - internally default to latest standard if none is provided (#356)
1 parent 6c9eaf4 commit ad24c6e

File tree

2 files changed

+42
-13
lines changed

2 files changed

+42
-13
lines changed

simplecpp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2554,7 +2554,7 @@ static void simplifySizeof(simplecpp::TokenList &expr, const std::map<std::strin
25542554
static bool isCpp17OrLater(const simplecpp::DUI &dui)
25552555
{
25562556
const std::string std_ver = simplecpp::getCppStdString(dui.std);
2557-
return !std_ver.empty() && (std_ver >= "201703L");
2557+
return std_ver.empty() || (std_ver >= "201703L");
25582558
}
25592559

25602560
static bool isGnu(const simplecpp::DUI &dui)

test.cpp

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1562,11 +1562,13 @@ static void has_include_1()
15621562
"#endif";
15631563
simplecpp::DUI dui;
15641564
dui.includePaths.push_back(testSourceDir);
1565-
dui.std = "c++17";
1566-
ASSERT_EQUALS("\n\nA", preprocess(code, dui));
1565+
ASSERT_EQUALS("\n\nA", preprocess(code, dui)); // we default to latest standard internally
15671566
dui.std = "c++14";
15681567
ASSERT_EQUALS("", preprocess(code, dui));
1569-
ASSERT_EQUALS("", preprocess(code));
1568+
dui.std = "c++17";
1569+
ASSERT_EQUALS("\n\nA", preprocess(code, dui));
1570+
dui.std = "c++20";
1571+
ASSERT_EQUALS("\n\nA", preprocess(code, dui));
15701572
}
15711573

15721574
static void has_include_2()
@@ -1580,9 +1582,13 @@ static void has_include_2()
15801582
"#endif";
15811583
simplecpp::DUI dui;
15821584
dui.includePaths.push_back(testSourceDir);
1585+
ASSERT_EQUALS("\n\nA", preprocess(code, dui)); // we default to latest standard internally
1586+
dui.std = "c++14";
1587+
ASSERT_EQUALS("", preprocess(code, dui));
15831588
dui.std = "c++17";
15841589
ASSERT_EQUALS("\n\nA", preprocess(code, dui));
1585-
ASSERT_EQUALS("", preprocess(code));
1590+
dui.std = "c++20";
1591+
ASSERT_EQUALS("\n\nA", preprocess(code, dui));
15861592
}
15871593

15881594
static void has_include_3()
@@ -1595,13 +1601,24 @@ static void has_include_3()
15951601
" #endif\n"
15961602
"#endif";
15971603
simplecpp::DUI dui;
1598-
dui.std = "c++17";
1604+
15991605
// Test file not found...
1606+
ASSERT_EQUALS("\n\n\n\nB", preprocess(code, dui)); // we default to latest standard internally
1607+
dui.std = "c++14";
1608+
ASSERT_EQUALS("", preprocess(code, dui));
1609+
dui.std = "c++17";
16001610
ASSERT_EQUALS("\n\n\n\nB", preprocess(code, dui));
1611+
16011612
// Unless -I is set (preferably, we should differentiate -I and -isystem...)
16021613
dui.includePaths.push_back(testSourceDir + "/testsuite");
1614+
dui.std = "";
1615+
ASSERT_EQUALS("\n\nA", preprocess(code, dui)); // we default to latest standard internally
1616+
dui.std = "c++14";
1617+
ASSERT_EQUALS("", preprocess(code, dui));
1618+
dui.std = "c++17";
1619+
ASSERT_EQUALS("\n\nA", preprocess(code, dui));
1620+
dui.std = "c++20";
16031621
ASSERT_EQUALS("\n\nA", preprocess(code, dui));
1604-
ASSERT_EQUALS("", preprocess(code));
16051622
}
16061623

16071624
static void has_include_4()
@@ -1614,10 +1631,14 @@ static void has_include_4()
16141631
" #endif\n"
16151632
"#endif";
16161633
simplecpp::DUI dui;
1634+
dui.includePaths.push_back(testSourceDir); // we default to latest standard internally
1635+
ASSERT_EQUALS("\n\nA", preprocess(code, dui));
1636+
dui.std = "c++14";
1637+
ASSERT_EQUALS("", preprocess(code, dui));
16171638
dui.std = "c++17";
1618-
dui.includePaths.push_back(testSourceDir);
16191639
ASSERT_EQUALS("\n\nA", preprocess(code, dui));
1620-
ASSERT_EQUALS("", preprocess(code));
1640+
dui.std = "c++20";
1641+
ASSERT_EQUALS("\n\nA", preprocess(code, dui));
16211642
}
16221643

16231644
static void has_include_5()
@@ -1630,10 +1651,14 @@ static void has_include_5()
16301651
" #endif\n"
16311652
"#endif";
16321653
simplecpp::DUI dui;
1633-
dui.std = "c++17";
1654+
ASSERT_EQUALS("\n\nA", preprocess(code, dui)); // we default to latest standard internally
16341655
dui.includePaths.push_back(testSourceDir);
1656+
dui.std = "c++14";
1657+
ASSERT_EQUALS("", preprocess(code, dui));
1658+
dui.std = "c++17";
1659+
ASSERT_EQUALS("\n\nA", preprocess(code, dui));
1660+
dui.std = "c++20";
16351661
ASSERT_EQUALS("\n\nA", preprocess(code, dui));
1636-
ASSERT_EQUALS("", preprocess(code));
16371662
}
16381663

16391664
static void has_include_6()
@@ -1646,10 +1671,12 @@ static void has_include_6()
16461671
" #endif\n"
16471672
"#endif";
16481673
simplecpp::DUI dui;
1649-
dui.std = "gnu99";
16501674
dui.includePaths.push_back(testSourceDir);
1675+
ASSERT_EQUALS("\n\nA", preprocess(code, dui)); // we default to latest standard internally
1676+
dui.std = "c++99";
1677+
ASSERT_EQUALS("", preprocess(code, dui));
1678+
dui.std = "gnu99";
16511679
ASSERT_EQUALS("\n\nA", preprocess(code, dui));
1652-
ASSERT_EQUALS("", preprocess(code));
16531680
}
16541681

16551682
static void strict_ansi_1()
@@ -2983,6 +3010,7 @@ static void stdcVersionDefine()
29833010
" __STDC_VERSION__\n"
29843011
"#endif\n";
29853012
simplecpp::DUI dui;
3013+
ASSERT_EQUALS("", preprocess(code, dui));
29863014
dui.std = "c11";
29873015
ASSERT_EQUALS("\n201112L", preprocess(code, dui));
29883016
}
@@ -2993,6 +3021,7 @@ static void cpluscplusDefine()
29933021
" __cplusplus\n"
29943022
"#endif\n";
29953023
simplecpp::DUI dui;
3024+
ASSERT_EQUALS("", preprocess(code, dui));
29963025
dui.std = "c++11";
29973026
ASSERT_EQUALS("\n201103L", preprocess(code, dui));
29983027
}

0 commit comments

Comments
 (0)