diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin
index 41b65901a5..12730e83ab 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin
@@ -75,4 +75,24 @@
projectfileextension = ".booproj"
class = "Grunwald.BooBinding.BooLanguageBinding" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
index a522236160..13839162f5 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
@@ -66,6 +66,7 @@
+
@@ -84,14 +85,27 @@
{2748AD25-9C63-4E12-877B-4DCE96FBED54}
ICSharpCode.SharpDevelop
+ False
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
ICSharpCode.Core
+ False
+
+
+ {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}
+ ICSharpCode.Core
+ False
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}
ICSharpCode.TextEditor
+ False
+
+
+ {DBCF20A1-BA13-4582-BFA9-74DE4D987B73}
+ NRefactoryToBooConverter
+ True
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertBuffer.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertBuffer.cs
new file mode 100644
index 0000000000..5fb43a9e9f
--- /dev/null
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertBuffer.cs
@@ -0,0 +1,73 @@
+//
+// 2002-2005 AlphaSierraPapa
+// GNU General Public License
+//
+// $Revision$
+//
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+
+using Boo.Lang.Compiler;
+using Boo.Lang.Compiler.Ast;
+using ICSharpCode.SharpDevelop;
+using ICSharpCode.SharpDevelop.Gui;
+using ICSharpCode.SharpDevelop.Project;
+using ICSharpCode.Core;
+using System.Text;
+
+using ICSharpCode.NRefactory.PrettyPrinter;
+using ICSharpCode.NRefactory.Parser;
+using NRefactoryToBooConverter;
+
+namespace Grunwald.BooBinding
+{
+ public class ConvertBuffer : AbstractMenuCommand
+ {
+ ConverterSettings ApplySettings(string fileName, CompilerErrorCollection errors, CompilerWarningCollection warnings)
+ {
+ ConverterSettings settings = new ConverterSettings(fileName, errors, warnings);
+ settings.SimplifyTypeNames = true;
+ return settings;
+ }
+
+ public override void Run()
+ {
+ IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow;
+
+ if (window != null && window.ViewContent is IEditable) {
+ StringBuilder errorBuilder = new StringBuilder();
+
+ CompilerErrorCollection errors = new CompilerErrorCollection();
+ CompilerWarningCollection warnings = new CompilerWarningCollection();
+ Module module;
+ IList specials;
+ CompileUnit compileUnit = new CompileUnit();
+ using (StringReader r = new StringReader(((IEditable)window.ViewContent).Text)) {
+ module = Parser.ParseModule(compileUnit, r, ApplySettings(window.ViewContent.FileName, errors, warnings), out specials);
+ }
+ if (errors.Count > 0) {
+ foreach (CompilerError error in errors) {
+ errorBuilder.AppendLine(error.ToString());
+ }
+ } else {
+ if (warnings.Count > 0) {
+ foreach (CompilerWarning warning in warnings) {
+ errorBuilder.AppendLine(warning.ToString());
+ }
+ }
+ using (StringWriter w = new StringWriter()) {
+ BooPrinterVisitorWithComments printer = new BooPrinterVisitorWithComments(specials, w);
+ printer.OnModule(module);
+ printer.Finish();
+ FileService.NewFile("Generated.boo", "Boo", w.ToString());
+ }
+ }
+ if (errorBuilder.Length > 0) {
+ MessageService.ShowMessage(errorBuilder.ToString());
+ }
+ }
+ }
+ }
+}
diff --git a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/NRefactoryToBooConverter.csproj b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/NRefactoryToBooConverter.csproj
index 70ed134e98..273ceddbd1 100644
--- a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/NRefactoryToBooConverter.csproj
+++ b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/NRefactoryToBooConverter.csproj
@@ -24,14 +24,12 @@
..\..\RequiredLibraries\Boo.Lang.Compiler.dll
False
+ True
..\..\RequiredLibraries\Boo.Lang.dll
False
-
-
- ..\..\..\..\..\..\bin\ICSharpCode.NRefactory.dll
- False
+ True
@@ -51,5 +49,12 @@
+
+
+ {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}
+ ICSharpCode.Core
+ False
+
+
\ No newline at end of file
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/Expression.cs b/src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/Expression.cs
index b2fa1aafc7..7ff39bd3d6 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/Expression.cs
+++ b/src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/Expression.cs
@@ -42,8 +42,13 @@ namespace ICSharpCode.NRefactory.Parser.AST
return new PrimitiveExpression(newVal, newVal.ToString(System.Globalization.NumberFormatInfo.InvariantInfo));
}
BinaryOperatorExpression boe = expr as BinaryOperatorExpression;
- if (boe != null) {
+ if (boe != null && boe.Op == BinaryOperatorType.Add) {
boe.Right = AddInteger(boe.Right, value);
+ if (boe.Right is PrimitiveExpression && ((PrimitiveExpression)boe.Right).Value is int) {
+ if ((int)((PrimitiveExpression)boe.Right).Value == 0) {
+ return boe.Left;
+ }
+ }
return boe;
}
return new BinaryOperatorExpression(expr, BinaryOperatorType.Add, new PrimitiveExpression(value, value.ToString(System.Globalization.NumberFormatInfo.InvariantInfo)));