Author: lluis
Date: 2007-09-14 13:27:21 -0400 (Fri, 14 Sep 2007)
New Revision: 85830

Modified:
   trunk/monodevelop/Extras/CSharpBinding/CSharpAmbience.cs
   trunk/monodevelop/Extras/CSharpBinding/ChangeLog
   trunk/monodevelop/Extras/CSharpBinding/Gui/CSharpTextEditorExtension.cs
   trunk/monodevelop/Extras/CSharpBinding/Gui/OverrideCompletionData.cs
   trunk/monodevelop/Extras/CSharpBinding/Parser/TypeNameResolver.cs
Log:
* Gui/OverrideCompletionData.cs, Gui/CSharpTextEditorExtension.cs,
  CSharpAmbience.cs: Make proper use of ITypeNameResolver everywhere
  to resolve type names of parameters, methods, etc. Fixes bug
  #82854.
* Parser/TypeNameResolver.cs: Fix name resolution for aliases.

Modified: trunk/monodevelop/Extras/CSharpBinding/CSharpAmbience.cs
===================================================================
--- trunk/monodevelop/Extras/CSharpBinding/CSharpAmbience.cs    2007-09-14 
17:23:51 UTC (rev 85829)
+++ trunk/monodevelop/Extras/CSharpBinding/CSharpAmbience.cs    2007-09-14 
17:27:21 UTC (rev 85830)
@@ -57,7 +57,7 @@
                        return (modifier & query) == query;
                }
                
