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(" ");
-
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> ");
- 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> ");
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> ");
- 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> ");
- 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) ? ">" : ">");
}
@@ -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