@@ -1985,16 +1985,18 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
1985
1985
let ( place_desc, note) = if let Some ( place_desc) = opt_place_desc {
1986
1986
let local_kind = if let Some ( local) = borrow. borrowed_place . as_local ( ) {
1987
1987
match self . body . local_kind ( local) {
1988
- LocalKind :: ReturnPointer | LocalKind :: Temp => {
1989
- bug ! ( "temporary or return pointer with a name" )
1988
+ LocalKind :: Temp if self . body . local_decls [ local ] . is_user_variable ( ) => {
1989
+ "local variable "
1990
1990
}
1991
- LocalKind :: Var => "local variable " ,
1992
1991
LocalKind :: Arg
1993
1992
if !self . upvars . is_empty ( ) && local == ty:: CAPTURE_STRUCT_LOCAL =>
1994
1993
{
1995
1994
"variable captured by `move` "
1996
1995
}
1997
1996
LocalKind :: Arg => "function parameter " ,
1997
+ LocalKind :: ReturnPointer | LocalKind :: Temp => {
1998
+ bug ! ( "temporary or return pointer with a name" )
1999
+ }
1998
2000
}
1999
2001
} else {
2000
2002
"local data "
@@ -2008,16 +2010,16 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
2008
2010
self . prefixes ( borrow. borrowed_place . as_ref ( ) , PrefixSet :: All ) . last ( ) . unwrap ( ) ;
2009
2011
let local = root_place. local ;
2010
2012
match self . body . local_kind ( local) {
2011
- LocalKind :: ReturnPointer | LocalKind :: Temp => {
2012
- ( "temporary value" . to_string ( ) , "temporary value created here" . to_string ( ) )
2013
- }
2014
2013
LocalKind :: Arg => (
2015
2014
"function parameter" . to_string ( ) ,
2016
2015
"function parameter borrowed here" . to_string ( ) ,
2017
2016
) ,
2018
- LocalKind :: Var => {
2017
+ LocalKind :: Temp if self . body . local_decls [ local ] . is_user_variable ( ) => {
2019
2018
( "local binding" . to_string ( ) , "local binding introduced here" . to_string ( ) )
2020
2019
}
2020
+ LocalKind :: ReturnPointer | LocalKind :: Temp => {
2021
+ ( "temporary value" . to_string ( ) , "temporary value created here" . to_string ( ) )
2022
+ }
2021
2023
}
2022
2024
} ;
2023
2025
0 commit comments