From 4e7cb5154afc2b18064536379a69704adbb1b1b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Sun, 31 Jul 2005 11:24:18 +0000 Subject: [PATCH] worked on codedom ast codegenerator. codedom code generation is now more in line with the .net codedom formsdesigner output. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@286 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../DesignerGenerator/CodeDOMGenerator.cs | 6 + .../NRefactoryDesignerLoader.cs | 16 +- .../DesignerLoader/XmlDesignerLoader.cs | 1 + .../FormDesigner/FormDesignerViewContent.cs | 5 +- .../Services/DefaultServiceContainer.cs | 2 +- .../NRefactory/Project/NRefactory.csproj | 1 + .../Output/CodeDOM/CodeDOMOutputVisitor.cs | 3 +- .../CodeDOM/CodeDOMVerboseOutputGenerator.cs | 320 ++++++++++++++++++ .../Base/Project/Src/Project/MSBuildEngine.cs | 3 +- .../Project/Src/Project/MSBuildProject.cs | 7 +- 10 files changed, 354 insertions(+), 10 deletions(-) create mode 100644 src/Libraries/NRefactory/Project/Src/Output/CodeDOM/CodeDOMVerboseOutputGenerator.cs diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CodeDOMGenerator.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CodeDOMGenerator.cs index fee282c1b7..583d8650c0 100644 --- a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CodeDOMGenerator.cs +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CodeDOMGenerator.cs @@ -66,11 +66,16 @@ namespace ICSharpCode.FormDesigner CodeGeneratorOptions options = codeDOMGeneratorUtility.CreateCodeGeneratorOptions; options.IndentString = "\t\t\t"; + ICSharpCode.NRefactory.Parser.CodeDOMVerboseOutputGenerator outputGenerator = new ICSharpCode.NRefactory.Parser.CodeDOMVerboseOutputGenerator(); + + Console.WriteLine("<<< + diff --git a/src/Libraries/NRefactory/Project/Src/Output/CodeDOM/CodeDOMOutputVisitor.cs b/src/Libraries/NRefactory/Project/Src/Output/CodeDOM/CodeDOMOutputVisitor.cs index 8706a67f6d..8994a40254 100644 --- a/src/Libraries/NRefactory/Project/Src/Output/CodeDOM/CodeDOMOutputVisitor.cs +++ b/src/Libraries/NRefactory/Project/Src/Output/CodeDOM/CodeDOMOutputVisitor.cs @@ -654,8 +654,7 @@ namespace ICSharpCode.NRefactory.Parser public override object Visit(IdentifierExpression expression, object data) { if (IsField(expression.Identifier)) { - return new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), - expression.Identifier); + return new CodeVariableReferenceExpression(expression.Identifier); } return new CodeVariableReferenceExpression(expression.Identifier); } diff --git a/src/Libraries/NRefactory/Project/Src/Output/CodeDOM/CodeDOMVerboseOutputGenerator.cs b/src/Libraries/NRefactory/Project/Src/Output/CodeDOM/CodeDOMVerboseOutputGenerator.cs new file mode 100644 index 0000000000..51d0bcc0eb --- /dev/null +++ b/src/Libraries/NRefactory/Project/Src/Output/CodeDOM/CodeDOMVerboseOutputGenerator.cs @@ -0,0 +1,320 @@ +using System; +using System.IO; +using System.CodeDom; +using System.CodeDom.Compiler; + +namespace ICSharpCode.NRefactory.Parser +{ + /// + /// Description of CodeDOMVerboseOutputGenerator. + /// + public class CodeDOMVerboseOutputGenerator : System.CodeDom.Compiler.CodeGenerator + { + #region System.CodeDom.Compiler.CodeGenerator abstract class implementation + protected override string NullToken { + get { + return "[NULL]"; + } + } + + protected override void OutputType(CodeTypeReference typeRef) + { + Output.Write("[CodeTypeReference: {0}]", typeRef.ToString()); + } + + protected override void GenerateArrayCreateExpression(CodeArrayCreateExpression e) + { + Output.Write("[CodeArrayCreateExpression: {0}]", e.ToString()); + } + + protected override void GenerateBaseReferenceExpression(CodeBaseReferenceExpression e) + { + Output.Write("[CodeBaseReferenceExpression: {0}]", e.ToString()); + } + + protected override void GenerateCastExpression(CodeCastExpression e) + { + Output.Write("[CodeCastExpression: {0}]", e.ToString()); + } + + protected override void GenerateDelegateCreateExpression(CodeDelegateCreateExpression e) + { + Output.Write("[CodeDelegateCreateExpression: {0}]", e.ToString()); + } + + protected override void GenerateFieldReferenceExpression(CodeFieldReferenceExpression e) + { + Output.Write("[CodeFieldReferenceExpression: Name={0}, Target=", e.FieldName); + this.GenerateExpression(e.TargetObject); + Output.Write("]"); + } + + protected override void GenerateArgumentReferenceExpression(CodeArgumentReferenceExpression e) + { + Output.Write("[CodeArgumentReferenceExpression: {0}]", e.ToString()); + } + + protected override void GenerateVariableReferenceExpression(CodeVariableReferenceExpression e) + { + Output.Write("[CodeVariableReferenceExpression: Name={0}]", e.VariableName); + } + + protected override void GenerateIndexerExpression(CodeIndexerExpression e) + { + Output.Write("[CodeIndexerExpression: {0}]", e.ToString()); + } + + protected override void GenerateArrayIndexerExpression(CodeArrayIndexerExpression e) + { + Output.Write("[CodeArrayIndexerExpression: {0}]", e.ToString()); + } + + protected override void GenerateSnippetExpression(CodeSnippetExpression e) + { + Output.Write("[CodeSnippetExpression: {0}]", e.ToString()); + } + + protected override void GenerateMethodInvokeExpression(CodeMethodInvokeExpression e) + { + Output.Write("[CodeMethodInvokeExpression: {0}]", e.ToString()); + } + + protected override void GenerateMethodReferenceExpression(CodeMethodReferenceExpression e) + { + Output.Write("[CodeMethodReferenceExpression: {0}]", e.ToString()); + } + + protected override void GenerateEventReferenceExpression(CodeEventReferenceExpression e) + { + Output.Write("[CodeEventReferenceExpression: {0}]", e.ToString()); + } + + protected override void GenerateDelegateInvokeExpression(CodeDelegateInvokeExpression e) + { + Output.Write("[CodeDelegateInvokeExpression: {0}]", e.ToString()); + } + + protected override void GenerateObjectCreateExpression(CodeObjectCreateExpression e) + { + Output.Write("[CodeObjectCreateExpression: Type={0}, Parameters=", e.CreateType.BaseType); + foreach (CodeExpression expr in e.Parameters) { + this.GenerateExpression(expr); + } + Output.Write("]"); + } + + protected override void GeneratePropertyReferenceExpression(CodePropertyReferenceExpression e) + { + Output.Write("[CodePropertyReferenceExpression: Name={0}, Target=", e.PropertyName); + this.GenerateExpression(e.TargetObject); + Output.Write("]"); + } + + protected override void GeneratePropertySetValueReferenceExpression(CodePropertySetValueReferenceExpression e) + { + Output.Write("[CodePropertySetValueReferenceExpression: {0}]", e.ToString()); + } + + protected override void GenerateThisReferenceExpression(CodeThisReferenceExpression e) + { + Output.Write("[CodeThisReferenceExpression]"); + } + + protected override void GenerateExpressionStatement(CodeExpressionStatement e) + { + Output.WriteLine("[CodeExpressionStatement: {0}]", e.ToString()); + + } + + protected override void GenerateIterationStatement(CodeIterationStatement e) + { + Output.WriteLine("[CodeIterationStatement: {0}]", e.ToString()); + } + + protected override void GenerateThrowExceptionStatement(CodeThrowExceptionStatement e) + { + Output.WriteLine("[CodeThrowExceptionStatement: {0}]", e.ToString()); + } + + protected override void GenerateComment(CodeComment e) + { + Output.WriteLine("[CodeComment: {0}]", e.ToString()); + } + + protected override void GenerateMethodReturnStatement(CodeMethodReturnStatement e) + { + Output.WriteLine("[CodeMethodReturnStatement: {0}]", e.ToString()); + } + + protected override void GenerateConditionStatement(CodeConditionStatement e) + { + Output.WriteLine("[GenerateConditionStatement: {0}]", e.ToString()); + } + + protected override void GenerateTryCatchFinallyStatement(CodeTryCatchFinallyStatement e) + { + Output.WriteLine("[CodeTryCatchFinallyStatement: {0}]", e.ToString()); + } + + protected override void GenerateAssignStatement(CodeAssignStatement e) + { + Output.Write("[CodeAssignStatement: Left="); + base.GenerateExpression(e.Left); + Output.Write(", Right="); + base.GenerateExpression(e.Right); + Output.WriteLine("]"); + } + + protected override void GenerateAttachEventStatement(CodeAttachEventStatement e) + { + Output.WriteLine("[CodeAttachEventStatement: {0}]", e.ToString()); + } + + protected override void GenerateRemoveEventStatement(CodeRemoveEventStatement e) + { + Output.WriteLine("[CodeRemoveEventStatement: {0}]", e.ToString()); + } + + protected override void GenerateGotoStatement(CodeGotoStatement e) + { + Output.WriteLine("[CodeGotoStatement: {0}]", e.ToString()); + } + + protected override void GenerateLabeledStatement(CodeLabeledStatement e) + { + Output.WriteLine("[CodeLabeledStatement: {0}]", e.ToString()); + } + + protected override void GenerateVariableDeclarationStatement(CodeVariableDeclarationStatement e) + { + Output.WriteLine("[CodeVariableDeclarationStatement: {0}]", e.ToString()); + } + + protected override void GenerateLinePragmaStart(CodeLinePragma e) + { + Output.WriteLine("[CodeLinePragma: {0}]", e.ToString()); + } + + protected override void GenerateLinePragmaEnd(CodeLinePragma e) + { + Output.WriteLine("[CodeLinePragma: {0}]", e.ToString()); + } + + protected override void GenerateEvent(CodeMemberEvent e, CodeTypeDeclaration c) + { + Output.WriteLine("[CodeMemberEvent: {0}]", e.ToString()); + } + + protected override void GenerateField(CodeMemberField e) + { + Output.Write("[CodeMemberField: Name={0}, Type=", e.Name); + Output.Write(e.Type.BaseType); + Output.WriteLine("]"); + } + + protected override void GenerateSnippetMember(CodeSnippetTypeMember e) + { + Output.WriteLine("[CodeSnippetTypeMember: {0}]", e.ToString()); + } + + protected override void GenerateEntryPointMethod(CodeEntryPointMethod e, CodeTypeDeclaration c) + { + Output.WriteLine("[CodeEntryPointMethod: {0}]", e.ToString()); + } + + public void PublicGenerateCodeFromStatement(CodeStatement e, TextWriter w, CodeGeneratorOptions o) + { + ((ICodeGenerator)this).GenerateCodeFromStatement(e, w, o); + } + + protected override void GenerateMethod(CodeMemberMethod e, CodeTypeDeclaration c) + { + Output.WriteLine("[CodeMemberMethod: Name={0}, Parameterns={1}]", e.Name, e.Parameters.Count); + ++Indent; + GenerateStatements(e.Statements); + --Indent; + } + + protected override void GenerateProperty(CodeMemberProperty e, CodeTypeDeclaration c) + { + Output.WriteLine("[CodeMemberProperty : {0}]", e.ToString()); + } + + protected override void GenerateConstructor(CodeConstructor e, CodeTypeDeclaration c) + { + Output.WriteLine("[CodeConstructor : {0}]", e.ToString()); + } + + protected override void GenerateTypeConstructor(CodeTypeConstructor e) + { + Output.WriteLine("[CodeTypeConstructor : {0}]", e.ToString()); + } + + protected override void GenerateTypeStart(CodeTypeDeclaration e) + { + Output.WriteLine("[CodeTypeDeclaration : {0}]", e.ToString()); + } + + protected override void GenerateTypeEnd(CodeTypeDeclaration e) + { + Output.WriteLine("[CodeTypeDeclaration: {0}]", e.ToString()); + } + + protected override void GenerateNamespaceStart(CodeNamespace e) + { + Output.WriteLine("[CodeNamespaceStart: {0}]", e.ToString()); + } + + protected override void GenerateNamespaceEnd(CodeNamespace e) + { + Output.WriteLine("[CodeNamespaceEnd: {0}]", e.ToString()); + } + + protected override void GenerateNamespaceImport(CodeNamespaceImport e) + { + Output.WriteLine("[CodeNamespaceImport: {0}]", e.ToString()); + } + + protected override void GenerateAttributeDeclarationsStart(CodeAttributeDeclarationCollection attributes) + { + Output.WriteLine("[CodeAttributeDeclarationCollection: {0}]", attributes.ToString()); + } + + protected override void GenerateAttributeDeclarationsEnd(CodeAttributeDeclarationCollection attributes) + { + Output.WriteLine("[CodeAttributeDeclarationCollection: {0}]", attributes.ToString()); + } + + protected override bool Supports(GeneratorSupport support) + { + return true; + } + + protected override bool IsValidIdentifier(string value) + { + return true; + } + + protected override string CreateEscapedIdentifier(string value) + { + return value; + } + + protected override string CreateValidIdentifier(string value) + { + return value; + } + + protected override string GetTypeOutput(CodeTypeReference value) + { + return value.ToString(); + } + + protected override string QuoteSnippetString(string value) + { + return value; + } + + #endregion + } +} diff --git a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs index e1565d1961..b9f9d44930 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs @@ -82,8 +82,9 @@ namespace ICSharpCode.SharpDevelop.Project public void FlushText() { - if (engine.MessageView != null) + if (engine.MessageView != null) { engine.MessageView.AppendText(textToWrite.ToString()); + } textToWrite.Length = 0; } diff --git a/src/Main/Base/Project/Src/Project/MSBuildProject.cs b/src/Main/Base/Project/Src/Project/MSBuildProject.cs index 13668dd0db..191d39ca3d 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildProject.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildProject.cs @@ -295,14 +295,15 @@ namespace ICSharpCode.SharpDevelop.Project public static CompilerResults RunMSBuild(string fileName, string target) { + Console.WriteLine("Run : " + fileName); WorkbenchSingleton.Workbench.GetPad(typeof(CompilerMessageView)).BringPadToFront(); // BeforeBuild(); MSBuildEngine engine = new MSBuildEngine(); engine.MessageView = TaskService.BuildMessageViewCategory; - if (target == null) + if (target == null) { return engine.Run(fileName); - else - return engine.Run(fileName, new string[] { target }); + } + return engine.Run(fileName, new string[] { target }); // AfterBuild(); }