diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs index d87325cf82..4ca50bf5d8 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs @@ -65,9 +65,11 @@ namespace Grunwald.BooBinding.CodeCompletion } else { if (!m.IsFinal) r |= ModifierEnum.Virtual; } - if (m.IsAbstract) r |= ModifierEnum.Abstract; - if (m.IsOverride) r |= ModifierEnum.Override; + if (m.IsAbstract) r |= ModifierEnum.Abstract; + if (m.IsOverride) r |= ModifierEnum.Override; if (m.IsSynthetic) r |= ModifierEnum.Synthetic; + if (m.IsPartial) r |= ModifierEnum.Partial; + if (m.LexicalInfo.IsValid && m.DeclaringType != null && m.LexicalInfo.Line < m.DeclaringType.LexicalInfo.Line) { // member added through attribute diff --git a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitor.cs b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitor.cs index 8542f90201..99bfd6f9e9 100644 --- a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitor.cs +++ b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitor.cs @@ -131,7 +131,7 @@ namespace NRefactoryToBooConverter AddError(node, "shadowing is not supported"); } if ((m & Modifier.Partial) != 0) { - AddError(node, "Partial types are not supported"); + r |= B.TypeMemberModifiers.Partial; } if ((m & Modifier.Extern) != 0) { AddError(node, "Extern modifier is not supported"); diff --git a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorExpressions.cs b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorExpressions.cs index a672b3d821..b8bcfcaf60 100644 --- a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorExpressions.cs +++ b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorExpressions.cs @@ -453,7 +453,9 @@ namespace NRefactoryToBooConverter public object Visit(ArrayCreateExpression arrayCreateExpression, object data) { if (!arrayCreateExpression.ArrayInitializer.IsNull) { - return arrayCreateExpression.ArrayInitializer.AcceptVisitor(this, data); + B.ArrayLiteralExpression ale = ConvertArrayLiteralExpression(arrayCreateExpression.ArrayInitializer); + ale.Type = (B.ArrayTypeReference)ConvertTypeReference(arrayCreateExpression.CreateType); + return ale; } string builtInName = (arrayCreateExpression.Arguments.Count > 1) ? "matrix" : "array"; B.MethodInvocationExpression mie = new B.MethodInvocationExpression(GetLexicalInfo(arrayCreateExpression), @@ -475,6 +477,11 @@ namespace NRefactoryToBooConverter } public object Visit(ArrayInitializerExpression aie, object data) + { + return ConvertArrayLiteralExpression(aie); + } + + B.ArrayLiteralExpression ConvertArrayLiteralExpression(ArrayInitializerExpression aie) { B.ArrayLiteralExpression dims = new B.ArrayLiteralExpression(GetLexicalInfo(aie)); ConvertExpressions(aie.CreateExpressions, dims.Items); @@ -502,7 +509,7 @@ namespace NRefactoryToBooConverter public object Visit(ConditionalExpression conditionalExpression, object data) { - B.TernaryExpression te = new B.TernaryExpression(GetLexicalInfo(conditionalExpression)); + B.ConditionalExpression te = new B.ConditionalExpression(GetLexicalInfo(conditionalExpression)); te.Condition = ConvertExpression(conditionalExpression.Condition); te.TrueValue = ConvertExpression(conditionalExpression.TrueExpression); te.FalseValue = ConvertExpression(conditionalExpression.FalseExpression); diff --git a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/ExpressionTests.cs b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/ExpressionTests.cs index 84f1d2ae76..8513313e63 100644 --- a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/ExpressionTests.cs +++ b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/ExpressionTests.cs @@ -220,7 +220,7 @@ namespace NRefactoryToBooConverter.Tests [Test] public void CreateArrayWithOneElement() { - TestExpr("new int[] { 1 }", "(of System.Int32: 1)"); + TestExpr("new int[] { 1 }", "(of System.Int32: 1,)"); } [Test] diff --git a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/StatementTests.cs b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/StatementTests.cs index 9bde08c829..24c680fb03 100644 --- a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/StatementTests.cs +++ b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/StatementTests.cs @@ -84,7 +84,7 @@ namespace NRefactoryToBooConverter.Tests public void WhileLoop() { TestStatement("while ((next = Peek()) != -1) { Process(next); }", - "while ((next = Peek()) != (-1)):\n\tProcess(next)"); + "while (next = Peek()) != (-1):\n\tProcess(next)"); } [Test] @@ -105,7 +105,7 @@ namespace NRefactoryToBooConverter.Tests public void Using() { TestStatement("using (StringReader r = file.Open()) { r.ReadLine(); }", - "using (r = file.Open()):\n\tr.ReadLine()"); + "using r = file.Open():\n\tr.ReadLine()"); } [Test] @@ -150,10 +150,10 @@ namespace NRefactoryToBooConverter.Tests { TestStatement("switch (var) { case 1: A1(); break; default: A3(); break; case 2: case 3: A2(); break; }", "??1 = var\n" + - "if (??1 == 1):\n" + + "if ??1 == 1:\n" + "\tA1()\n" + "else:\n" + - "\tif ((??1 == 2) or (??1 == 3)):\n" + + "\tif (??1 == 2) or (??1 == 3):\n" + "\t\tA2()\n" + "\telse:\n" + "\t\tA3()"); @@ -164,10 +164,10 @@ namespace NRefactoryToBooConverter.Tests { TestStatement("switch (var) { default: A3(); break; case 1: A1(); break; case 2: case 3: A2(); break; }", "??1 = var\n" + - "if (??1 == 1):\n" + + "if ??1 == 1:\n" + "\tA1()\n" + "else:\n" + - "\tif ((??1 == 2) or (??1 == 3)):\n" + + "\tif (??1 == 2) or (??1 == 3):\n" + "\t\tA2()\n" + "\telse:\n" + "\t\tA3()"); @@ -178,7 +178,7 @@ namespace NRefactoryToBooConverter.Tests { TestStatement("switch (var) { case 1: A1(); break; }", "??1 = var\n" + - "if (??1 == 1):\n" + + "if ??1 == 1:\n" + "\tA1()"); } @@ -187,7 +187,7 @@ namespace NRefactoryToBooConverter.Tests { TestStatement("switch (var) { case 1: case 2: A1(); break; }", "??1 = var\n" + - "if ((??1 == 1) or (??1 == 2)):\n" + + "if (??1 == 1) or (??1 == 2):\n" + "\tA1()"); } @@ -215,7 +215,7 @@ namespace NRefactoryToBooConverter.Tests { TestStatement("switch (var) { case 1: if (a) break; B(); break; }", "??1 = var\n" + - "if (??1 == 1):\n" + + "if ??1 == 1:\n" + "\tif a:\n" + "\t\tgoto ??1_end\n" + "\tB()\n" + @@ -227,7 +227,7 @@ namespace NRefactoryToBooConverter.Tests { TestStatement("switch (var) { case 1: B(); goto default; default: A(); break; }", "??1 = var\n" + - "if (??1 == 1):\n" + + "if ??1 == 1:\n" + "\tB()\n" + "\tgoto ??1_default\n" + "else:\n" +