Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/System/Microsoft.CSharp/CSharpCodeGenerator.cs')
-rw-r--r--mcs/class/System/Microsoft.CSharp/CSharpCodeGenerator.cs760
1 files changed, 0 insertions, 760 deletions
diff --git a/mcs/class/System/Microsoft.CSharp/CSharpCodeGenerator.cs b/mcs/class/System/Microsoft.CSharp/CSharpCodeGenerator.cs
deleted file mode 100644
index 0a7802bc91c..00000000000
--- a/mcs/class/System/Microsoft.CSharp/CSharpCodeGenerator.cs
+++ /dev/null
@@ -1,760 +0,0 @@
-//
-// Mono.CSharp CSharpCodeProvider Class implementation
-//
-// Author:
-// Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-namespace Mono.CSharp
-{
- using System;
- using System.CodeDom;
- using System.CodeDom.Compiler;
- using System.IO;
- using System.Reflection;
- using System.Collections;
-
- internal class CSharpCodeGenerator
- : CodeGenerator
- {
- //
- // Constructors
- //
- public CSharpCodeGenerator()
- {
- }
-
- //
- // Properties
- //
- protected override string NullToken {
- get {
- return "null";
- }
- }
-
- //
- // Methods
- //
-
- protected override void GenerateArrayCreateExpression( CodeArrayCreateExpression expression )
- {
- //
- // This tries to replicate MS behavior as good as
- // possible.
- //
- // The Code-Array stuff in ms.net seems to be broken
- // anyways, or I'm too stupid to understand it.
- //
- // I'm sick of it. If you try to develop array
- // creations, test them on windows. If it works there
- // but not in mono, drop me a note. I'd be especially
- // interested in jagged-multidimensional combinations
- // with proper initialization :}
- //
-
- TextWriter output = Output;
-
- output.Write( "new " );
-
- CodeExpressionCollection initializers = expression.Initializers;
- CodeTypeReference createType = expression.CreateType;
-
- if ( initializers.Count > 0 ) {
-
- OutputType( createType );
-
- output.WriteLine( " {" );
- ++Indent;
- OutputExpressionList( initializers, true );
- --Indent;
- output.Write( "}" );
-
- } else {
- CodeTypeReference arrayType = createType.ArrayElementType;
- while ( arrayType != null ) {
- createType = arrayType;
- arrayType = arrayType.ArrayElementType;
- }
-
- OutputType( createType );
-
- output.Write( '[' );
-
- CodeExpression size = expression.SizeExpression;
- if ( size != null )
- GenerateExpression( size );
- else
- output.Write( expression.Size );
-
- output.Write( ']' );
- }
- }
-
- protected override void GenerateBaseReferenceExpression( CodeBaseReferenceExpression expression )
- {
- Output.Write( "base" );
- }
-
- protected override void GenerateCastExpression( CodeCastExpression expression )
- {
- TextWriter output = Output;
- output.Write( "((" );
- OutputType( expression.TargetType );
- output.Write( ")(" );
- GenerateExpression( expression.Expression );
- output.Write( "))" );
- }
-
-
- protected override void GenerateCompileUnitStart( CodeCompileUnit compileUnit )
- {
- GenerateComment( new CodeComment( "------------------------------------------------------------------------------" ) );
- GenerateComment( new CodeComment( " <autogenerated>" ) );
- GenerateComment( new CodeComment( " This code was generated by a tool." ) );
- GenerateComment( new CodeComment( " Mono Runtime Version: " + System.Environment.Version ) );
- GenerateComment( new CodeComment( "" ) );
- GenerateComment( new CodeComment( " Changes to this file may cause incorrect behavior and will be lost if " ) );
- GenerateComment( new CodeComment( " the code is regenerated." ) );
- GenerateComment( new CodeComment( " </autogenerated>" ) );
- GenerateComment( new CodeComment( "------------------------------------------------------------------------------" ) );
- Output.WriteLine();
- }
-
-
- protected override void GenerateDelegateCreateExpression( CodeDelegateCreateExpression expression )
- {
- TextWriter output = Output;
-
- output.Write( "new " );
-
- OutputType( expression.DelegateType );
-
- output.Write( '(' );
-
- CodeExpression targetObject = expression.TargetObject;
- if ( targetObject != null ) {
- GenerateExpression( targetObject );
- Output.Write( '.' );
- }
- output.Write( expression.MethodName );
-
- output.Write( ')' );
- }
-
- protected override void GenerateFieldReferenceExpression( CodeFieldReferenceExpression expression )
- {
- CodeExpression targetObject = expression.TargetObject;
- if ( targetObject != null ) {
- GenerateExpression( targetObject );
- Output.Write( '.' );
- }
- Output.Write( expression.FieldName );
- }
-
- protected override void GenerateArgumentReferenceExpression( CodeArgumentReferenceExpression expression )
- {
- Output.Write( expression.ParameterName );
- }
-
- protected override void GenerateVariableReferenceExpression( CodeVariableReferenceExpression expression )
- {
- Output.Write( expression.VariableName );
- }
-
- protected override void GenerateIndexerExpression( CodeIndexerExpression expression )
- {
- TextWriter output = Output;
-
- GenerateExpression( expression.TargetObject );
- output.Write( '[' );
- OutputExpressionList( expression.Indices );
- output.Write( ']' );
- }
-
- protected override void GenerateArrayIndexerExpression( CodeArrayIndexerExpression expression )
- {
- TextWriter output = Output;
-
- GenerateExpression( expression.TargetObject );
- output.Write( '[' );
- OutputExpressionList( expression.Indices );
- output.Write( ']' );
- }
-
- protected override void GenerateSnippetExpression( CodeSnippetExpression expression )
- {
- Output.Write( expression.Value );
- }
-
- protected override void GenerateMethodInvokeExpression( CodeMethodInvokeExpression expression )
- {
- TextWriter output = Output;
-
- GenerateMethodReferenceExpression( expression.Method );
-
- output.Write( '(' );
- OutputExpressionList( expression.Parameters );
- output.Write( ')' );
- }
-
- protected override void GenerateMethodReferenceExpression( CodeMethodReferenceExpression expression )
- {
- GenerateExpression( expression.TargetObject );
- Output.Write( '.' );
- Output.Write( expression.MethodName );
- }
-
- protected override void GenerateEventReferenceExpression( CodeEventReferenceExpression expression )
- {
- GenerateExpression( expression.TargetObject );
- Output.Write( '.' );
- Output.Write( expression.EventName );
- }
-
- protected override void GenerateDelegateInvokeExpression( CodeDelegateInvokeExpression expression )
- {
- GenerateExpression( expression.TargetObject );
- Output.Write( '(' );
- OutputExpressionList( expression.Parameters );
- Output.Write( ')' );
- }
-
- protected override void GenerateObjectCreateExpression( CodeObjectCreateExpression expression )
- {
- Output.Write( "new " );
- OutputType( expression.CreateType );
- Output.Write( '(' );
- OutputExpressionList( expression.Parameters );
- Output.Write( ')' );
- }
-
- protected override void GeneratePropertyReferenceExpression( CodePropertyReferenceExpression expression )
- {
- GenerateMemberReferenceExpression( expression.TargetObject,
- expression.PropertyName );
- }
-
- // TODO
- protected override void GeneratePropertySetValueReferenceExpression( CodePropertySetValueReferenceExpression expression )
- {
-
- }
-
- protected override void GenerateThisReferenceExpression( CodeThisReferenceExpression expression )
- {
- Output.Write( "this" );
- }
-
- protected override void GenerateExpressionStatement( CodeExpressionStatement statement )
- {
- GenerateExpression( statement.Expression );
- Output.WriteLine( ';' );
- }
-
- protected override void GenerateIterationStatement( CodeIterationStatement statement )
- {
- TextWriter output = Output;
-
- output.Write( "for (" );
- GenerateStatement( statement.InitStatement );
- output.Write( "; " );
- GenerateExpression( statement.TestExpression );
- output.Write( "; " );
- GenerateStatement( statement.IncrementStatement );
- output.Write( ") " );
- GenerateStatements( statement.Statements );
- }
-
- protected override void GenerateThrowExceptionStatement( CodeThrowExceptionStatement statement )
- {
- Output.Write( "throw " );
- GenerateExpression( statement.ToThrow );
- }
-
- protected override void GenerateComment( CodeComment comment )
- {
- TextWriter output = Output;
-
- if ( comment.DocComment )
- output.Write( "/// " );
- else
- output.Write( "// " );
-
- output.WriteLine( comment.Text );
- }
-
- protected override void GenerateMethodReturnStatement( CodeMethodReturnStatement statement )
- {
- TextWriter output = Output;
-
- output.Write( "return " );
-
- GenerateExpression( statement.Expression );
-
- output.Write( ";" );
- }
-
- protected override void GenerateConditionStatement( CodeConditionStatement statement )
- {
- TextWriter output = Output;
- output.Write( "if (" );
-
- GenerateExpression( statement.Condition );
-
- output.WriteLine( ") {" );
- ++Indent;
- GenerateStatements( statement.TrueStatements );
- --Indent;
- output.Write( '}' );
-
- CodeStatementCollection falses = statement.FalseStatements;
- if ( falses.Count > 0 ) {
- if ( Options.ElseOnClosing )
- output.Write( ' ' );
- else
- output.WriteLine();
- output.WriteLine( "else {" );
- ++Indent;
- GenerateStatements( falses );
- --Indent;
- output.WriteLine( '}' );
- }
- }
-
- protected override void GenerateTryCatchFinallyStatement( CodeTryCatchFinallyStatement statement )
- {
- TextWriter output = Output;
- CodeGeneratorOptions options = Options;
-
- output.WriteLine( "try {" );
- ++Indent;
- GenerateStatements( statement.TryStatements );
- --Indent;
- output.Write( '}' );
-
- foreach ( CodeCatchClause clause in statement.CatchClauses ) {
- if ( options.ElseOnClosing )
- output.Write( ' ' );
- else
- output.WriteLine();
- output.Write( "catch (" );
- OutputTypeNamePair( clause.CatchExceptionType, clause.LocalName );
- output.WriteLine( ") {" );
- ++Indent;
- GenerateStatements( clause.Statements );
- --Indent;
- output.Write( '}' );
- }
-
- CodeStatementCollection finallies = statement.FinallyStatements;
- if ( finallies.Count > 0 ) {
- if ( options.ElseOnClosing )
- output.Write( ' ' );
- else
- output.WriteLine();
- output.WriteLine( "finally {" );
- ++Indent;
- GenerateStatements( finallies );
- --Indent;
- output.WriteLine( '}' );
- }
-
- output.WriteLine();
- }
-
- protected override void GenerateAssignStatement( CodeAssignStatement statement )
- {
- TextWriter output = Output;
- GenerateExpression( statement.Left );
- output.Write( " = " );
- GenerateExpression( statement.Right );
- output.WriteLine( ';' );
- }
-
- protected override void GenerateAttachEventStatement( CodeAttachEventStatement statement )
- {
- TextWriter output = Output;
-
- GenerateEventReferenceExpression( statement.Event );
- output.Write( " += " );
- GenerateExpression( statement.Listener );
- output.WriteLine( ';' );
- }
-
- protected override void GenerateRemoveEventStatement( CodeRemoveEventStatement statement )
- {
- TextWriter output = Output;
- GenerateEventReferenceExpression( statement.Event );
- Output.Write( " -= " );
- GenerateExpression( statement.Listener );
- output.WriteLine( ';' );
- }
-
- protected override void GenerateGotoStatement( CodeGotoStatement statement )
- {
- TextWriter output = Output;
-
- output.Write( "goto " );
- output.Write( statement.Label );
- output.Write( ";" );
- }
-
- protected override void GenerateLabeledStatement( CodeLabeledStatement statement )
- {
- TextWriter output = Output;
-
- output.Write( statement.Label );
- GenerateStatement( statement.Statement );
- }
-
- protected override void GenerateVariableDeclarationStatement( CodeVariableDeclarationStatement statement )
- {
- TextWriter output = Output;
-
- OutputTypeNamePair( statement.Type, statement.Name );
-
- CodeExpression initExpression = statement.InitExpression;
- if ( initExpression != null ) {
- output.Write( " = " );
- GenerateExpression( initExpression );
- }
-
- output.WriteLine( ';' );
- }
-
- protected override void GenerateLinePragmaStart( CodeLinePragma linePragma )
- {
- Output.Write( "<GenerateLinePragmaStart>" );
- }
-
- protected override void GenerateLinePragmaEnd( CodeLinePragma linePragma )
- {
- Output.Write( "<GenerateLinePragmaEnd>" );
- }
-
- protected override void GenerateEvent( CodeMemberEvent eventRef, CodeTypeDeclaration declaration )
- {
- Output.Write( "<GenerateEvent>" );
- }
-
- protected override void GenerateField( CodeMemberField field )
- {
- TextWriter output = Output;
-
- OutputAttributeDeclarations( field.CustomAttributes );
-
- MemberAttributes attributes = field.Attributes;
- OutputMemberAccessModifier( attributes );
- OutputFieldScopeModifier( attributes );
-
- OutputTypeNamePair( field.Type, field.Name );
-
- CodeExpression initExpression = field.InitExpression;
- if ( initExpression != null ) {
- output.Write( " = " );
- GenerateExpression( initExpression );
- }
-
- output.WriteLine( ';' );
- }
-
- protected override void GenerateSnippetMember( CodeSnippetTypeMember member )
- {
- Output.Write( "<GenerateSnippetMember>" );
- }
-
- protected override void GenerateEntryPointMethod( CodeEntryPointMethod method,
- CodeTypeDeclaration declaration )
- {
- method.Name = "Main";
- GenerateMethod( method, declaration );
- }
-
- protected override void GenerateMethod( CodeMemberMethod method,
- CodeTypeDeclaration declaration )
- {
- TextWriter output = Output;
-
- OutputAttributeDeclarations( method.CustomAttributes );
-
- MemberAttributes attributes = method.Attributes;
-
- OutputMemberAccessModifier( attributes );
- OutputMemberScopeModifier( attributes );
-
- OutputType( method.ReturnType );
-
- output.Write( ' ' );
-
- CodeTypeReference privateType = method.PrivateImplementationType;
- if ( privateType != null ) {
- OutputType( privateType );
- output.Write( '.' );
- }
- output.Write( method.Name );
-
- output.Write( '(' );
- OutputParameters( method.Parameters );
- output.Write( ')' );
-
- if ( (attributes & MemberAttributes.ScopeMask) == MemberAttributes.Abstract )
- output.WriteLine( ';' );
- else {
- output.WriteLine( " {" );
- ++Indent;
- GenerateStatements( method.Statements );
- --Indent;
- output.WriteLine( '}' );
- }
- }
-
- protected override void GenerateProperty( CodeMemberProperty property,
- CodeTypeDeclaration declaration )
- {
- TextWriter output = Output;
- output.Write( "<GenerateProperty>" );
- }
-
- protected override void GenerateConstructor( CodeConstructor constructor,
- CodeTypeDeclaration declaration )
- {
- Output.Write( "<GenerateConstructor>" );
- }
-
- protected override void GenerateTypeConstructor( CodeTypeConstructor constructor )
- {
- Output.Write( "<GenerateTypeConstructor>" );
- }
-
- protected override void GenerateTypeStart( CodeTypeDeclaration declaration )
- {
- TextWriter output = Output;
-
- TypeAttributes attributes = declaration.TypeAttributes;
- OutputTypeAttributes( attributes,
- declaration.IsStruct,
- declaration.IsEnum );
-
- output.Write( declaration.Name );
- output.Write( ' ' );
-
- IEnumerator enumerator = declaration.BaseTypes.GetEnumerator();
- if ( enumerator.MoveNext() ) {
- CodeTypeReference type = (CodeTypeReference)enumerator.Current;
-
- output.Write( ": " );
- OutputType( type );
-
- while ( enumerator.MoveNext() ) {
- type = (CodeTypeReference)enumerator.Current;
-
- output.Write( ", " );
- OutputType( type );
- }
-
- output.Write( ' ' );
- }
- output.WriteLine( "{" );
- ++Indent;
- }
-
- protected override void GenerateTypeEnd( CodeTypeDeclaration declaration )
- {
- --Indent;
- Output.WriteLine( "}" );
- }
-
- protected override void GenerateNamespaceStart( CodeNamespace ns )
- {
- TextWriter output = Output;
-
- string name = ns.Name;
- if ( name != null && name != "" ) {
- output.Write( "namespace " );
- output.Write( name );
- output.WriteLine( " {" );
- ++Indent;
- }
- }
-
- protected override void GenerateNamespaceEnd( CodeNamespace ns )
- {
- string name = ns.Name;
- if ( name != null && name != "" ) {
- --Indent;
- Output.WriteLine( "}" );
- }
- }
-
- protected override void GenerateNamespaceImport( CodeNamespaceImport import )
- {
- TextWriter output = Output;
-
- output.Write( "using " );
- output.Write( import.Namespace );
- output.WriteLine( ';' );
- }
-
- protected override void GenerateAttributeDeclarationsStart( CodeAttributeDeclarationCollection attributes )
- {
- Output.Write( '[' );
- }
-
- protected override void GenerateAttributeDeclarationsEnd( CodeAttributeDeclarationCollection attributes )
- {
- Output.WriteLine( ']' );
- }
-
- protected override void OutputType( CodeTypeReference type )
- {
- Output.Write( GetTypeOutput( type ) );
- }
-
- protected override string QuoteSnippetString( string value )
- {
- return "\"" + value + "\"";
- // FIXME: escape quotes
- }
-
- private void GenerateDeclaration( CodeTypeReference type, string name, CodeExpression initExpression )
- {
- TextWriter output = Output;
-
- OutputTypeNamePair( type, name );
-
- if ( initExpression != null ) {
- output.Write( " = " );
- GenerateExpression( initExpression );
- }
-
- output.WriteLine( ';' );
- }
-
- private void GenerateMemberReferenceExpression( CodeExpression targetObject, string memberName )
- {
- GenerateExpression( targetObject );
- Output.Write( '.' );
- Output.Write( memberName );
- }
-
- /*
- * ICodeGenerator
- */
-
- //[MonoTODO]
- protected override string CreateEscapedIdentifier( string value )
- {
- return value;
- }
-
- //[MonoTODO]
- protected override string CreateValidIdentifier( string value )
- {
- return value;
- }
-
- protected override string GetTypeOutput( CodeTypeReference type )
- {
- string output;
- CodeTypeReference arrayType;
-
- arrayType = type.ArrayElementType;
- if ( arrayType != null )
- output = GetTypeOutput( arrayType );
- else {
- switch ( type.BaseType ) {
-
- case "System.Decimal":
- output = "decimal";
- break;
- case "System.Double":
- output = "double";
- break;
- case "System.Single":
- output = "float";
- break;
-
- case "System.Byte":
- output = "byte";
- break;
- case "System.SByte":
- output = "sbyte";
- break;
- case "System.Int32":
- output = "int";
- break;
- case "System.UInt32":
- output = "uint";
- break;
- case "System.Int64":
- output = "long";
- break;
- case "System.UInt64":
- output = "ulong";
- break;
- case "System.Int16":
- output = "short";
- break;
- case "System.UInt16":
- output = "ushort";
- break;
-
- case "System.Boolean":
- output = "bool";
- break;
-
- case "System.Char":
- output = "char";
- break;
-
- case "System.String":
- output = "string";
- break;
- case "System.Object":
- output = "object";
- break;
-
- case "System.Void":
- output = "void";
- break;
-
- default:
- output = type.BaseType;
- break;
- }
- }
-
- int rank = type.ArrayRank;
- if ( rank > 0 ) {
- output += "[";
- for ( --rank; rank > 0; --rank )
- output += ",";
- output += "]";
- }
-
- return output;
- }
-
- protected override bool IsValidIdentifier( string identifier )
- {
- return true;
- }
-
- protected override bool Supports( GeneratorSupport supports )
- {
- if ( (supports & GeneratorSupport.Win32Resources) != 0 )
- return false;
- return true;
- }
-
-#if false
- //[MonoTODO]
- public override void ValidateIdentifier( string identifier )
- {
- }
-#endif
- }
-}