diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-01-13 05:26:51 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-01-13 05:26:51 +0100 |
| commit | 0c53b45e8581e439cf890adaba857014f7ef1fdb (patch) | |
| tree | 38b4b38ddf1aa656f5f57d4a2249b827a4c6f9a2 /src/libsyntax | |
| parent | b7093e51c9352c22e780a5a5039da59297c4e846 (diff) | |
| parent | 46fa818d3443d4a62cd97be086d4d7a416b2d03e (diff) | |
| download | rust-0c53b45e8581e439cf890adaba857014f7ef1fdb.tar.gz rust-0c53b45e8581e439cf890adaba857014f7ef1fdb.zip | |
Rollup merge of #57461 - nnethercote:ParseResult-Failure-static-str, r=simulacrum
Change `String` to `&'static str` in `ParseResult::Failure`. This avoids 770,000 allocations when compiling the `html5ever` benchmark, reducing instruction counts by up to 2%.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ext/tt/macro_parser.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax/ext/tt/macro_rules.rs | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/libsyntax/ext/tt/macro_parser.rs b/src/libsyntax/ext/tt/macro_parser.rs index d55f785bd9b..b4003ac729a 100644 --- a/src/libsyntax/ext/tt/macro_parser.rs +++ b/src/libsyntax/ext/tt/macro_parser.rs @@ -271,7 +271,7 @@ pub enum ParseResult<T> { Success(T), /// Arm failed to match. If the second parameter is `token::Eof`, it indicates an unexpected /// end of macro invocation. Otherwise, it indicates that no rules expected the given token. - Failure(syntax_pos::Span, Token, String), + Failure(syntax_pos::Span, Token, &'static str), /// Fatal error (malformed macro?). Abort compilation. Error(syntax_pos::Span, String), } @@ -721,7 +721,7 @@ pub fn parse( sess.source_map().next_point(parser.span) }, token::Eof, - "missing tokens in macro arguments".to_string(), + "missing tokens in macro arguments", ); } } @@ -760,7 +760,7 @@ pub fn parse( return Failure( parser.span, parser.token, - "no rules expected this token in macro call".to_string(), + "no rules expected this token in macro call", ); } // Dump all possible `next_items` into `cur_items` for the next iteration. diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs index cb8fbce6697..24202ca8fbd 100644 --- a/src/libsyntax/ext/tt/macro_rules.rs +++ b/src/libsyntax/ext/tt/macro_rules.rs @@ -202,7 +202,7 @@ fn generic_extension<'cx>(cx: &'cx mut ExtCtxt, let best_fail_msg = parse_failure_msg(best_fail_tok.expect("ran no matchers")); let span = best_fail_spot.substitute_dummy(sp); let mut err = cx.struct_span_err(span, &best_fail_msg); - err.span_label(span, best_fail_text.unwrap_or(best_fail_msg)); + err.span_label(span, best_fail_text.unwrap_or(&best_fail_msg)); if let Some(sp) = def_span { if cx.source_map().span_to_filename(sp).is_real() && !sp.is_dummy() { err.span_label(cx.source_map().def_span(sp), "when calling this macro"); |
