Browse Source

XAML binding now uses correct modifiers for classes and fields (implemented x:ClassModifier and x:FieldModifier support)

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5485 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Siegfried Pammer 16 years ago
parent
commit
cf9d7e4766
  1. 12
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooAmbience.cs
  2. 23
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompilationUnitCreatorVisitor.cs
  3. 5
      src/AddIns/Misc/UnitTesting/Test/Utils/MockAmbience.cs
  4. 5
      src/Main/Base/Project/Src/Services/AmbienceService/NetAmbience.cs
  5. 5
      src/Main/Base/Test/Utils/MockAmbience.cs
  6. 3
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Ambience.cs
  7. 12
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/CSharpAmbience.cs
  8. 12
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/VBNet/VBNetAmbience.cs

12
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooAmbience.cs

@ -95,18 +95,18 @@ namespace Grunwald.BooBinding @@ -95,18 +95,18 @@ namespace Grunwald.BooBinding
return (modifier & query) == query;
}
string ConvertAccessibility(ModifierEnum modifier)
public override string ConvertAccessibility(ModifierEnum accessibility)
{
if (ShowAccessibility) {
if (ModifierIsSet(modifier, ModifierEnum.Public)) {
if (ModifierIsSet(accessibility, ModifierEnum.Public)) {
return "public ";
} else if (ModifierIsSet(modifier, ModifierEnum.Private)) {
} else if (ModifierIsSet(accessibility, ModifierEnum.Private)) {
return "private ";
} else if (ModifierIsSet(modifier, ModifierEnum.ProtectedAndInternal)) {
} else if (ModifierIsSet(accessibility, ModifierEnum.ProtectedAndInternal)) {
return "protected internal ";
} else if (ModifierIsSet(modifier, ModifierEnum.Internal)) {
} else if (ModifierIsSet(accessibility, ModifierEnum.Internal)) {
return "internal ";
} else if (ModifierIsSet(modifier, ModifierEnum.Protected)) {
} else if (ModifierIsSet(accessibility, ModifierEnum.Protected)) {
return "protected ";
}
}

23
src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompilationUnitCreatorVisitor.cs

@ -23,6 +23,7 @@ namespace ICSharpCode.XamlBinding @@ -23,6 +23,7 @@ namespace ICSharpCode.XamlBinding
IClass generatedClass;
IProjectContent projectContent;
Stack<NodeWrapper> nodeStack;
IAmbience currentAmbience;
/// <summary>
/// string representation of the document, used to create DOM regions.
@ -39,6 +40,7 @@ namespace ICSharpCode.XamlBinding @@ -39,6 +40,7 @@ namespace ICSharpCode.XamlBinding
this.fileContent = fileContent;
this.lexerTags = lexerTags;
this.projectContent = projectContent;
this.currentAmbience = projectContent.Language.GetAmbience();
this.nodeStack = new Stack<NodeWrapper>();
}
@ -66,7 +68,16 @@ namespace ICSharpCode.XamlBinding @@ -66,7 +68,16 @@ namespace ICSharpCode.XamlBinding
IReturnType type = TypeFromXmlNode(CompilationUnit, attribute.ParentElement);
DomRegion position = CreateRegion(attribute.ParentElement.StartOffset, attribute.ParentElement.StartOffset + attribute.ParentElement.Name.Length);
generatedClass.Fields.Add(new DefaultField(type, name, ModifierEnum.Internal, position, generatedClass));
ModifierEnum fieldModifier = ModifierEnum.Internal;
string modifierValue = (attribute.ParentElement.GetAttributeValue(CompletionDataHelper.XamlNamespace, "FieldModifier") ?? string.Empty).Trim();
string publicString = currentAmbience.ConvertAccessibility(ModifierEnum.Public).Trim();
if (projectContent.Language.NameComparer.Compare(modifierValue, publicString) == 0)
fieldModifier = ModifierEnum.Public;
generatedClass.Fields.Add(new DefaultField(type, name, fieldModifier, position, generatedClass));
}
}
}
@ -128,7 +139,17 @@ namespace ICSharpCode.XamlBinding @@ -128,7 +139,17 @@ namespace ICSharpCode.XamlBinding
IClass AddClass(string className, AXmlElement element) {
DefaultClass c = new DefaultClass(CompilationUnit, className);
string modifierValue = (element.GetAttributeValue(CompletionDataHelper.XamlNamespace, "ClassModifier") ?? string.Empty).Trim();
c.Modifiers = ModifierEnum.Partial;
string internalString = currentAmbience.ConvertAccessibility(ModifierEnum.Internal).Trim();
if (projectContent.Language.NameComparer.Compare(modifierValue, internalString) == 0)
c.Modifiers |= ModifierEnum.Internal;
else
c.Modifiers |= ModifierEnum.Public;
c.Region = CreateRegion(element.StartOffset, element.EndOffset);
c.BaseTypes.Add(TypeFromXmlNode(CompilationUnit, element));
CompilationUnit.Classes.Add(c);

5
src/AddIns/Misc/UnitTesting/Test/Utils/MockAmbience.cs

@ -93,5 +93,10 @@ namespace UnitTesting.Tests.Utils @@ -93,5 +93,10 @@ namespace UnitTesting.Tests.Utils
{
return String.Empty;
}
public string ConvertAccessibility(ModifierEnum accessibility)
{
return String.Empty;
}
}
}

