Merge #6889
6889: Resolve `macro-error` diagnostics on asm & llvm_asm r=matklad a=lf- We currently stub these out as returning unit. This fixes spurious RA `macro-error` diagnostics introduced somewhere around 0.2.400 in the following: ```rust unsafe { asm!(""); llvm_asm!(""); } ``` I'd ideally like to write a unit test for this, but I'm not familiar with where the tests for `hir_expand` are. Thanks to @edwin0cheng for help on resolving this issue. Co-authored-by: lf- <lf-@users.noreply.github.com>
This commit is contained in:
commit
a9d19200f2
@ -95,6 +95,8 @@ register_builtin! {
|
||||
// format_args_nl only differs in that it adds a newline in the end,
|
||||
// so we use the same stub expansion for now
|
||||
(format_args_nl, FormatArgsNl) => format_args_expand,
|
||||
(llvm_asm, LlvmAsm) => asm_expand,
|
||||
(asm, Asm) => asm_expand,
|
||||
|
||||
EAGER:
|
||||
(compile_error, CompileError) => compile_error_expand,
|
||||
@ -271,6 +273,19 @@ fn format_args_expand(
|
||||
ExpandResult::ok(expanded)
|
||||
}
|
||||
|
||||
fn asm_expand(
|
||||
_db: &dyn AstDatabase,
|
||||
_id: LazyMacroId,
|
||||
_tt: &tt::Subtree,
|
||||
) -> ExpandResult<tt::Subtree> {
|
||||
// both asm and llvm_asm don't return anything, so we can expand them to nothing,
|
||||
// for now
|
||||
let expanded = quote! {
|
||||
()
|
||||
};
|
||||
ExpandResult::ok(expanded)
|
||||
}
|
||||
|
||||
fn unquote_str(lit: &tt::Literal) -> Option<String> {
|
||||
let lit = ast::make::tokens::literal(&lit.to_string());
|
||||
let token = ast::String::cast(lit)?;
|
||||
|
@ -199,6 +199,8 @@ pub mod known {
|
||||
format_args_nl,
|
||||
env,
|
||||
option_env,
|
||||
llvm_asm,
|
||||
asm,
|
||||
// Builtin derives
|
||||
Copy,
|
||||
Clone,
|
||||
|
Loading…
x
Reference in New Issue
Block a user