From d75691877c4a7521a995d2601021fcaf30f65d94 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sun, 13 Feb 2022 20:17:53 +0100 Subject: d: Merge upstream dmd 52844d4b1, druntime dbd0c874, phobos 896b1d0e1. D front-end changes: - Parsing and compiling C code is now possible using `import'. - `throw' statements can now be used as an expression. - Improvements to the D template emission strategy when compiling with `-funittest'. D Runtime changes: - New core.int128 module for implementing intrinsics to support 128-bit integer types. - C bindings for the kernel and C runtime have been better separated to allow compiling for hybrid targets, such as kFreeBSD. Phobos changes: - The std.experimental.checkedint module has been renamed to std.checkedint. gcc/d/ChangeLog: * d-builtins.cc (d_build_builtins_module): Set purity of DECL_PURE_P functions to PURE::const_. * d-gimplify.cc (bit_field_ref): New function. (d_gimplify_modify_expr): Handle implicit casting for assignments to bit-fields. (d_gimplify_unary_expr): New function. (d_gimplify_binary_expr): New function. (d_gimplify_expr): Handle UNARY_CLASS_P and BINARY_CLASS_P. * d-target.cc (Target::_init): Initialize bitFieldStyle. (TargetCPP::parameterType): Update signature. (Target::supportsLinkerDirective): New function. * dmd/MERGE: Merge upstream dmd 52844d4b1. * expr.cc (ExprVisitor::visit (ThrowExp *)): New function. * types.cc (d_build_bitfield_integer_type): New function. (insert_aggregate_bitfield): New function. (layout_aggregate_members): Handle inserting bit-fields into an aggregate type. libphobos/ChangeLog: * Makefile.in: Regenerate. * libdruntime/MERGE: Merge upstream druntime dbd0c874. * libdruntime/Makefile.am (DRUNTIME_CSOURCES): Add core/int128.d. (DRUNTIME_DISOURCES): Add __builtins.di. * libdruntime/Makefile.in: Regenerate. * src/MERGE: Merge upstream phobos 896b1d0e1. * src/Makefile.am (PHOBOS_DSOURCES): Add std/checkedint.d. * src/Makefile.in: Regenerate. * testsuite/testsuite_flags.in: Add -fall-instantiations to --gdcflags. --- libphobos/src/std/regex/package.d | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'libphobos/src/std/regex') diff --git a/libphobos/src/std/regex/package.d b/libphobos/src/std/regex/package.d index 8db0b1e..e24abc5 100644 --- a/libphobos/src/std/regex/package.d +++ b/libphobos/src/std/regex/package.d @@ -170,6 +170,10 @@ $(TR $(TD Objects) $(TD Greedy version - tries as many times as possible.) $(REG_ROW +?, Matches previous character/subexpression 1 or more times. Lazy version - stops as early as possible.) + $(REG_ROW ?, Matches previous character/subexpression 0 or 1 time. + Greedy version - tries as many times as possible.) + $(REG_ROW ??, Matches previous character/subexpression 0 or 1 time. + Lazy version - stops as early as possible.) $(REG_ROW {n}, Matches previous character/subexpression exactly n times. ) $(REG_ROW {n$(COMMA)}, Matches previous character/subexpression n times or more. Greedy version - tries as many times as possible. ) @@ -1745,3 +1749,9 @@ auto escaper(Range)(Range r) assert(s2.escaper.equal("")); }} } + +@system unittest +{ + assert("ab".matchFirst(regex(`a?b?`)).hit == "ab"); + assert("ab".matchFirst(regex(`a??b?`)).hit == ""); +} -- cgit v1.1