5
src/Main/Base/Project/Src/Services/AmbienceService/NetAmbience.cs

@ -284,5 +284,10 @@ namespace ICSharpCode.SharpDevelop @@ -284,5 +284,10 @@ namespace ICSharpCode.SharpDevelop
{
return dotNetTypeName;
}
public override string ConvertAccessibility(ModifierEnum accessibility)
{
return string.Empty;
}
}
}

5
src/Main/Base/Test/Utils/MockAmbience.cs

@ -78,5 +78,10 @@ namespace ICSharpCode.SharpDevelop.Tests.Utils @@ -78,5 +78,10 @@ namespace ICSharpCode.SharpDevelop.Tests.Utils
{
return String.Empty;
}
public override string ConvertAccessibility(ModifierEnum accessibility)
{
return String.Empty;
}
}
}

3
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Ambience.cs

@ -99,6 +99,8 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -99,6 +99,8 @@ namespace ICSharpCode.SharpDevelop.Dom
string Convert(IParameter param);
string Convert(IReturnType returnType);
string ConvertAccessibility(ModifierEnum accessibility);
string WrapAttribute(string attribute);
string WrapComment(string comment);
@ -239,5 +241,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -239,5 +241,6 @@ namespace ICSharpCode.SharpDevelop.Dom
public abstract string WrapAttribute(string attribute);
public abstract string WrapComment(string comment);
public abstract string GetIntrinsicTypeName(string dotNetTypeName);
public abstract string ConvertAccessibility(ModifierEnum accessibility);
}
}

12
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/CSharpAmbience.cs

@ -24,18 +24,18 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp @@ -24,18 +24,18 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
return (modifier & query) == query;
}
string ConvertAccessibility(ModifierEnum modifier)
public override string ConvertAccessibility(ModifierEnum accessibility)
{
if (ShowAccessibility) {
if (ModifierIsSet(modifier, ModifierEnum.Public)) {
if (ModifierIsSet(accessibility, ModifierEnum.Public)) {
return "public ";
} else if (ModifierIsSet(modifier, ModifierEnum.Private)) {
} else if (ModifierIsSet(accessibility, ModifierEnum.Private)) {
return "private ";
} else if (ModifierIsSet(modifier, ModifierEnum.ProtectedAndInternal)) {
} else if (ModifierIsSet(accessibility, ModifierEnum.ProtectedAndInternal)) {
return "protected internal ";
} else if (ModifierIsSet(modifier, ModifierEnum.Internal)) {
} else if (ModifierIsSet(accessibility, ModifierEnum.Internal)) {
return "internal ";
} else if (ModifierIsSet(modifier, ModifierEnum.Protected)) {
} else if (ModifierIsSet(accessibility, ModifierEnum.Protected)) {
return "protected ";
}
}

12
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/VBNet/VBNetAmbience.cs

@ -50,19 +50,19 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet @@ -50,19 +50,19 @@ namespace ICSharpCode.SharpDevelop.Dom.VBNet
return builder.ToString();
}
string ConvertAccessibility(ModifierEnum modifier)
public override string ConvertAccessibility(ModifierEnum accessibility)
{
StringBuilder builder = new StringBuilder();
if (ShowAccessibility) {
if ((modifier & ModifierEnum.Public) == ModifierEnum.Public) {
if ((accessibility & ModifierEnum.Public) == ModifierEnum.Public) {
builder.Append("Public");
} else if ((modifier & ModifierEnum.Private) == ModifierEnum.Private) {
} else if ((accessibility & ModifierEnum.Private) == ModifierEnum.Private) {
builder.Append("Private");
} else if ((modifier & (ModifierEnum.Protected | ModifierEnum.Internal)) == (ModifierEnum.Protected | ModifierEnum.Internal)) {
} else if ((accessibility & (ModifierEnum.Protected | ModifierEnum.Internal)) == (ModifierEnum.Protected | ModifierEnum.Internal)) {
builder.Append("Protected Friend");
} else if ((modifier & ModifierEnum.Internal) == ModifierEnum.Internal) {
} else if ((accessibility & ModifierEnum.Internal) == ModifierEnum.Internal) {
builder.Append("Friend");
} else if ((modifier & ModifierEnum.Protected) == ModifierEnum.Protected) {
} else if ((accessibility & ModifierEnum.Protected) == ModifierEnum.Protected) {
builder.Append("Protected");
}
builder.Append(' ');

Loading…
Cancel
Save