Browse Source

Fixed SD2-1534: Boo forms designer modifies fields in non-designer file

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3895 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
45d5e79d34
  1. 14
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs
  2. 4
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs
  3. 14
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/CodeDomVisitor.cs

14
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs

@ -85,6 +85,20 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -85,6 +85,20 @@ namespace Grunwald.BooBinding.CodeCompletion
return r;
}
public static AST.TypeMemberModifiers ConvertVisibilityBack(ModifierEnum modifier)
{
AST.TypeMemberModifiers r = AST.TypeMemberModifiers.None;
if ((modifier & ModifierEnum.Public) == ModifierEnum.Public)
r |= AST.TypeMemberModifiers.Public;
if ((modifier & ModifierEnum.Protected) == ModifierEnum.Protected)
r |= AST.TypeMemberModifiers.Protected;
if ((modifier & ModifierEnum.Internal) == ModifierEnum.Internal)
r |= AST.TypeMemberModifiers.Internal;
if ((modifier & ModifierEnum.Private) == ModifierEnum.Private)
r |= AST.TypeMemberModifiers.Private;
return r;
}
private int GetLineEnd(int line)
{
if (_lineLength == null || line < 1 || line > _lineLength.Length)

4
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerLoader.cs

@ -8,11 +8,10 @@ @@ -8,11 +8,10 @@
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.ComponentModel.Design.Serialization;
using System.Collections.Generic;
using System.ComponentModel.Design.Serialization;
using System.IO;
using System.Text;
using Boo.Lang.Compiler.Ast;
using Boo.Lang.Parser;
using ICSharpCode.Core;
@ -115,6 +114,7 @@ namespace Grunwald.BooBinding.Designer @@ -115,6 +114,7 @@ namespace Grunwald.BooBinding.Designer
Field field = new Field();
field.Name = f.Name;
field.Type = new SimpleTypeReference(f.ReturnType.FullyQualifiedName);
field.Modifiers = CodeCompletion.ConvertVisitor.ConvertVisibilityBack(f.Modifiers);
cld.Members.Add(field);
}
}

14
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/CodeDomVisitor.cs

@ -45,13 +45,14 @@ namespace Grunwald.BooBinding.Designer @@ -45,13 +45,14 @@ namespace Grunwald.BooBinding.Designer
MemberAttributes ConvModifiers(TypeMember member)
{
bool strict = ConvertVisitor.IsStrictMode(pc);
if (member is Field)
return ConvModifiers(member.Modifiers, MemberAttributes.Family);
return ConvModifiers(member.Modifiers, strict ? MemberAttributes.Private : MemberAttributes.Family);
else
return ConvModifiers(member.Modifiers, MemberAttributes.Public);
return ConvModifiers(member.Modifiers, strict ? MemberAttributes.Private : MemberAttributes.Public);
}
MemberAttributes ConvModifiers(TypeMemberModifiers modifier, MemberAttributes defaultAttr)
MemberAttributes ConvModifiers(TypeMemberModifiers modifier, MemberAttributes defaultVisibility)
{
MemberAttributes attr = 0;
if ((modifier & TypeMemberModifiers.Abstract) == TypeMemberModifiers.Abstract)
@ -72,10 +73,9 @@ namespace Grunwald.BooBinding.Designer @@ -72,10 +73,9 @@ namespace Grunwald.BooBinding.Designer
attr |= MemberAttributes.Static;
if ((modifier & TypeMemberModifiers.Virtual) != TypeMemberModifiers.Virtual)
attr |= MemberAttributes.Final;
if (attr == 0)
return defaultAttr;
else
return attr;
if ((modifier & TypeMemberModifiers.VisibilityMask) == TypeMemberModifiers.None)
attr |= defaultVisibility;
return attr;
}
CodeTypeReference ConvTypeRef(TypeReference tr)

Loading…
Cancel
Save