mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-09-30 11:50:06 +00:00
sourceHighlight: patch to fix build with gcc 16
The `ranges` name in the test here conflicts with the
`namespace std::ranges { }` from GCC 16, causing this test to fail to
build with "error: reference to 'ranges' is ambiguous". To avoid this,
we simply rename the variable.
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
diff --git a/lib/tests/test_regexranges_main.cpp b/lib/tests/test_regexranges_main.cpp
|
||||
index 567d79230c..e28bba47e5 100644
|
||||
--- a/lib/tests/test_regexranges_main.cpp
|
||||
+++ b/lib/tests/test_regexranges_main.cpp
|
||||
@@ -12,26 +12,26 @@
|
||||
using namespace std;
|
||||
using namespace srchilite;
|
||||
|
||||
-RegexRanges ranges;
|
||||
+RegexRanges regexRanges;
|
||||
|
||||
void check_range_regex(const string &s, bool expectedTrue = true) {
|
||||
cout << "checking " << s << endl;
|
||||
if (expectedTrue)
|
||||
- assertTrue(ranges.addRegexRange(s));
|
||||
+ assertTrue(regexRanges.addRegexRange(s));
|
||||
else
|
||||
- assertFalse(ranges.addRegexRange(s));
|
||||
+ assertFalse(regexRanges.addRegexRange(s));
|
||||
}
|
||||
|
||||
void check_match(const string &line, const string &expected = "") {
|
||||
cout << "searching inside " << line;
|
||||
const boost::regex *matched = 0;
|
||||
if (expected != "") {
|
||||
- matched = ranges.matches(line);
|
||||
+ matched = regexRanges.matches(line);
|
||||
assertTrue(matched != 0);
|
||||
assertEquals(expected, matched->str());
|
||||
cout << " found " << *matched << endl;
|
||||
} else {
|
||||
- assertTrue(ranges.matches(line) == 0);
|
||||
+ assertTrue(regexRanges.matches(line) == 0);
|
||||
cout << " not found" << endl;
|
||||
}
|
||||
}
|
||||
@@ -39,9 +39,9 @@
|
||||
void check_in_range(const string &s, bool expectedTrue = true) {
|
||||
cout << "checking " << s << "... ";
|
||||
if (expectedTrue) {
|
||||
- assertTrue(ranges.isInRange(s));
|
||||
+ assertTrue(regexRanges.isInRange(s));
|
||||
} else {
|
||||
- assertFalse(ranges.isInRange(s));
|
||||
+ assertFalse(regexRanges.isInRange(s));
|
||||
}
|
||||
cout << expectedTrue << endl;
|
||||
}
|
||||
@@ -57,7 +57,7 @@
|
||||
check_range_regex("{notclosed");
|
||||
|
||||
// reset regular expressions
|
||||
- ranges.clear();
|
||||
+ regexRanges.clear();
|
||||
|
||||
check_range_regex("/// foo");
|
||||
check_range_regex("/// bar");
|
||||
@@ -37,6 +37,11 @@ stdenv.mkDerivation rec {
|
||||
url = "https://git.savannah.gnu.org/cgit/src-highlite.git/patch/?id=ab9fe5cb9b85c5afab94f2a7f4b6d7d473c14ee9";
|
||||
hash = "sha256-wmSLgLnLuFE+IC6AjxzZp/HEnaOCS1VfY2cac0T7Y+w=";
|
||||
})
|
||||
|
||||
# GCC 16 detects ambiguity in the `ranges` name in a test (conflicts with
|
||||
# `namespace std::range { }` from GCC), so we rename the variable to
|
||||
# disambiguate.
|
||||
./gcc16-disambiguate-regex-ranges-test.patch
|
||||
]
|
||||
++ lib.optionals stdenv.cc.isClang [
|
||||
# Adds compatibility with C++17 by removing the `register` storage class specifier.
|
||||
|
||||
Reference in New Issue
Block a user