Bump mono-extensions to fix build break (#5677)
[mono.git] / mcs / mcs / complete.cs
index 2931d137f737917aa2fab3e74fe0c6ac1c44b5c2..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,19 +151,19 @@ namespace Mono.CSharp {
                        }
 
                        if (targs != null) {
-                               if (!targs.Resolve (rc))
+                               if (!targs.Resolve (rc, true))
                                        return null;
                        }
 
                        var results = new List<string> ();
-                       if (expr is Namespace) {
-                               Namespace nexpr = expr as Namespace;
+                       var nexpr = expr as NamespaceExpression;
+                       if (nexpr != null) {
                                string namespaced_partial;
 
                                if (partial_name == null)
-                                       namespaced_partial = nexpr.Name;
+                                       namespaced_partial = nexpr.Namespace.Name;
                                else
-                                       namespaced_partial = nexpr.Name + "." + partial_name;
+                                       namespaced_partial = nexpr.Namespace.Name + "." + partial_name;
 
                                rc.CurrentMemberDefinition.GetCompletionStartingWith (namespaced_partial, results);
                                if (partial_name != null)
@@ -210,5 +219,17 @@ namespace Mono.CSharp {
                        // Nothing
                }
        }
+
+       public class EmptyCompletion : CompletingExpression
+       {
+               protected override void CloneTo (CloneContext clonectx, Expression target)
+               {
+               }
+
+               protected override Expression DoResolve (ResolveContext rc)
+               {
+                       throw new CompletionResult ("", new string [0]);
+               }
+       }
        
 }