@@ -528,37 +528,37 @@ impl<'s> TypeInferCtx<'s> {
528528 let right_type = self . visit ( right) ;
529529
530530 // Also propagate assignment to target
531- if let ExprKind :: Literal ( LiteralExpr :: Identifier ( ident) ) = & left. kind {
532- if let Some ( local) = self . find_local ( * ident) {
533- let left_type = local . inferred_type ( ) ;
534- let left_type_ref = left_type . borrow ( ) ;
535-
536- if left_type_ref . as_ref ( ) == right_type . as_ref ( ) {
537- // Assign value is the same, no change.
538- } else {
539- debug ! (
540- "variable {} changed type {:?} -> {:?}" ,
541- ident , left_type_ref , right_type
542- ) ;
543-
544- match ( left_type_ref . as_ref ( ) , right_type . as_ref ( ) ) {
545- ( Some ( left ) , Some ( right ) ) => {
546- let left = left . clone ( ) ;
547- let right = right . clone ( ) ;
548- drop ( left_type_ref ) ;
549- update_ty (
550- left_type ,
551- Some ( CompileValueType :: Either ( Box :: new ( left ) , Box :: new ( right ) ) ) ,
552- ) ;
553- }
554- ( _ , Some ( right ) ) => {
555- drop ( left_type_ref ) ;
556- update_ty ( left_type , Some ( CompileValueType :: Maybe ( Box :: new ( right . clone ( ) ) ) ) ) ;
557- }
558- ( _ , _ ) => {
559- drop ( left_type_ref ) ;
560- update_ty ( left_type , None ) ;
561- }
531+ if let ExprKind :: Literal ( LiteralExpr :: Identifier ( ident) ) = & left. kind
532+ && let Some ( local) = self . find_local ( * ident)
533+ {
534+ let left_type = local . inferred_type ( ) ;
535+ let left_type_ref = left_type . borrow ( ) ;
536+
537+ if left_type_ref . as_ref ( ) == right_type . as_ref ( ) {
538+ // Assign value is the same, no change.
539+ } else {
540+ debug ! (
541+ "variable {} changed type {:?} -> {:?}" ,
542+ ident , left_type_ref , right_type
543+ ) ;
544+
545+ match ( left_type_ref . as_ref ( ) , right_type . as_ref ( ) ) {
546+ ( Some ( left) , Some ( right ) ) => {
547+ let left = left . clone ( ) ;
548+ let right = right . clone ( ) ;
549+ drop ( left_type_ref ) ;
550+ update_ty (
551+ left_type ,
552+ Some ( CompileValueType :: Either ( Box :: new ( left ) , Box :: new ( right ) ) ) ,
553+ ) ;
554+ }
555+ ( _ , Some ( right ) ) => {
556+ drop ( left_type_ref ) ;
557+ update_ty ( left_type , Some ( CompileValueType :: Maybe ( Box :: new ( right . clone ( ) ) ) ) ) ;
558+ }
559+ ( _ , _ ) => {
560+ drop ( left_type_ref ) ;
561+ update_ty ( left_type , None ) ;
562562 }
563563 }
564564 }
0 commit comments