15a83710eSEric Fiselier //===----------------------------------------------------------------------===// 25a83710eSEric Fiselier // 357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65a83710eSEric Fiselier // 75a83710eSEric Fiselier //===----------------------------------------------------------------------===// 85a83710eSEric Fiselier 98c61114cSLouis Dionne // UNSUPPORTED: no-exceptions 105a83710eSEric Fiselier // <regex> 115a83710eSEric Fiselier 125a83710eSEric Fiselier // template <class charT, class traits = regex_traits<charT>> class basic_regex; 135a83710eSEric Fiselier 145a83710eSEric Fiselier // template <class ST, class SA> 155a83710eSEric Fiselier // basic_regex(const basic_string<charT, ST, SA>& s); 165a83710eSEric Fiselier 175a83710eSEric Fiselier #include <regex> 185a83710eSEric Fiselier #include <cassert> 19fd5ceb22SMarshall Clow #include "test_macros.h" 205a83710eSEric Fiselier error_escape_thrown(const char * pat)215a83710eSEric Fiselierstatic bool error_escape_thrown(const char *pat) 225a83710eSEric Fiselier { 235a83710eSEric Fiselier bool result = false; 245a83710eSEric Fiselier try { 255a83710eSEric Fiselier std::regex re(pat); 26983d1781SMarshall Clow } catch (const std::regex_error &ex) { 275a83710eSEric Fiselier result = (ex.code() == std::regex_constants::error_escape); 285a83710eSEric Fiselier } 295a83710eSEric Fiselier return result; 305a83710eSEric Fiselier } 315a83710eSEric Fiselier main(int,char **)322df59c50SJF Bastienint main(int, char**) 335a83710eSEric Fiselier { 345a83710eSEric Fiselier assert(error_escape_thrown("[\\a]")); 35*26466efeSzoecarver assert(error_escape_thrown("\\a")); 36b414b2f5SMarshall Clow assert(error_escape_thrown("\\")); 375a83710eSEric Fiselier 385a83710eSEric Fiselier assert(error_escape_thrown("[\\e]")); 39*26466efeSzoecarver assert(error_escape_thrown("\\e")); 405a83710eSEric Fiselier 415a83710eSEric Fiselier assert(error_escape_thrown("[\\c:]")); 42*26466efeSzoecarver assert(error_escape_thrown("\\c:")); 43*26466efeSzoecarver assert(error_escape_thrown("\\c")); 445a83710eSEric Fiselier assert(!error_escape_thrown("[\\cA]")); 455a83710eSEric Fiselier assert(!error_escape_thrown("\\cA")); 465a83710eSEric Fiselier 472df59c50SJF Bastien 482df59c50SJF Bastien return 0; 495a83710eSEric Fiselier } 50