Author: mkrueger
Date: 2007-10-18 07:02:23 -0400 (Thu, 18 Oct 2007)
New Revision: 87743

Modified:
   trunk/monodevelop/Extras/CSharpBinding/ChangeLog
   trunk/monodevelop/Extras/CSharpBinding/Gui/CSharpParameterDataProvider.cs
   trunk/monodevelop/Extras/CSharpBinding/Gui/CSharpTextEditorExtension.cs
Log:
* Gui/CSharpParameterDataProvider.cs, Gui/CSharpTextEditorExtension.cs:
  Fixed "Bug 325509 - Inaccessible methods displayed in
  autocomplete".

Modified: trunk/monodevelop/Extras/CSharpBinding/ChangeLog
===================================================================
--- trunk/monodevelop/Extras/CSharpBinding/ChangeLog    2007-10-18 10:36:03 UTC 
(rev 87742)
+++ trunk/monodevelop/Extras/CSharpBinding/ChangeLog    2007-10-18 11:02:23 UTC 
(rev 87743)
@@ -1,3 +1,8 @@
+2007-10-18  Mike Krüger <[EMAIL PROTECTED]> 
+
+       * Gui/CSharpParameterDataProvider.cs, Gui/CSharpTextEditorExtension.cs:
+         Fixed "Bug 325509 - Inaccessible methods displayed in autocomplete".
+
 2007-10-17  Mike Krüger <[EMAIL PROTECTED]> 
 
        * Parser/Resolver.cs: changed is/as resolve.

Modified: 
trunk/monodevelop/Extras/CSharpBinding/Gui/CSharpParameterDataProvider.cs
===================================================================
--- trunk/monodevelop/Extras/CSharpBinding/Gui/CSharpParameterDataProvider.cs   
2007-10-18 10:36:03 UTC (rev 87742)
+++ trunk/monodevelop/Extras/CSharpBinding/Gui/CSharpParameterDataProvider.cs   
2007-10-18 11:02:23 UTC (rev 87743)
@@ -16,12 +16,12 @@
                TextEditor editor;
                CSharpAmbience ambience = new CSharpAmbience ();
                
-               public CSharpParameterDataProvider (TextEditor editor, IClass 
cls, string methodName): base (cls, methodName)
+               public CSharpParameterDataProvider (TextEditor editor, 
MethodParameterDataProvider.Scope scope, IClass cls, string methodName): base 
(cls, methodName, scope)
                {
                        this.editor = editor;
                }
                
-               public CSharpParameterDataProvider (TextEditor editor, IClass 
cls): base (cls)
+               public CSharpParameterDataProvider (TextEditor editor, 
MethodParameterDataProvider.Scope scope, IClass cls): base (cls, scope)
                {
                        this.editor = editor;
                }

Modified: 
trunk/monodevelop/Extras/CSharpBinding/Gui/CSharpTextEditorExtension.cs
===================================================================
--- trunk/monodevelop/Extras/CSharpBinding/Gui/CSharpTextEditorExtension.cs     
2007-10-18 10:36:03 UTC (rev 87742)
+++ trunk/monodevelop/Extras/CSharpBinding/Gui/CSharpTextEditorExtension.cs     
2007-10-18 11:02:23 UTC (rev 87743)
@@ -537,13 +537,31 @@
                                Resolver res = new Resolver (pctx);
                                ILanguageItem it = res.ResolveIdentifier (pctx, 
ex, lin, col - 1, FileName, Editor.Text);
                                
-                               // Create the parameter data provider if a 
method is found.
+                               MethodParameterDataProvider.Scope scope = 
MethodParameterDataProvider.Scope.All;
+                               if (it is IMember) {
+                                       IMember member = it as IMember;
+                                       IClass insideClass = LookupClass 
(res.CompilationUnit, lin, col);
+                                       if (insideClass != null) {
+                                               if 
(insideClass.FullyQualifiedName == member.DeclaringType.FullyQualifiedName) {
+                                                       scope = 
MethodParameterDataProvider.Scope.All;
+                                               } else {
+                                                       scope = 
MethodParameterDataProvider.Scope.Public;
+                                                       foreach (IClass c in 
pctx.GetClassInheritanceTree (insideClass)) {
+                                                               if 
(c.FullyQualifiedName == member.DeclaringType.FullyQualifiedName) {
+                                                                       scope 
|= MethodParameterDataProvider.Scope.Protected;
+                                                                       break;
+                                                               }
+                                                       }
+                                               }
+                                               scope |= 
MethodParameterDataProvider.Scope.Internal;
+                                       }
+                               }
                                if (it is IMethod) {
                                        IMethod met = (IMethod) it;
                                        if (met.IsConstructor)
-                                               return new 
CSharpParameterDataProvider (Editor, met.DeclaringType);
+                                               return new 
CSharpParameterDataProvider (Editor, scope, met.DeclaringType);
                                        else
-                                               return new 
CSharpParameterDataProvider (Editor, met.DeclaringType, met.Name);
+                                               return new 
CSharpParameterDataProvider (Editor, scope, met.DeclaringType, met.Name);
                                }
                                else if (it is IEvent) {
                                        IEvent ev = (IEvent) it;
@@ -551,12 +569,12 @@
                                        if (cls != null) {
                                                foreach(IMethod m in 
cls.Methods) {
                                                        if (m.Name == "Invoke")
-                                                               return new 
CSharpParameterDataProvider (Editor, cls, "Invoke");
+                                                               return new 
CSharpParameterDataProvider (Editor, scope, cls, "Invoke");
                                                }
                                        }
                                }
                                else if (it is IClass) {
-                                       return new CSharpParameterDataProvider 
(Editor, (IClass)it);
+                                       return new CSharpParameterDataProvider 
(Editor, scope, (IClass)it);
                                }
                        }
                        return null;

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to