Dan Albert
a85b27f6f7
Add locales to available_features for tests.
...
Linux has a lot of failures caused by not having support for certain
locales. Since these come out as a lot of noise in the test results,
have lit.cfg detect the presence of the various locales used in the
tests and add them to config.available_features as locale.LOCALE_NAME.
This patch also adds REQUIRES: locale.REQUIRED_LOCALE to every test that
I saw failing in this manner. We probably need to add more for all the
tests requiring en_US.UTF-8, but we can do that on an as-needed basis.
One thing that concerns me is how many tests get skipped because of
missing locales (especially in regex/). We should make a point of
splitting up any tests that test default behavior _and_ behavior under a
given locale so that we aren't losing coverage for default behavior.
llvm-svn: 214753
2014-08-04 18:44:48 +00:00
Dan Albert
15c010a37e
Base regex code on char_class_type.
...
__get_classname() and __bracket_expression were assuming that
char_class_type was ctype_base::mask rather than using
regex_traits<_CharT>::char_class_type.
This change allows char_class_type to be defined to something other than
ctype_base::mask so that the implementation will still work for
platforms with an 8-bit ctype mask (such as Android and OpenBSD).
llvm-svn: 214201
2014-07-29 19:23:39 +00:00
Marshall Clow
9393b5113b
Fix Bug 19678 - libc++ does not correctly handle the regex: '[^\0]*'
...
llvm-svn: 209307
2014-05-21 16:29:50 +00:00
Marshall Clow
7f10fc480a
LWG Issue #2271 : regex_traits::lookup_classname specification unclear. libc++ already does the right thing; just update the tests.
...
llvm-svn: 202904
2014-03-04 22:44:34 +00:00
Marshall Clow
16da324051
Implement LWG issue 2306: match_results::reference should be value_type&, not const value_type&. This is a general move by the LWG to have the reference type of read-only containers be a non-const reference; however, there are no methods that return a non-const reference to a match_result entry, so there's no worries about getting a non-const reference to a constant object.
...
llvm-svn: 202214
2014-02-26 01:56:31 +00:00
Marshall Clow
7d35711187
Implement LWG Issues #2329 and #2332 - disallow iterators into temporary regexes and regexes into temporary strings
...
llvm-svn: 201717
2014-02-19 21:21:11 +00:00
Marshall Clow
79b0fee3c6
Fix PR18404 - 'Bug in regex_token_iterator::operator++(int) implementation'. Enhance the tests for regex_token_iterator and regex_iterator.
...
llvm-svn: 198878
2014-01-09 18:25:57 +00:00
Marshall Clow
c3deeb5f89
Found six (nmostly) identical files named 'test_allocator.h' in the libcxx test suite. Moved one to /support, made it a superset, and removed all but one of the others, and iupdated all the includes. Left the odd one (thread/futures/test_allocator.h) for later.
...
llvm-svn: 196174
2013-12-03 00:18:10 +00:00
Howard Hinnant
42a3046eef
Ok, 3 major changes for debug mode in one commit:
...
1. I had been detecting and trapping iterator == and \!= among iterators
in different containers as an error. But the trapping itself is actually
an error.
Consider:
#include <iostream>
#include <vector>
#include <algorithm>
template <class C>
void
display(const C& c)
{
std::cout << "{";
bool first = true;
for (const auto& x : c)
{
if (\!first)
std::cout << ", ";
first = false;
std::cout << x;
}
std::cout << "}\n";
}
int
main()
{
typedef std::vector<int> V;
V v1 = {1, 3, 5};
V v2 = {2, 4, 6};
display(v1);
display(v2);
V::iterator i = std::find(v1.begin(), v1.end(), 1);
V::iterator j = std::find(v2.begin(), v2.end(), 2);
if (*i == *j)
i = j; // perfectly legal
// ...
if (i \!= j) // the only way to check
v2.push_back(*i);
display(v1);
display(v2);
}
It is legal to assign an iterator from one container to another of the
same type. This is required to work. One might want to test whether or
not such an assignment had been made. The way one performs such a check
is using the iterator's ==, \!= operator. This is a logical and necessary
function and does not constitute an error.
2. I had a header circular dependence bug when _LIBCPP_DEBUG2 is defined.
This caused a problem in several of the libc++ tests.
Fixed.
3. There is a serious problem when _LIBCPP_DEBUG2=1 at the moment in that
std::basic_string is inoperable. std::basic_string uses __wrap_iterator
to implement its iterators. __wrap_iterator has been rigged up in debug
mode to support vector. But string hasn't been rigged up yet. This means
that one gets false positives when using std::string in debug mode. I've
upped std::string's priority in www/debug_mode.html.
llvm-svn: 187636
2013-08-02 00:26:35 +00:00
Howard Hinnant
7491a16031
Bill Fisher: This patch fixes a bug where std::regex in ECMAScript mode was ignoring capture groups inside lookahead assertions.
...
For example, matching /(?=(a))(a)/ to "a" should yield two captures: \1 = "a", \2 = "a"
llvm-svn: 186954
2013-07-23 16:18:04 +00:00
Howard Hinnant
22161401df
Bill Fisher: This patch fixes an ill-formed comparison when parsing control escapes, e.g. "\cA\ca". The code will now throw an error_escape exception for invalid control sequences like "\c:" or "\c".
...
I've added the test cases to bad_escape.pass.cpp.
llvm-svn: 186335
2013-07-15 18:21:11 +00:00
Howard Hinnant
c815a4e297
Bill Fisher: This patch fixes a less likely case where '\b' can back up into invalid memory, when driven by a regex_iterator (for case 1, see r185273 or http://llvm.org/bugs/show_bug.cgi?id=16240 )
...
The attached test program also supplies a test for the case 1 fix in r185273.
llvm-svn: 186089
2013-07-11 15:32:55 +00:00
Howard Hinnant
dbdeb153d8
Bill Fisher: This patch fixes a bug where regex_iterator doesn't indicate when it's restarting in the middle of a string. This bug causes /^a/ to match in the middle of the string "aaaaaaa", during iteration.
...
My patch uses to communicate when is false.
llvm-svn: 185950
2013-07-09 17:29:09 +00:00
Howard Hinnant
43bbdd29de
Bill Fisher: This patch fixes a bug where the regex parser doesn't advance the pointer after reading the third character of an octal escape (in awk mode).
...
That is, regex{"\141", awk} results in the regular expression /a1/ instead of just /a/.
llvm-svn: 185449
2013-07-02 17:43:31 +00:00
Howard Hinnant
3f75953d82
Provide missing '{' in parsing extended quoted characters. This fixes http://llvm.org/bugs/show_bug.cgi?id=16135
...
llvm-svn: 185211
2013-06-28 20:31:05 +00:00
Howard Hinnant
8d1e822432
William Fisher: A bug in __lookahead::exec causes /(?=^)b/ to match ab. When makes a recursive call to , it passes true for the value of . This causes a beginning-of-line anchor (^) inside a lookahead assertion to match anywhere in the text. This fixes http://llvm.org/bugs/show_bug.cgi?id=11118
...
llvm-svn: 185196
2013-06-28 19:11:23 +00:00
Howard Hinnant
21246e3314
Bill Fisher: Fix for failing to throw an exception in regex when parsing an invalid escape sequence. This fixes http://llvm.org/bugs/show_bug.cgi?id=16023
...
llvm-svn: 185192
2013-06-28 18:57:30 +00:00
Howard Hinnant
6b1455f6f1
Mark some tests with XFAIL for Lion and Mountain Lion.
...
llvm-svn: 181336
2013-05-07 17:37:19 +00:00
Joerg Sonnenberger
aa05f9eaf3
Add explicit casts to unsigned char before calling ctype functions.
...
Fixes the value range on platforms with signed char.
llvm-svn: 180940
2013-05-02 19:17:48 +00:00
Howard Hinnant
65a87ccdbf
This is a start at making the libc++ test suite friendlier to the -fnoexceptions flag. Although this is not a complete solution, it does reduce the number of test failures on OS X from 467 to 128 on OS X when -fno-exceptions is enabled, and does not impact the number of failures at all when -fno-exceptions is not enabled. The bulk of this code was donated anonymously.
...
llvm-svn: 177824
2013-03-23 17:27:16 +00:00
Marshall Clow
322270842c
Move common header files into a 'support' directory; make 'testit' include -I to that directory; rename 'iterators.h' to 'iterator_test.h'; remove hard-coded paths to include files from more than 350 source files
...
llvm-svn: 171594
2013-01-05 03:21:01 +00:00
Marshall Clow
cf1589f749
Removed several more different 'iterators.h' files in libcxx/test
...
llvm-svn: 171452
2013-01-03 02:29:29 +00:00
Howard Hinnant
16694b5df5
Zhang Xiongpang: Add definitions for const data members. Fixes http://llvm.org/bugs/show_bug.cgi?id=14585 .
...
llvm-svn: 170026
2012-12-12 21:14:28 +00:00
Howard Hinnant
2a4812fd04
Fix <rdar://problem/10255403> match_results::begin() is off by one
...
llvm-svn: 141494
2011-10-08 14:36:16 +00:00
Howard Hinnant
33a30f4159
Windows porting work by Ruben Van Boxem
...
llvm-svn: 141003
2011-10-03 15:23:59 +00:00
Howard Hinnant
cf50df9d94
Fix test bugs found by David Chisnall
...
llvm-svn: 140271
2011-09-21 18:33:46 +00:00
David Chisnall
580eccb05a
Fix locales used in re tests.
...
llvm-svn: 140265
2011-09-21 17:38:03 +00:00
Howard Hinnant
b996af1fe7
Fix failure found by David Chisnall
...
llvm-svn: 140255
2011-09-21 16:42:32 +00:00
Howard Hinnant
54976f2619
Fixed PR10574: http://llvm.org/bugs/show_bug.cgi?id=10574
...
llvm-svn: 137522
2011-08-12 21:56:02 +00:00
Howard Hinnant
966b5a3157
N3158 Missing preconditions for default-constructed match_result objects
...
llvm-svn: 121282
2010-12-08 21:07:55 +00:00
Howard Hinnant
412dbebe1b
license change
...
llvm-svn: 119395
2010-11-16 22:09:02 +00:00
Howard Hinnant
eb9e9a3710
fixing whitespace
...
llvm-svn: 114967
2010-09-28 17:19:10 +00:00
Howard Hinnant
7609c9b665
Changed __config to react to all of clang's currently documented has_feature flags, and renamed _LIBCPP_MOVE to _LIBCPP_HAS_NO_RVALUE_REFERENCES to be more consistent with the rest of the libc++'s flags, and with clang's nomenclature.
...
llvm-svn: 113086
2010-09-04 23:28:19 +00:00
Howard Hinnant
f36101dd3d
Fixing whitespace problems
...
llvm-svn: 111763
2010-08-22 00:45:01 +00:00
Howard Hinnant
86550b0038
[re.alg.replace]. This finishes all of <regex>. That being said, <regex> is exceptionally difficult to thoroughly test. If anyone has the ability to test this, combined with the interest to do so, now would be a good time. :-)
...
llvm-svn: 111333
2010-08-18 00:13:08 +00:00
Howard Hinnant
14dcd3d1ff
[re.tokiter]
...
llvm-svn: 111278
2010-08-17 20:42:03 +00:00
Howard Hinnant
2bf1fd99b1
[re.regiter]
...
llvm-svn: 111178
2010-08-16 20:21:16 +00:00
Howard Hinnant
51e3967484
[re.alg.match]
...
llvm-svn: 111075
2010-08-14 19:58:44 +00:00
Howard Hinnant
48b242a275
Everything under [re.results]
...
llvm-svn: 111074
2010-08-14 18:14:02 +00:00
Howard Hinnant
5cd6658798
Everything under [re.regex]
...
llvm-svn: 111024
2010-08-13 18:11:23 +00:00
Howard Hinnant
3d87b69f7d
Filling out regex tests...
...
llvm-svn: 110955
2010-08-12 21:14:20 +00:00
Howard Hinnant
6e156afa71
Fixed some bugs in the ecma bracket epression regarding escaped characters, and got the awk grammar going.
...
llvm-svn: 109599
2010-07-28 17:35:27 +00:00
Howard Hinnant
c1124300fe
lookahead for ecma
...
llvm-svn: 109548
2010-07-27 22:20:32 +00:00
Howard Hinnant
93da3b2e41
grep and egrep grammars
...
llvm-svn: 109534
2010-07-27 19:53:10 +00:00
Howard Hinnant
6afe8b0a23
continued regex development...
...
llvm-svn: 109512
2010-07-27 17:24:17 +00:00
Howard Hinnant
5c67986156
A good start on ecma regex's. Maybe even feature complete, not sure yet. Also an unrelated fix to is_constructible thanks to Daniel Krugler.
...
llvm-svn: 109479
2010-07-27 01:25:38 +00:00
Howard Hinnant
f7109438ea
I believe posix extended expr is feature complete. Getting started on ecma exprs.
...
llvm-svn: 109126
2010-07-22 17:53:24 +00:00
Howard Hinnant
b762bea3ba
A few more tests for posix extended alternation
...
llvm-svn: 109107
2010-07-22 14:12:20 +00:00
Howard Hinnant
c1198c320f
A good start on extended posix regex. Loops working. Alternation working. Also update by-chapter completeness summary.
...
llvm-svn: 108548
2010-07-16 19:08:36 +00:00
Howard Hinnant
6ded099399
Tests for basic posix regex templated on wchar_t
...
llvm-svn: 108435
2010-07-15 18:18:07 +00:00