-               public override string Convert(ModifierEnum modifier, 
ConversionFlags conversionFlags)
+               public override string Convert (ModifierEnum modifier, 
ConversionFlags conversionFlags)
                {
                        if (ShowAccessibility(conversionFlags)) {
                                if (ModifierIsSet(modifier, 
ModifierEnum.Public)) {
@@ -175,7 +175,7 @@
                {
                        StringBuilder builder = new StringBuilder();
                        
-                       builder.Append(Convert(c.Modifiers, conversionFlags));
+                       builder.Append (Convert (c.Modifiers, conversionFlags));
                        
                        if (ShowClassModifiers(conversionFlags)) {
                                if (c.IsSealed) {
@@ -205,7 +205,7 @@
                                                        foreach(IMethod m in 
c.Methods) {
                                                                if (m.Name != 
"Invoke") continue;
                                                                builder.Append 
(' ');
-                                                               builder.Append 
(Convert(m.ReturnType));
+                                                               builder.Append 
(Convert (m.ReturnType, ConversionFlags.None, resolver));
                                                        }
                                                }
                                                break;
@@ -258,7 +258,7 @@
                                        for (int i = 0; i < m.Parameters.Count; 
++i) {
                                                if 
(IncludeHTMLMarkup(conversionFlags)) builder.Append("&nbsp;&nbsp;&nbsp;");
                                                
-                                               
builder.Append(Convert(m.Parameters[i], conversionFlags));
+                                               builder.Append (Convert 
(m.Parameters[i], conversionFlags, resolver));
                                                if (i + 1 < m.Parameters.Count) 
builder.Append(", ");
                                                
                                                if 
(IncludeHTMLMarkup(conversionFlags)) builder.Append("<br>");
@@ -269,10 +269,10 @@
                        } else if (ShowInheritanceList(conversionFlags) && 
c.ClassType != ClassType.Enum) {
                                if (c.BaseTypes.Count > 0) {
                                        builder.Append (" : ");
-                                       builder.Append 
(Convert(c.BaseTypes[0]));
+                                       builder.Append (Convert 
(c.BaseTypes[0], ConversionFlags.None, resolver));
                                        for (int i = 1; i < c.BaseTypes.Count; 
++i) {
                                                builder.Append (", ");
-                                               builder.Append 
(Convert(c.BaseTypes[i]));
+                                               builder.Append (Convert 
(c.BaseTypes[i], ConversionFlags.None, resolver));
                                        }
                                }
                        }
@@ -289,11 +289,11 @@
                        return "}";
                }
                
-               public override string Convert(IField field, ConversionFlags 
conversionFlags, ITypeNameResolver resolver)
+               public override string Convert (IField field, ConversionFlags 
conversionFlags, ITypeNameResolver resolver)
                {
                        StringBuilder builder = new StringBuilder();
                        
-                       builder.Append(Convert(field.Modifiers, 
conversionFlags));
+                       builder.Append (Convert (field.Modifiers, 
conversionFlags));
                        
                        if (ShowMemberModifiers(conversionFlags)) {
                                if (field.IsStatic && field.IsLiteral)
@@ -307,8 +307,8 @@
                        }
                        
                        if (field.ReturnType != null) {
-                               builder.Append(Convert(field.ReturnType, 
conversionFlags));
-                               builder.Append(' ');
+                               builder.Append (Convert (field.ReturnType, 
conversionFlags, resolver));
+                               builder.Append (' ');
                        }
                        
                        if (UseFullyQualifiedMemberNames(conversionFlags))
@@ -322,18 +322,18 @@
                        return builder.ToString();                      
                }
                
-               public override string Convert(IProperty property, 
ConversionFlags conversionFlags, ITypeNameResolver resolver)
+               public override string Convert (IProperty property, 
ConversionFlags conversionFlags, ITypeNameResolver resolver)
                {
                        StringBuilder builder = new StringBuilder();
                        
-                       builder.Append(Convert(property.Modifiers, 
conversionFlags));
+                       builder.Append (Convert (property.Modifiers, 
conversionFlags));
                        
                        if (ShowMemberModifiers(conversionFlags)) {
                                builder.Append(GetModifier(property, 
conversionFlags));
                        }
                        
                        if (property.ReturnType != null) {
-                               builder.Append(Convert(property.ReturnType, 
conversionFlags));
+                               builder.Append (Convert (property.ReturnType, 
conversionFlags, resolver));
                                builder.Append(' ');
                        }
                        
@@ -346,12 +346,12 @@
                                builder.Append(" (");
 
                        if (IncludeHTMLMarkup(conversionFlags)) 
builder.Append("<br>&nbsp;&nbsp;&nbsp;");
-                       builder.Append (Convert (property.Parameters[0], 
conversionFlags));
+                       builder.Append (Convert (property.Parameters[0], 
conversionFlags, resolver));
                        
                                for (int i = 0; i < property.Parameters.Count; 
++i) {
                                        if (IncludeHTMLMarkup(conversionFlags)) 
builder.Append("<br>&nbsp;&nbsp;&nbsp;");
                                        builder.Append(", ");
-                                       
builder.Append(Convert(property.Parameters[i], conversionFlags));
+                                       builder.Append (Convert 
(property.Parameters[i], conversionFlags, resolver));
                                }
                                if (IncludeHTMLMarkup(conversionFlags)) 
builder.Append("<br>");
                                
@@ -372,19 +372,19 @@
                        return builder.ToString();
                }
                
-               public override string Convert(IEvent e, ConversionFlags 
conversionFlags, ITypeNameResolver resolver)
+               public override string Convert (IEvent e, ConversionFlags 
conversionFlags, ITypeNameResolver resolver)
                {
                        StringBuilder builder = new StringBuilder();
                        
-                       builder.Append(Convert(e.Modifiers, conversionFlags));
+                       builder.Append (Convert (e.Modifiers, conversionFlags));
                        
                        if (ShowMemberModifiers(conversionFlags)) {
                                builder.Append(GetModifier(e, conversionFlags));
                        }
                        
                        if (e.ReturnType != null) {
-                               builder.Append(Convert(e.ReturnType, 
conversionFlags));
-                               builder.Append(' ');
+                               builder.Append (Convert (e.ReturnType, 
conversionFlags, resolver));
+                               builder.Append (' ');
                        }
                        
                        if (UseFullyQualifiedMemberNames(conversionFlags))
@@ -397,16 +397,16 @@
                        return builder.ToString();
                }
                
-               public override string Convert(IIndexer m, ConversionFlags 
conversionFlags, ITypeNameResolver resolver)
+               public override string Convert (IIndexer m, ConversionFlags 
conversionFlags, ITypeNameResolver resolver)
                {
                        StringBuilder builder = new StringBuilder();
-                       builder.Append(Convert(m.Modifiers, conversionFlags));
+                       builder.Append (Convert (m.Modifiers, conversionFlags));
                        
                        if (ShowMemberModifiers(conversionFlags) && m.IsStatic)
                                AppendPangoHtmlTag (builder, "static", "i", 
conversionFlags);
                        
                        if (m.ReturnType != null) {
-                               builder.Append(Convert(m.ReturnType, 
conversionFlags));
+                               builder.Append (Convert (m.ReturnType, 
conversionFlags, resolver));
                                builder.Append(' ');
                        }
                        
@@ -417,7 +417,7 @@
                        
                        builder.Append(" [");
                        
-                       Convert (m.Parameters, builder, conversionFlags);
+                       Convert (m.Parameters, builder, conversionFlags, 
resolver);
                        
                        builder.Append(']');
                        
@@ -428,30 +428,35 @@
                
                public void Convert (ParameterCollection parameters, 
StringBuilder builder, ConversionFlags conversionFlags)
                {
+                       Convert (parameters, builder, conversionFlags, null);
+               }
+               
+               public void Convert (ParameterCollection parameters, 
StringBuilder builder, ConversionFlags conversionFlags, ITypeNameResolver 
resolver)
+               {
                        if (parameters.Count > 0) {
                                if (IncludeHTMLMarkup(conversionFlags)) 
builder.Append ("<br>&nbsp;&nbsp;&nbsp;");
-                               builder.Append (Convert (parameters[0], 
conversionFlags));
+                               builder.Append (Convert (parameters[0], 
conversionFlags, resolver));
                                for (int i = 1; i < parameters.Count; ++i) {
                                        builder.Append (", ");
                                        if (IncludeHTMLMarkup(conversionFlags)) 
builder.Append("<br>&nbsp;&nbsp;&nbsp;");
-                                       builder.Append(Convert(parameters[i], 
conversionFlags));
+                                       builder.Append (Convert (parameters[i], 
conversionFlags, resolver));
                                }
                                if (IncludeHTMLMarkup(conversionFlags)) 
builder.Append("<br>");
                        }
                }
                
-               public override string Convert(IMethod m, ConversionFlags 
conversionFlags, ITypeNameResolver resolver)
+               public override string Convert (IMethod m, ConversionFlags 
conversionFlags, ITypeNameResolver resolver)
                {
                        bool includeMarkup = IncludeHTMLMarkup(conversionFlags) 
|| IncludePangoMarkup(conversionFlags);
                        
                        StringBuilder builder = new StringBuilder();
-                       builder.Append(Convert(m.Modifiers, conversionFlags));
+                       builder.Append (Convert (m.Modifiers, conversionFlags));
                        if (ShowMemberModifiers(conversionFlags)) {
                                builder.Append(GetModifier(m, conversionFlags));
                        }
                        
                        if (m.ReturnType != null) {
-                               builder.Append(Convert(m.ReturnType, 
conversionFlags));
+                               builder.Append (Convert (m.ReturnType, 
conversionFlags, resolver));
                                builder.Append(' ');
                        }
                        
@@ -494,7 +499,7 @@
                        }
                        
                        builder.Append(" (");
-                       Convert (m.Parameters, builder, conversionFlags);
+                       Convert (m.Parameters, builder, conversionFlags, 
resolver);
                        builder.Append(')');
                        
                        if (IncludeBodies(conversionFlags)) {
@@ -546,7 +551,7 @@
                        return "}";
                }
                
-               public override string Convert(IReturnType returnType, 
ConversionFlags conversionFlags, ITypeNameResolver resolver)
+               public override string Convert (IReturnType returnType, 
ConversionFlags conversionFlags, ITypeNameResolver resolver)
                {
                        if (returnType == null) {
                                return String.Empty;
@@ -582,11 +587,11 @@
                                // Since we know that there is at least one 
generic argument in
                                // the list, we can add it outside the loop - 
so, we don't have
                                // to check whether we may append a comma or not
-                               builder.Append 
(Convert(returnType.GenericArguments[0], conversionFlags));
+                               builder.Append (Convert 
(returnType.GenericArguments[0], conversionFlags, resolver));
                                // Now continue with the others, if there are 
any
                                for (int i = 1; i < 
returnType.GenericArguments.Count; i++) {
                                        builder.Append (", ");
-                                       builder.Append ( 
Convert(returnType.GenericArguments[i], conversionFlags));
+                                       builder.Append (Convert 
(returnType.GenericArguments[i], conversionFlags, resolver));
                                }
                                builder.Append ((includeMarkup) ? "&gt;" : ">");
                        }
@@ -610,7 +615,7 @@
                        return builder.ToString();
                }
                
-               public override string Convert(IParameter param, 
ConversionFlags conversionFlags, ITypeNameResolver resolver)
+               public override string Convert (IParameter param, 
ConversionFlags conversionFlags, ITypeNameResolver resolver)
                {
                        StringBuilder builder = new StringBuilder();
                        
@@ -621,7 +626,7 @@
                        else if (param.IsParams)
                                AppendPangoHtmlTag (builder, "params ", "i", 
conversionFlags);
                        
-                       builder.Append(Convert(param.ReturnType, 
conversionFlags));
+                       builder.Append (Convert (param.ReturnType, 
conversionFlags, resolver));
                        
                        if (ShowParameterNames(conversionFlags)) {
                                builder.Append(' ');
@@ -630,11 +635,11 @@
                        return builder.ToString();
                }
 
-               public override string Convert(LocalVariable localVariable, 
ConversionFlags conversionFlags, ITypeNameResolver resolver)
+               public override string Convert (LocalVariable localVariable, 
ConversionFlags conversionFlags, ITypeNameResolver resolver)
                {
                        StringBuilder builder = new StringBuilder();            
                                
                        
-                       builder.Append(Convert(localVariable.ReturnType, 
conversionFlags));                                             
+                       builder.Append (Convert (localVariable.ReturnType, 
conversionFlags, resolver));                                         
                        builder.Append(' ');
                        AppendPangoHtmlTag (builder, localVariable.Name, "b", 
conversionFlags);
                        

Modified: trunk/monodevelop/Extras/CSharpBinding/ChangeLog
===================================================================
--- trunk/monodevelop/Extras/CSharpBinding/ChangeLog    2007-09-14 17:23:51 UTC 
(rev 85829)
+++ trunk/monodevelop/Extras/CSharpBinding/ChangeLog    2007-09-14 17:27:21 UTC 
(rev 85830)
@@ -1,3 +1,10 @@
+2007-09-14  Lluis Sanchez Gual <[EMAIL PROTECTED]> 
+
+       * Gui/OverrideCompletionData.cs, Gui/CSharpTextEditorExtension.cs,
+         CSharpAmbience.cs: Make proper use of ITypeNameResolver everywhere to
+         resolve type names of parameters, methods, etc. Fixes bug #82854.
+       * Parser/TypeNameResolver.cs: Fix name resolution for aliases.
+
 2007-09-14  Jeffrey Stedfast  <[EMAIL PROTECTED]>
 
        * FormattingStrategy/CSharpIndentEngine.cs (PushColon): Handle the

Modified: 
trunk/monodevelop/Extras/CSharpBinding/Gui/CSharpTextEditorExtension.cs
===================================================================
--- trunk/monodevelop/Extras/CSharpBinding/Gui/CSharpTextEditorExtension.cs     
2007-09-14 17:23:51 UTC (rev 85829)
+++ trunk/monodevelop/Extras/CSharpBinding/Gui/CSharpTextEditorExtension.cs     
2007-09-14 17:27:21 UTC (rev 85830)
@@ -630,7 +630,7 @@
                                IClass cls = res.GetCallingClass (line, column, 
FileName, true);
                                if (cls != null && (cls.ClassType == 
ClassType.Class || cls.ClassType == ClassType.Struct)) {
                                        string typedModifiers = Editor.GetText 
(firstMod, ctx.TriggerOffset);
-                                       return GetOverridablesCompletionData 
(pctx, ctx, cls, firstMod, typedModifiers);
+                                       return GetOverridablesCompletionData 
(pctx, ctx, cls, firstMod, typedModifiers, res.CreateTypeNameResolver ());
                                }
                        }
                        
@@ -732,7 +732,7 @@
                        return Editor.GetText (i, endOffset);
                }
                
-               ICompletionDataProvider GetOverridablesCompletionData 
(IParserContext pctx, ICodeCompletionContext ctx, IClass cls, int insertPos, 
string typedModifiers)
+               ICompletionDataProvider GetOverridablesCompletionData 
(IParserContext pctx, ICodeCompletionContext ctx, IClass cls, int insertPos, 
string typedModifiers, ITypeNameResolver resolver)
                {
                        ArrayList classMembers = new ArrayList ();
                        ArrayList interfaceMembers = new ArrayList ();
@@ -745,7 +745,7 @@
                        CSharpAmbience amb = new CSharpAmbience ();
                        CodeCompletionDataProvider completionProvider = new 
CodeCompletionDataProvider (pctx, GetAmbience ());
                        foreach (ILanguageItem mem in classMembers) {
-                               completionProvider.AddCompletionData (new 
OverrideCompletionData (Editor, mem, insertPos, typedModifiers, amb));
+                               completionProvider.AddCompletionData (new 
OverrideCompletionData (Editor, mem, insertPos, typedModifiers, amb, resolver));
                        }
                        return completionProvider;
                }

Modified: trunk/monodevelop/Extras/CSharpBinding/Gui/OverrideCompletionData.cs
===================================================================
--- trunk/monodevelop/Extras/CSharpBinding/Gui/OverrideCompletionData.cs        
2007-09-14 17:23:51 UTC (rev 85829)
+++ trunk/monodevelop/Extras/CSharpBinding/Gui/OverrideCompletionData.cs        
2007-09-14 17:27:21 UTC (rev 85830)
@@ -23,21 +23,24 @@
                string typedModifiers;
                int insertOffset;
                string indent;
+               ITypeNameResolver resolver;
                
-               public OverrideCompletionData (TextEditor editor, ILanguageItem 
item, int insertOffset, string typedModifiers, CSharpAmbience amb)
+               public OverrideCompletionData (TextEditor editor, ILanguageItem 
item, int insertOffset, string typedModifiers, CSharpAmbience amb, 
ITypeNameResolver resolver)
                {
                        this.typedModifiers = typedModifiers;
                        this.insertOffset = insertOffset;
                        this.ambience = amb;
                        this.editor = editor;
                        this.item = item;
-                       ConversionFlags flags = 
ConversionFlags.ShowParameterNames | ConversionFlags.ShowGenericParameters;
+                       this.resolver = resolver;
                        
+                       ConversionFlags flags = 
ConversionFlags.ShowParameterNames | ConversionFlags.ShowGenericParameters | 
ConversionFlags.UseIntrinsicTypeNames;
+                       
                        if (item is IIndexer) {
                                IIndexer ind = (IIndexer) item;
                                Image = IdeApp.Services.Icons.GetIcon (ind);
                                StringBuilder sb = new StringBuilder ("this [");
-                               ambience.Convert (ind.Parameters, sb, flags);
+                               ambience.Convert (ind.Parameters, sb, flags, 
resolver);
                                sb.Append ("]");
                                Text = new string[] { sb.ToString () };
                                Description = ambience.Convert(item);
@@ -49,7 +52,7 @@
                                IMethod met = (IMethod) item;
                                Image = IdeApp.Services.Icons.GetIcon (met);
                                StringBuilder sb = new StringBuilder (met.Name 
+ " (");
-                               ambience.Convert (met.Parameters, sb, flags);
+                               ambience.Convert (met.Parameters, sb, flags, 
resolver);
                                sb.Append (")");
                                Text = new string[] { sb.ToString () };
                                Description = ambience.Convert (met);
@@ -87,11 +90,12 @@
                
                void InsertMethod (IMethod method, string modifiers)
                {
-                       ConversionFlags flags = 
ConversionFlags.ShowParameterNames | ConversionFlags.ShowGenericParameters;
+                       ConversionFlags flags = 
ConversionFlags.ShowParameterNames | ConversionFlags.ShowGenericParameters | 
ConversionFlags.UseFullyQualifiedNames | ConversionFlags.UseIntrinsicTypeNames;
                        StringBuilder textBuilder = new StringBuilder ();
+                       Console.WriteLine ("ppres: " + resolver);
                        
                        textBuilder.Append (modifiers);
-                       textBuilder.Append (ambience.Convert (method, flags));
+                       textBuilder.Append (ambience.Convert (method, flags, 
resolver));
                        textBuilder.Append ('\n');
                        textBuilder.Append (indent);
                        textBuilder.Append ("{\n");
@@ -116,12 +120,12 @@
                
                void InsertProperty (IProperty prop, string modifiers)
                {
-                       ConversionFlags flags = 
ConversionFlags.ShowParameterNames | ConversionFlags.ShowGenericParameters;
+                       ConversionFlags flags = 
ConversionFlags.ShowParameterNames | ConversionFlags.ShowGenericParameters | 
ConversionFlags.UseFullyQualifiedNames | ConversionFlags.UseIntrinsicTypeNames;
                        StringBuilder textBuilder = new StringBuilder ();
                        int cpos = -1;
                        
                        textBuilder.Append (modifiers);
-                       textBuilder.Append (ambience.Convert (prop.ReturnType, 
flags));
+                       textBuilder.Append (ambience.Convert (prop.ReturnType, 
flags, resolver));
                        textBuilder.Append (' ');
                        textBuilder.Append (prop.Name);
                        textBuilder.Append (" {\n");
@@ -167,12 +171,12 @@
                
                void InsertEvent (IEvent ev, string modifiers)
                {
-                       ConversionFlags flags = 
ConversionFlags.ShowParameterNames | ConversionFlags.ShowGenericParameters;
+                       ConversionFlags flags = 
ConversionFlags.ShowParameterNames | ConversionFlags.ShowGenericParameters | 
ConversionFlags.UseFullyQualifiedNames | ConversionFlags.UseIntrinsicTypeNames;
                        StringBuilder textBuilder = new StringBuilder ();
                        
                        textBuilder.Append (modifiers);
                        textBuilder.Append ("event ");
-                       textBuilder.Append (ambience.Convert (ev.ReturnType, 
flags));
+                       textBuilder.Append (ambience.Convert (ev.ReturnType, 
flags, resolver));
                        textBuilder.Append (' ');
                        textBuilder.Append (ev.Name);
                        textBuilder.Append (" {\n");
@@ -207,14 +211,14 @@
                
                void InsertIndexer (IIndexer indexer, string modifiers)
                {
-                       ConversionFlags flags = 
ConversionFlags.ShowParameterNames | ConversionFlags.ShowGenericParameters;
+                       ConversionFlags flags = 
ConversionFlags.ShowParameterNames | ConversionFlags.ShowGenericParameters | 
ConversionFlags.UseFullyQualifiedNames | ConversionFlags.UseIntrinsicTypeNames;
                        StringBuilder textBuilder = new StringBuilder ();
                        
                        textBuilder.Append (modifiers);
-                       textBuilder.Append (ambience.Convert 
(indexer.ReturnType));
+                       textBuilder.Append (ambience.Convert 
(indexer.ReturnType, flags, resolver));
                        textBuilder.Append (" this [");
                        
-                       ambience.Convert (indexer.Parameters, textBuilder, 
flags);
+                       ambience.Convert (indexer.Parameters, textBuilder, 
flags, resolver);
                        
                        textBuilder.Append ("] {\n");
                        

Modified: trunk/monodevelop/Extras/CSharpBinding/Parser/TypeNameResolver.cs
===================================================================
--- trunk/monodevelop/Extras/CSharpBinding/Parser/TypeNameResolver.cs   
2007-09-14 17:23:51 UTC (rev 85829)
+++ trunk/monodevelop/Extras/CSharpBinding/Parser/TypeNameResolver.cs   
2007-09-14 17:27:21 UTC (rev 85830)
@@ -57,7 +57,7 @@
                        string res;
                        if (names.TryGetValue (ns, out res)) {
                                if (res.Length > 0)
-                                       return res + "." + typeName;
+                                       return res + "." + typeName.Substring 
(i+1);
                                else
                                        return typeName.Substring (i+1);
                        }

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

Reply via email to