17026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//===----------------------------------------------------------------------===//
27026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//
37026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//                     The LLVM Compiler Infrastructure
47026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
77026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//
87026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//===----------------------------------------------------------------------===//
97026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
107026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant// <regex>
117026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
127026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant// template <class charT, class traits = regex_traits<charT>> class basic_regex;
137026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
147026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant// basic_regex& assign(const basic_regex& that);
157026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
167026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant#include <regex>
177026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant#include <cassert>
186dfff1c9b9147641601574c953e208ece17f27d8Marshall Clow#include "test_macros.h"
197026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
207026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnantint main()
217026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant{
227026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    std::regex r1("(a([bc]))");
237026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    std::regex r2;
247026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    r2.assign(r1);
257026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    assert(r2.flags() == std::regex::ECMAScript);
267026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    assert(r2.mark_count() == 2);
27083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow    assert(std::regex_search("ab", r2));
2884acb1ec3f7d5e0f37d7176697c2fa876c413407Eric Fiselier
29e3a71a295ed9412bb34ab125c98380498a608b1aAsiri Rathnayake#ifndef TEST_HAS_NO_EXCEPTIONS
30083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow    bool caught = false;
31083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow    try { r2.assign("(def", std::regex::extended); }
32083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow    catch(std::regex_error &) { caught = true; }
33083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow    assert(caught);
34083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow    assert(r2.flags() == std::regex::ECMAScript);
35083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow    assert(r2.mark_count() == 2);
36083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow    assert(std::regex_search("ab", r2));
37e3a71a295ed9412bb34ab125c98380498a608b1aAsiri Rathnayake#endif
387026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant}
39