Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 8 pull requests #102920

Closed
wants to merge 26 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
3d28a1a
Warn about safety of `fetch_update`
Riolku Sep 14, 2022
2ea770d
fs::get_path solarish version.
devnexen Sep 24, 2022
2c72ea7
Stabilize map_first_last
est31 Sep 12, 2022
8bda133
Interpret EH actions properly
nbdd0121 Oct 5, 2022
b0b072d
ADD - codegen_ssa initial diags translations machinery
JhonnyBillM Oct 4, 2022
4e0de53
ADD - migrate lib.def write fatal error
JhonnyBillM Aug 25, 2022
0a2d7f8
UPDATE - LibDefWriteFailure to accept type instead of formatted string
JhonnyBillM Aug 27, 2022
086e70f
UPDATE - migrate linker.rs to new diagnostics infra
JhonnyBillM Oct 7, 2022
d9197db
UPDATE - migrate write.rs to new diagnostics infra
JhonnyBillM Aug 28, 2022
67eb01c
UPDATE - codege-ssa errors to new Diagnostic macro name
JhonnyBillM Sep 10, 2022
7548d95
UPDATE - resolve fixme and emit errors via Handler
JhonnyBillM Sep 10, 2022
0f97d4a
DELETE - unused error after PR# 100101 was merged
JhonnyBillM Sep 13, 2022
12aa84b
ADD - initial port of link.rs
JhonnyBillM Oct 3, 2022
a25f939
Address PR comments
JhonnyBillM Oct 4, 2022
13d4f27
ADD - implement IntoDiagnostic for thorin::Error wrapper
JhonnyBillM Oct 4, 2022
c1c159f
Unify tcx.constness and param env constness checks
compiler-errors Oct 9, 2022
6826028
fix #102878
TaKO8Ki Oct 10, 2022
152cd63
Report duplicate definitions in trait impls during resolution.
cjgillot Aug 10, 2022
6be5db8
Rollup merge of #100387 - cjgillot:hygiene-trait-impl, r=petrochenkov
Dylan-DPC Oct 11, 2022
9bf2e53
Rollup merge of #101727 - est31:stabilize_map_first_last, r=m-ou-se
Dylan-DPC Oct 11, 2022
3f4b987
Rollup merge of #101774 - Riolku:atomic-update-aba, r=m-ou-se
Dylan-DPC Oct 11, 2022
16914c9
Rollup merge of #102227 - devnexen:solarish_get_path, r=m-ou-se
Dylan-DPC Oct 11, 2022
4be1c94
Rollup merge of #102612 - JhonnyBillM:migrate-codegen-ssa-to-diagnost…
Dylan-DPC Oct 11, 2022
638ce35
Rollup merge of #102685 - nbdd0121:unwind, r=m-ou-se
Dylan-DPC Oct 11, 2022
18325e9
Rollup merge of #102830 - compiler-errors:constness-parity, r=fee1-dead
Dylan-DPC Oct 11, 2022
2e26805
Rollup merge of #102893 - TaKO8Ki:fix-102878, r=davidtwco
Dylan-DPC Oct 11, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions compiler/rustc_error_messages/src/lib.rs
Original file line number Diff line number Diff line change
@@ -336,19 +336,6 @@ impl DiagnosticMessage {
}
}
}

/// Returns the `String` contained within the `DiagnosticMessage::Str` variant, assuming that
/// this diagnostic message is of the legacy, non-translatable variety. Panics if this
/// assumption does not hold.
///
/// Don't use this - it exists to support some places that do comparison with diagnostic
/// strings.
pub fn expect_str(&self) -> &str {
match self {
DiagnosticMessage::Str(s) => s,
_ => panic!("expected non-translatable diagnostic message"),
}
}
}

