take care module name for suggesting surround the struct literal in parentheses
This commit is contained in:
parent
43062c43d2
commit
3983881d4e
4 changed files with 99 additions and 1 deletions
|
@ -751,10 +751,18 @@ impl<'a> Parser<'a> {
|
|||
tail.could_be_bare_literal = true;
|
||||
if maybe_struct_name.is_ident() && can_be_struct_literal {
|
||||
// Account for `if Example { a: one(), }.is_pos() {}`.
|
||||
// expand `before` so that we take care of module path such as:
|
||||
// `foo::Bar { ... } `
|
||||
// we expect to suggest `(foo::Bar { ... })` instead of `foo::(Bar { ... })`
|
||||
let sm = self.sess.source_map();
|
||||
let before = maybe_struct_name.span.shrink_to_lo();
|
||||
let extend_before = sm.span_extend_prev_while(before, |t| {
|
||||
t.is_alphanumeric() || t == ':' || t == '_'
|
||||
});
|
||||
Err(self.sess.create_err(StructLiteralNeedingParens {
|
||||
span: maybe_struct_name.span.to(expr.span),
|
||||
sugg: StructLiteralNeedingParensSugg {
|
||||
before: maybe_struct_name.span.shrink_to_lo(),
|
||||
before: extend_before.unwrap().shrink_to_lo(),
|
||||
after: expr.span.shrink_to_hi(),
|
||||
},
|
||||
}))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue