[asp.net] FormsAuthenticationTicket.FromByteArray stops early if it is passed a null...
[mono.git] / mcs / mcs / complete.cs
index ed2f1ba2a6d369a3e3c6f499b22598285460e034..43cc8fad7f8e9b0449712914eafcb99133b9f305 100644 (file)
 // statements even when the expression is incomplete (for example
 // completing inside a lambda
 //
-using System;
 using System.Collections.Generic;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Text;
-using Mono.CSharp.Linq;
 using System.Linq;
 
 namespace Mono.CSharp {
@@ -32,10 +27,10 @@ namespace Mono.CSharp {
                public static void AppendResults (List<string> results, string prefix, IEnumerable<string> names)
                {
                        foreach (string name in names) {
-                               if (name == null || prefix == null)
+                               if (name == null)
                                        continue;
 
-                               if (!name.StartsWith (prefix))
+                               if (prefix != null && !name.StartsWith (prefix))
                                        continue;
 
                                if (results.Contains (name))
@@ -113,14 +108,13 @@ namespace Mono.CSharp {
                protected override Expression DoResolve (ResolveContext ec)
                {
                        Expression expr_resolved = expr.Resolve (ec,
-                               ResolveFlags.VariableOrValue | ResolveFlags.Type |
-                               ResolveFlags.Intermediate);
+                               ResolveFlags.VariableOrValue | ResolveFlags.Type);
 
                        if (expr_resolved == null)
                                return null;
 
                        TypeSpec expr_type = expr_resolved.Type;
-                       if (expr_type.IsPointer || expr_type == TypeManager.void_type || expr_type == TypeManager.null_type || expr_type == InternalType.AnonymousMethod) {
+                       if (expr_type.IsPointer || expr_type == TypeManager.void_type || expr_type == InternalType.Null || expr_type == InternalType.AnonymousMethod) {
                                Unary.Error_OperatorCannotBeApplied (ec, loc, ".", expr_type);
                                return null;
                        }
@@ -156,7 +150,7 @@ namespace Mono.CSharp {
                                AppendResults (results, partial_name, r);
                        }
 
-                       throw new CompletionResult (partial_name == null ? "" : partial_name, results.ToArray ());
+                       throw new CompletionResult (partial_name == null ? "" : partial_name, results.Distinct ().ToArray ());
                }
 
                protected override void CloneTo (CloneContext clonectx, Expression t)
@@ -194,7 +188,7 @@ namespace Mono.CSharp {
                                results = temp;
                        }
 
-                       throw new CompletionResult (partial_name == null ? "" : partial_name, results.ToArray ());
+                       throw new CompletionResult (partial_name == null ? "" : partial_name, results.Distinct ().ToArray ());
                }
 
                protected override void CloneTo (CloneContext clonectx, Expression t)