/// `From` impl that enables existing diagnostic calls to functions which now take
19 changes: 11 additions & 8 deletions compiler/rustc_expand/src/mbe/macro_rules.rs
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ use rustc_ast::{NodeId, DUMMY_NODE_ID};
use rustc_ast_pretty::pprust;
use rustc_attr::{self as attr, TransparencyError};
use rustc_data_structures::fx::{FxHashMap, FxIndexMap};
use rustc_errors::{Applicability, Diagnostic, DiagnosticBuilder};
use rustc_errors::{Applicability, Diagnostic, DiagnosticBuilder, DiagnosticMessage};
use rustc_feature::Features;
use rustc_lint_defs::builtin::{
RUST_2021_INCOMPATIBLE_OR_PATTERNS, SEMICOLON_IN_EXPRESSIONS_FROM_MACROS,
@@ -68,19 +68,22 @@ fn emit_frag_parse_err(
kind: AstFragmentKind,
) {
// FIXME(davidtwco): avoid depending on the error message text
if parser.token == token::Eof && e.message[0].0.expect_str().ends_with(", found `<eof>`") {
if !e.span.is_dummy() {
// early end of macro arm (#52866)
e.replace_span_with(parser.sess.source_map().next_point(parser.token.span));
}
if parser.token == token::Eof
&& let DiagnosticMessage::Str(message) = &e.message[0].0
&& message.ends_with(", found `<eof>`")
{
let msg = &e.message[0];
e.message[0] = (
rustc_errors::DiagnosticMessage::Str(format!(
DiagnosticMessage::Str(format!(
"macro expansion ends with an incomplete expression: {}",
msg.0.expect_str().replace(", found `<eof>`", ""),
message.replace(", found `<eof>`", ""),
)),
msg.1,
);
if !e.span.is_dummy() {
// early end of macro arm (#52866)
e.replace_span_with(parser.sess.source_map().next_point(parser.token.span));
}
}
if e.span.is_dummy() {
// Get around lack of span in error (#30128)
10 changes: 10 additions & 0 deletions src/test/ui/macros/issue-102878.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
macro_rules!test{($l:expr,$_:r)=>({const:y y)}
//~^ ERROR mismatched closing delimiter: `)`
//~| ERROR invalid fragment specifier `r`
//~| ERROR expected identifier, found keyword `const`
//~| ERROR expected identifier, found keyword `const`
//~| ERROR expected identifier, found `:`

fn s(){test!(1,i)}

fn main() {}
60 changes: 60 additions & 0 deletions src/test/ui/macros/issue-102878.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
error: mismatched closing delimiter: `)`
--> $DIR/issue-102878.rs:1:35
|
LL | macro_rules!test{($l:expr,$_:r)=>({const:y y)}
| -^ ^ mismatched closing delimiter
| ||
| |unclosed delimiter
| closing delimiter possibly meant for this

error: invalid fragment specifier `r`
--> $DIR/issue-102878.rs:1:27
|
LL | macro_rules!test{($l:expr,$_:r)=>({const:y y)}
| ^^^^
|
= help: valid fragment specifiers are `ident`, `block`, `stmt`, `expr`, `pat`, `ty`, `lifetime`, `literal`, `path`, `meta`, `tt`, `item` and `vis`

error: expected identifier, found keyword `const`
--> $DIR/issue-102878.rs:1:36
|
LL | macro_rules!test{($l:expr,$_:r)=>({const:y y)}
| ^^^^^ expected identifier, found keyword
...
LL | fn s(){test!(1,i)}
| ---------- in this macro invocation
|
= note: this error originates in the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)
help: escape `const` to use it as an identifier
|
LL | macro_rules!test{($l:expr,$_:r)=>({r#const:y y)}
| ++

error: expected identifier, found keyword `const`
--> $DIR/issue-102878.rs:1:36
|
LL | macro_rules!test{($l:expr,$_:r)=>({const:y y)}
| ^^^^^ expected identifier, found keyword
...
LL | fn s(){test!(1,i)}
| ---------- in this macro invocation
|
= note: this error originates in the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)
help: escape `const` to use it as an identifier
|
LL | macro_rules!test{($l:expr,$_:r)=>({r#const:y y)}
| ++

error: expected identifier, found `:`
--> $DIR/issue-102878.rs:1:41
|
LL | macro_rules!test{($l:expr,$_:r)=>({const:y y)}
| ^ expected identifier
...
LL | fn s(){test!(1,i)}
| ---------- in this macro invocation
|
= note: this error originates in the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)

error: aborting due to 5 previous errors