[mcs] Reset catch state variable after it has been checked. Fixes #54322
[mono.git] / mcs / mcs / complete.cs
index 3504302d589d0e44fd642fe987eea93c51fe1b5f..b1d2993256a517fc96483d5be1af20d2b09f332c 100644 (file)
@@ -115,7 +115,16 @@ namespace Mono.CSharp {
                        const ResolveFlags flags = ResolveFlags.VariableOrValue | ResolveFlags.Type;
 
                        if (sn != null) {
-                               expr = sn.LookupNameExpression (rc, MemberLookupRestrictions.ReadAccess | MemberLookupRestrictions.ExactArity);
+                               var errors_printer = new SessionReportPrinter ();
+                               var old = rc.Report.SetPrinter (errors_printer);
+                               try {
+                                       expr = sn.LookupNameExpression (rc, MemberLookupRestrictions.ReadAccess | MemberLookupRestrictions.ExactArity);
+                               } finally {
+                                       rc.Report.SetPrinter (old);
+                               }
+
+                               if (errors_printer.ErrorsCount != 0)
+                                       return null;
 
                                //
                                // Resolve expression which does have type set as we need expression type
@@ -142,7 +151,7 @@ namespace Mono.CSharp {
                        }
 
                        if (targs != null) {
-                               if (!targs.Resolve (rc))
+                               if (!targs.Resolve (rc, true))
                                        return null;
                        }