Browse Source

Fixed project converter bugs.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@992 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
55300ef602
  1. 3
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertProject.cs
  2. 2
      src/Libraries/NRefactory/Project/Src/Parser/Visitors/CSharpConstructsVisitor.cs
  3. 7
      src/Libraries/NRefactory/Test/Output/VBNet/CSharpToVBConverterTest.cs
  4. 26
      src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs
  5. 12
      src/Main/Base/Project/Src/Project/PropertyGroup.cs

3
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertProject.cs

@ -47,6 +47,9 @@ namespace Grunwald.BooBinding @@ -47,6 +47,9 @@ namespace Grunwald.BooBinding
protected override void ConvertFile(FileProjectItem sourceItem, FileProjectItem targetItem)
{
FixExtensionOfExtraProperties(targetItem, ".cs", ".boo");
FixExtensionOfExtraProperties(targetItem, ".vb", ".boo");
string ext = Path.GetExtension(sourceItem.FileName);
if (".cs".Equals(ext, StringComparison.OrdinalIgnoreCase) || ".vb".Equals(ext, StringComparison.OrdinalIgnoreCase)) {
Module module;

2
src/Libraries/NRefactory/Project/Src/Parser/Visitors/CSharpConstructsVisitor.cs

@ -95,7 +95,7 @@ namespace ICSharpCode.NRefactory.Parser @@ -95,7 +95,7 @@ namespace ICSharpCode.NRefactory.Parser
StatementExpression se = ifStatement.TrueStatement[0] as StatementExpression;
if (se == null) {
BlockStatement block = ifStatement.TrueStatement[0] as BlockStatement;
if (block.Children.Count == 1) {
if (block != null && block.Children.Count == 1) {
se = block.Children[0] as StatementExpression;
}
}

7
src/Libraries/NRefactory/Test/Output/VBNet/CSharpToVBConverterTest.cs

@ -145,6 +145,13 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -145,6 +145,13 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
"If FullImage IsNot Nothing Then\n" +
"\te.DrawImage()\n" +
"End If");
// another bug related to the IfStatement code:
TestStatement("if (Tiles != null) foreach (Tile t in Tiles) this.TileTray.Controls.Remove(t);",
"If Tiles IsNot Nothing\n" +
"\tFor Each t As Tile in Tiles\n" +
"\t\tMe.TileTray.Controls.Remove(t)\n" +
"\tNext\n" +
"End If");
}
[Test]

26
src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs

@ -40,6 +40,23 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -40,6 +40,23 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
}
protected virtual void FixExtensionOfExtraProperties(FileProjectItem item, string sourceExtension, string targetExtension)
{
sourceExtension = sourceExtension.ToLowerInvariant();
List<KeyValuePair<string, string>> replacements = new List<KeyValuePair<string, string>>();
foreach (KeyValuePair<string, string> pair in item.Properties) {
if ("Include".Equals(pair.Key, StringComparison.OrdinalIgnoreCase))
continue;
if (pair.Value.ToLowerInvariant().EndsWith(sourceExtension)) {
replacements.Add(pair);
}
}
foreach (KeyValuePair<string, string> pair in replacements) {
item.Properties[pair.Key] = Path.ChangeExtension(pair.Value, targetExtension);
}
}
protected virtual void CopyItems(IProject sourceProject, IProject targetProject)
{
foreach (ProjectItem item in sourceProject.Items) {
@ -48,10 +65,12 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -48,10 +65,12 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
FileProjectItem targetItem = new FileProjectItem(targetProject, fileItem.ItemType);
fileItem.CopyExtraPropertiesTo(targetItem);
targetItem.Include = fileItem.Include;
if (!Directory.Exists(Path.GetDirectoryName(targetItem.FileName))) {
Directory.CreateDirectory(Path.GetDirectoryName(targetItem.FileName));
if (File.Exists(fileItem.FileName)) {
if (!Directory.Exists(Path.GetDirectoryName(targetItem.FileName))) {
Directory.CreateDirectory(Path.GetDirectoryName(targetItem.FileName));
}
ConvertFile(fileItem, targetItem);
}
ConvertFile(fileItem, targetItem);
targetProject.Items.Add(targetItem);
} else {
// Adding the same item to two projects is only allowed because we will save and reload
@ -109,6 +128,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -109,6 +128,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
string sourceExtension, string targetExtension,
SupportedLanguage sourceLanguage, IOutputASTVisitor outputVisitor)
{
FixExtensionOfExtraProperties(targetItem, sourceExtension, targetExtension);
if (sourceExtension.Equals(Path.GetExtension(sourceItem.FileName), StringComparison.OrdinalIgnoreCase)) {
string code = ParserService.GetParseableFileContent(sourceItem.FileName);
IParser p = ParserFactory.CreateParser(sourceLanguage, new StringReader(code));

12
src/Main/Base/Project/Src/Project/PropertyGroup.cs

@ -16,7 +16,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -16,7 +16,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// <summary>
/// Description of PropertyGroup.
/// </summary>
public class PropertyGroup
public class PropertyGroup : IEnumerable<KeyValuePair<string, string>>
{
// TODO: Isn't MSBuild case-insensitive ???
Dictionary<string, bool> isGuardedProperty = new Dictionary<string, bool>();
@ -40,6 +40,16 @@ namespace ICSharpCode.SharpDevelop.Project @@ -40,6 +40,16 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
public IEnumerator<KeyValuePair<string, string>> GetEnumerator()
{
return properties.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return properties.GetEnumerator();
}
public T Get<T>(string property, T defaultValue)
{
if (!properties.ContainsKey(property)) {

Loading…
Cancel
Save