Index: boost/xpressive/detail/dynamic/parse_charset.hpp =================================================================== --- boost/xpressive/detail/dynamic/parse_charset.hpp (revision 84007) +++ boost/xpressive/detail/dynamic/parse_charset.hpp (working copy) @@ -246,6 +246,7 @@ case token_charset_hyphen: case token_charset_invert: begin = iprev2; // un-get these tokens and fall through + BOOST_FALLTHROUGH; case token_literal: ch_next = *begin++; BOOST_XPR_ENSURE_(ch_prev <= ch_next, error_range, "invalid charset range"); @@ -264,7 +265,8 @@ chset.set_range(ch_prev, esc.ch_, rxtraits, icase); continue; } - case token_charset_end: // fall through + BOOST_FALLTHROUGH; + case token_charset_end: default: // not a range. begin = iprev; // backup to hyphen token chset.set_char(ch_prev, rxtraits, icase); Index: boost/xpressive/detail/dynamic/parser_traits.hpp =================================================================== --- boost/xpressive/detail/dynamic/parser_traits.hpp (revision 84007) +++ boost/xpressive/detail/dynamic/parser_traits.hpp (working copy) @@ -394,9 +394,9 @@ case BOOST_XPR_CHAR_(char_type, 'm'): this->flag_(!set, single_line); break; case BOOST_XPR_CHAR_(char_type, 's'): this->flag_(!set, not_dot_newline); break; case BOOST_XPR_CHAR_(char_type, 'x'): this->flag_(set, ignore_white_space); break; - case BOOST_XPR_CHAR_(char_type, ':'): ++begin; // fall-through + case BOOST_XPR_CHAR_(char_type, ':'): ++begin; BOOST_FALLTHROUGH; case BOOST_XPR_CHAR_(char_type, ')'): return token_no_mark; - case BOOST_XPR_CHAR_(char_type, '-'): if(false == (set = !set)) break; // else fall-through + case BOOST_XPR_CHAR_(char_type, '-'): if(false == (set = !set)) break; BOOST_FALLTHROUGH; default: BOOST_THROW_EXCEPTION(regex_error(error_paren, "unknown pattern modifier")); } while(BOOST_XPR_ENSURE_(++begin != end, error_paren, "incomplete extension")); Index: boost/xpressive/match_results.hpp =================================================================== --- boost/xpressive/match_results.hpp (revision 84007) +++ boost/xpressive/match_results.hpp (working copy) @@ -1096,11 +1096,12 @@ case BOOST_XPR_CHAR_(char_type, ':'): if(metacolon) { + BOOST_FALLTHROUGH; case BOOST_XPR_CHAR_(char_type, ')'): ++cur; return out; } - // else fall-through + BOOST_FALLTHROUGH; default: *out++ = *cur++; Index: boost/xpressive/regex_compiler.hpp =================================================================== --- boost/xpressive/regex_compiler.hpp (revision 84007) +++ boost/xpressive/regex_compiler.hpp (working copy) @@ -282,7 +282,7 @@ break; case 2: seq = detail::make_dynamic(alternate_matcher()) | seq; - // fall-through + BOOST_FALLTHROUGH; default: seq |= this->parse_sequence(tmp, end); } @@ -322,13 +322,15 @@ break; case token_negative_lookahead: - negative = true; // fall-through + negative = true; + BOOST_FALLTHROUGH; case token_positive_lookahead: lookahead = true; break; case token_negative_lookbehind: - negative = true; // fall-through + negative = true; + BOOST_FALLTHROUGH; case token_positive_lookbehind: lookbehind = true; break; @@ -342,10 +344,16 @@ { switch(this->traits_.get_token(begin, end)) { - case token_group_end: return this->parse_atom(begin, end); - case token_escape: BOOST_XPR_ENSURE_(begin != end, error_escape, "incomplete escape sequence"); - case token_literal: ++begin; - default:; + case token_group_end: + return this->parse_atom(begin, end); + case token_escape: + BOOST_XPR_ENSURE_(begin != end, error_escape, "incomplete escape sequence"); + BOOST_FALLTHROUGH; + case token_literal: + ++begin; + break; + default: + break; } } break; @@ -688,11 +696,17 @@ { switch(this->traits_.get_token(begin, end)) { - case token_quote_meta_end: return string_type(old_begin, old_end); - case token_escape: BOOST_XPR_ENSURE_(begin != end, error_escape, "incomplete escape sequence"); + case token_quote_meta_end: + return string_type(old_begin, old_end); + case token_escape: + BOOST_XPR_ENSURE_(begin != end, error_escape, "incomplete escape sequence"); + BOOST_FALLTHROUGH; case token_invalid_quantifier: - case token_literal: ++begin; - default:; + case token_literal: + ++begin; + BOOST_FALLTHROUGH; + default: + break; } } return string_type(old_begin, begin);