Browse Source

Update to Boo 0.7.5, added support for partial classes to the Boo AddIn.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@801 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
6f631b3541
  1. 6
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs
  2. 2
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitor.cs
  3. 11
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorExpressions.cs
  4. 2
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/ExpressionTests.cs
  5. 20
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/StatementTests.cs

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

@ -65,9 +65,11 @@ namespace Grunwald.BooBinding.CodeCompletion
} else { } else {
if (!m.IsFinal) r |= ModifierEnum.Virtual; if (!m.IsFinal) r |= ModifierEnum.Virtual;
} }
if (m.IsAbstract) r |= ModifierEnum.Abstract; if (m.IsAbstract) r |= ModifierEnum.Abstract;
if (m.IsOverride) r |= ModifierEnum.Override; if (m.IsOverride) r |= ModifierEnum.Override;
if (m.IsSynthetic) r |= ModifierEnum.Synthetic; if (m.IsSynthetic) r |= ModifierEnum.Synthetic;
if (m.IsPartial) r |= ModifierEnum.Partial;
if (m.LexicalInfo.IsValid && m.DeclaringType != null if (m.LexicalInfo.IsValid && m.DeclaringType != null
&& m.LexicalInfo.Line < m.DeclaringType.LexicalInfo.Line) && m.LexicalInfo.Line < m.DeclaringType.LexicalInfo.Line)
{ // member added through attribute { // member added through attribute

2
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitor.cs

@ -131,7 +131,7 @@ namespace NRefactoryToBooConverter
AddError(node, "shadowing is not supported"); AddError(node, "shadowing is not supported");
} }
if ((m & Modifier.Partial) != 0) { if ((m & Modifier.Partial) != 0) {
AddError(node, "Partial types are not supported"); r |= B.TypeMemberModifiers.Partial;
} }
if ((m & Modifier.Extern) != 0) { if ((m & Modifier.Extern) != 0) {
AddError(node, "Extern modifier is not supported"); AddError(node, "Extern modifier is not supported");

11
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorExpressions.cs

@ -453,7 +453,9 @@ namespace NRefactoryToBooConverter
public object Visit(ArrayCreateExpression arrayCreateExpression, object data) public object Visit(ArrayCreateExpression arrayCreateExpression, object data)
{ {
if (!arrayCreateExpression.ArrayInitializer.IsNull) { 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"; string builtInName = (arrayCreateExpression.Arguments.Count > 1) ? "matrix" : "array";
B.MethodInvocationExpression mie = new B.MethodInvocationExpression(GetLexicalInfo(arrayCreateExpression), B.MethodInvocationExpression mie = new B.MethodInvocationExpression(GetLexicalInfo(arrayCreateExpression),
@ -475,6 +477,11 @@ namespace NRefactoryToBooConverter
} }
public object Visit(ArrayInitializerExpression aie, object data) public object Visit(ArrayInitializerExpression aie, object data)
{
return ConvertArrayLiteralExpression(aie);
}
B.ArrayLiteralExpression ConvertArrayLiteralExpression(ArrayInitializerExpression aie)
{ {
B.ArrayLiteralExpression dims = new B.ArrayLiteralExpression(GetLexicalInfo(aie)); B.ArrayLiteralExpression dims = new B.ArrayLiteralExpression(GetLexicalInfo(aie));
ConvertExpressions(aie.CreateExpressions, dims.Items); ConvertExpressions(aie.CreateExpressions, dims.Items);
@ -502,7 +509,7 @@ namespace NRefactoryToBooConverter
public object Visit(ConditionalExpression conditionalExpression, object data) 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.Condition = ConvertExpression(conditionalExpression.Condition);
te.TrueValue = ConvertExpression(conditionalExpression.TrueExpression); te.TrueValue = ConvertExpression(conditionalExpression.TrueExpression);
te.FalseValue = ConvertExpression(conditionalExpression.FalseExpression); te.FalseValue = ConvertExpression(conditionalExpression.FalseExpression);

2
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/ExpressionTests.cs

@ -220,7 +220,7 @@ namespace NRefactoryToBooConverter.Tests
[Test] [Test]
public void CreateArrayWithOneElement() public void CreateArrayWithOneElement()
{ {
TestExpr("new int[] { 1 }", "(of System.Int32: 1)"); TestExpr("new int[] { 1 }", "(of System.Int32: 1,)");
} }
[Test] [Test]

20
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/StatementTests.cs

@ -84,7 +84,7 @@ namespace NRefactoryToBooConverter.Tests
public void WhileLoop() public void WhileLoop()
{ {
TestStatement("while ((next = Peek()) != -1) { Process(next); }", TestStatement("while ((next = Peek()) != -1) { Process(next); }",
"while ((next = Peek()) != (-1)):\n\tProcess(next)"); "while (next = Peek()) != (-1):\n\tProcess(next)");
} }
[Test] [Test]
@ -105,7 +105,7 @@ namespace NRefactoryToBooConverter.Tests
public void Using() public void Using()
{ {
TestStatement("using (StringReader r = file.Open()) { r.ReadLine(); }", TestStatement("using (StringReader r = file.Open()) { r.ReadLine(); }",
"using (r = file.Open()):\n\tr.ReadLine()"); "using r = file.Open():\n\tr.ReadLine()");
} }
[Test] [Test]
@ -150,10 +150,10 @@ namespace NRefactoryToBooConverter.Tests
{ {
TestStatement("switch (var) { case 1: A1(); break; default: A3(); break; case 2: case 3: A2(); break; }", TestStatement("switch (var) { case 1: A1(); break; default: A3(); break; case 2: case 3: A2(); break; }",
"??1 = var\n" + "??1 = var\n" +
"if (??1 == 1):\n" + "if ??1 == 1:\n" +
"\tA1()\n" + "\tA1()\n" +
"else:\n" + "else:\n" +
"\tif ((??1 == 2) or (??1 == 3)):\n" + "\tif (??1 == 2) or (??1 == 3):\n" +
"\t\tA2()\n" + "\t\tA2()\n" +
"\telse:\n" + "\telse:\n" +
"\t\tA3()"); "\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; }", TestStatement("switch (var) { default: A3(); break; case 1: A1(); break; case 2: case 3: A2(); break; }",
"??1 = var\n" + "??1 = var\n" +
"if (??1 == 1):\n" + "if ??1 == 1:\n" +
"\tA1()\n" + "\tA1()\n" +
"else:\n" + "else:\n" +
"\tif ((??1 == 2) or (??1 == 3)):\n" + "\tif (??1 == 2) or (??1 == 3):\n" +
"\t\tA2()\n" + "\t\tA2()\n" +
"\telse:\n" + "\telse:\n" +
"\t\tA3()"); "\t\tA3()");
@ -178,7 +178,7 @@ namespace NRefactoryToBooConverter.Tests
{ {
TestStatement("switch (var) { case 1: A1(); break; }", TestStatement("switch (var) { case 1: A1(); break; }",
"??1 = var\n" + "??1 = var\n" +
"if (??1 == 1):\n" + "if ??1 == 1:\n" +
"\tA1()"); "\tA1()");
} }
@ -187,7 +187,7 @@ namespace NRefactoryToBooConverter.Tests
{ {
TestStatement("switch (var) { case 1: case 2: A1(); break; }", TestStatement("switch (var) { case 1: case 2: A1(); break; }",
"??1 = var\n" + "??1 = var\n" +
"if ((??1 == 1) or (??1 == 2)):\n" + "if (??1 == 1) or (??1 == 2):\n" +
"\tA1()"); "\tA1()");
} }
@ -215,7 +215,7 @@ namespace NRefactoryToBooConverter.Tests
{ {
TestStatement("switch (var) { case 1: if (a) break; B(); break; }", TestStatement("switch (var) { case 1: if (a) break; B(); break; }",
"??1 = var\n" + "??1 = var\n" +
"if (??1 == 1):\n" + "if ??1 == 1:\n" +
"\tif a:\n" + "\tif a:\n" +
"\t\tgoto ??1_end\n" + "\t\tgoto ??1_end\n" +
"\tB()\n" + "\tB()\n" +
@ -227,7 +227,7 @@ namespace NRefactoryToBooConverter.Tests
{ {
TestStatement("switch (var) { case 1: B(); goto default; default: A(); break; }", TestStatement("switch (var) { case 1: B(); goto default; default: A(); break; }",
"??1 = var\n" + "??1 = var\n" +
"if (??1 == 1):\n" + "if ??1 == 1:\n" +
"\tB()\n" + "\tB()\n" +
"\tgoto ??1_default\n" + "\tgoto ??1_default\n" +
"else:\n" + "else:\n" +

Loading…
Cancel
Save