Browse Source

Fixed forum-16159: dots in folder names stripped from namespaces.

Fixed conversion of abstract properties to Boo.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2470 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
51e8e3aade
  1. 4
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorTypeMembers.cs
  2. 1
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/MemberTests.cs
  3. 23
      src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs
  4. 2
      src/Main/Base/Project/Src/Project/CustomTool.cs

4
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorTypeMembers.cs

@ -195,7 +195,7 @@ namespace NRefactoryToBooConverter
m.Getter = new B.Method(GetLexicalInfo(propertyDeclaration.GetRegion)); m.Getter = new B.Method(GetLexicalInfo(propertyDeclaration.GetRegion));
if (propertyDeclaration.GetRegion != null) { if (propertyDeclaration.GetRegion != null) {
ConvertAttributes(propertyDeclaration.GetRegion.Attributes, m.Getter.Attributes); ConvertAttributes(propertyDeclaration.GetRegion.Attributes, m.Getter.Attributes);
m.Modifiers = ConvertModifier(propertyDeclaration.GetRegion, m.Visibility); m.Getter.Modifiers = ConvertModifier(propertyDeclaration.GetRegion, m.Visibility);
m.Getter.Body = ConvertMethodBlock(propertyDeclaration.GetRegion.Block); m.Getter.Body = ConvertMethodBlock(propertyDeclaration.GetRegion.Block);
m.Getter.ReturnType = m.Type; m.Getter.ReturnType = m.Type;
} }
@ -204,7 +204,7 @@ namespace NRefactoryToBooConverter
m.Setter = new B.Method(GetLexicalInfo(propertyDeclaration.SetRegion)); m.Setter = new B.Method(GetLexicalInfo(propertyDeclaration.SetRegion));
if (propertyDeclaration.SetRegion != null) { if (propertyDeclaration.SetRegion != null) {
ConvertAttributes(propertyDeclaration.SetRegion.Attributes, m.Setter.Attributes); ConvertAttributes(propertyDeclaration.SetRegion.Attributes, m.Setter.Attributes);
m.Modifiers = ConvertModifier(propertyDeclaration.SetRegion, m.Visibility); m.Setter.Modifiers = ConvertModifier(propertyDeclaration.SetRegion, m.Visibility);
m.Setter.Body = ConvertMethodBlock(propertyDeclaration.SetRegion.Block); m.Setter.Body = ConvertMethodBlock(propertyDeclaration.SetRegion.Block);
} }
} }

1
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/MemberTests.cs

@ -228,7 +228,6 @@ namespace NRefactoryToBooConverter.Tests
} }
[Test] [Test]
[Ignore("Fix requires change to Boo.Lang.Compiler.dll")]
public void AbstractProperty() public void AbstractProperty()
{ {
TestInClass("public abstract string Prop { get; }", "public abstract Prop as System.String:\n\tget:\n\t\tpass"); TestInClass("public abstract string Prop { get; }", "public abstract Prop as System.String:\n\tget:\n\t\tpass");

23
src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs

@ -405,22 +405,25 @@ namespace ICSharpCode.SharpDevelop.Gui
createdFiles.Add(new KeyValuePair<string, FileDescriptionTemplate>(parsedFileName, newfile)); createdFiles.Add(new KeyValuePair<string, FileDescriptionTemplate>(parsedFileName, newfile));
} }
internal static string GenerateValidClassName(string className) internal static string GenerateValidClassOrNamespaceName(string className, bool allowDot)
{ {
int idx = 0; if (className == null)
while (idx < className.Length && className[idx] != '_' && !Char.IsLetter(className[idx])) { throw new ArgumentNullException("className");
++idx; className = className.Trim();
} if (className.Length == 0)
return string.Empty;
StringBuilder nameBuilder = new StringBuilder(); StringBuilder nameBuilder = new StringBuilder();
for (; idx < className.Length; ++idx) { if (className[0] != '_' && !char.IsLetter(className, 0))
nameBuilder.Append('_');
for (int idx = 0; idx < className.Length; ++idx) {
if (Char.IsLetterOrDigit(className[idx]) || className[idx] == '_') { if (Char.IsLetterOrDigit(className[idx]) || className[idx] == '_') {
nameBuilder.Append(className[idx]); nameBuilder.Append(className[idx]);
} } else if (className[idx] == '.' && allowDot) {
if (className[idx] == ' ' || className[idx] == '-' ) { nameBuilder.Append('.');
} else {
nameBuilder.Append('_'); nameBuilder.Append('_');
} }
} }
return nameBuilder.ToString(); return nameBuilder.ToString();
} }
@ -467,7 +470,7 @@ namespace ICSharpCode.SharpDevelop.Gui
StringParser.Properties["Extension"] = Path.GetExtension(fileName); StringParser.Properties["Extension"] = Path.GetExtension(fileName);
StringParser.Properties["Path"] = Path.GetDirectoryName(fileName); StringParser.Properties["Path"] = Path.GetDirectoryName(fileName);
StringParser.Properties["ClassName"] = GenerateValidClassName(Path.GetFileNameWithoutExtension(fileName)); StringParser.Properties["ClassName"] = GenerateValidClassOrNamespaceName(Path.GetFileNameWithoutExtension(fileName), false);
if (item.Template.WizardPath != null) { if (item.Template.WizardPath != null) {

2
src/Main/Base/Project/Src/Project/CustomTool.cs

@ -438,7 +438,7 @@ namespace ICSharpCode.SharpDevelop.Project
if (subdir.Equals("source", StringComparison.OrdinalIgnoreCase)) if (subdir.Equals("source", StringComparison.OrdinalIgnoreCase))
continue; continue;
standardNameSpace.Append('.'); standardNameSpace.Append('.');
standardNameSpace.Append(NewFileDialog.GenerateValidClassName(subdir)); standardNameSpace.Append(NewFileDialog.GenerateValidClassOrNamespaceName(subdir, true));
} }
return standardNameSpace.ToString(); return standardNameSpace.ToString();
} }

Loading…
Cancel
Save