Author: spouliot
Date: 2005-11-01 10:27:56 -0500 (Tue, 01 Nov 2005)
New Revision: 52446
Modified:
trunk/mcs/class/System/System.CodeDom.Compiler/ChangeLog
trunk/mcs/class/System/System.CodeDom.Compiler/CodeDomProvider.cs
Log:
2005-11-01 Sebastien Pouliot <[EMAIL PROTECTED]>
CodeDomProvider.cs: Added missing 2.0 methods. Added CAS permissions.
Added protection against NullReferenceException when no config is
available.
Modified: trunk/mcs/class/System/System.CodeDom.Compiler/ChangeLog
===================================================================
--- trunk/mcs/class/System/System.CodeDom.Compiler/ChangeLog 2005-11-01
15:27:07 UTC (rev 52445)
+++ trunk/mcs/class/System/System.CodeDom.Compiler/ChangeLog 2005-11-01
15:27:56 UTC (rev 52446)
@@ -1,3 +1,9 @@
+2005-11-01 Sebastien Pouliot <[EMAIL PROTECTED]>
+
+ CodeDomProvider.cs: Added missing 2.0 methods. Added CAS permissions.
+ Added protection against NullReferenceException when no config is
+ available.
+
2005-10-29 Sebastien Pouliot <[EMAIL PROTECTED]>
CodeDomProvider.cs: Stubbed a few 2.0 methods to fix API errors in
Modified: trunk/mcs/class/System/System.CodeDom.Compiler/CodeDomProvider.cs
===================================================================
--- trunk/mcs/class/System/System.CodeDom.Compiler/CodeDomProvider.cs
2005-11-01 15:27:07 UTC (rev 52445)
+++ trunk/mcs/class/System/System.CodeDom.Compiler/CodeDomProvider.cs
2005-11-01 15:27:56 UTC (rev 52446)
@@ -1,10 +1,11 @@
//
// System.CodeDom.Compiler.CodeDomProvider.cs
//
-// Author:
+// Authors:
// Daniel Stodden ([EMAIL PROTECTED])
// Marek Safar ([EMAIL PROTECTED])
// Gonzalo Paniagua Javier ([EMAIL PROTECTED])
+// Sebastien Pouliot <[EMAIL PROTECTED]>
//
// Copyright (C) 2002,2003,2004,2005 Novell, Inc (http://www.novell.com)
//
@@ -28,10 +29,12 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
+using System.Collections;
using System.ComponentModel;
using System.Configuration;
using System.IO;
using System.Runtime.InteropServices;
+using System.Security.Permissions;
namespace System.CodeDom.Compiler {
@@ -66,8 +69,14 @@
//
// Methods
//
+#if NET_2_0
+ [Obsolete ("ICodeCompiler is obsolete")]
+#endif
public abstract ICodeCompiler CreateCompiler();
+#if NET_2_0
+ [Obsolete ("ICodeGenerator is obsolete")]
+#endif
public abstract ICodeGenerator CreateGenerator();
public virtual ICodeGenerator CreateGenerator (string fileName)
@@ -80,6 +89,9 @@
return CreateGenerator();
}
+#if NET_2_0
+ [Obsolete ("ICodeParser is obsolete")]
+#endif
public virtual ICodeParser CreateParser()
{
return null;
@@ -91,90 +103,206 @@
}
#if NET_2_0
-
public virtual CompilerResults CompileAssemblyFromDom
(CompilerParameters options, params CodeCompileUnit[] compilationUnits)
{
- return CreateCompiler ().CompileAssemblyFromDomBatch
(options, compilationUnits);
+ ICodeCompiler cc = CreateCompiler ();
+ if (cc == null)
+ throw new NotImplementedException ();
+ return cc.CompileAssemblyFromDomBatch (options,
compilationUnits);
}
+ public virtual CompilerResults CompileAssemblyFromFile
(CompilerParameters options, params string[] fileNames)
+ {
+ ICodeCompiler cc = CreateCompiler ();
+ if (cc == null)
+ throw new NotImplementedException ();
+ return cc.CompileAssemblyFromFileBatch (options,
fileNames);
+ }
+
+ public virtual CompilerResults CompileAssemblyFromSource
(CompilerParameters options, params string[] fileNames)
+ {
+ ICodeCompiler cc = CreateCompiler ();
+ if (cc == null)
+ throw new NotImplementedException ();
+ return cc.CompileAssemblyFromSourceBatch (options,
fileNames);
+ }
+
+ public virtual string CreateEscapedIdentifier (string value)
+ {
+ ICodeGenerator cg = CreateGenerator ();
+ if (cg == null)
+ throw new NotImplementedException ();
+ return cg.CreateEscapedIdentifier (value);
+ }
+
+ [ComVisible (false)]
+ [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
public static CodeDomProvider CreateProvider (string language)
{
- return GetCompilerInfo (language).CreateProvider ();
+ CompilerInfo ci = GetCompilerInfo (language);
+ return (ci == null) ? null : ci.CreateProvider ();
}
+ public virtual string CreateValidIdentifier (string value)
+ {
+ ICodeGenerator cg = CreateGenerator ();
+ if (cg == null)
+ throw new NotImplementedException ();
+ return cg.CreateValidIdentifier (value);
+ }
+
public virtual void GenerateCodeFromCompileUnit
(CodeCompileUnit compileUnit,
TextWriter writer, CodeGeneratorOptions options)
{
- CreateGenerator ().GenerateCodeFromCompileUnit
(compileUnit, writer, options);
+ ICodeGenerator cg = CreateGenerator ();
+ if (cg == null)
+ throw new NotImplementedException ();
+ cg.GenerateCodeFromCompileUnit (compileUnit, writer,
options);
}
- [MonoTODO]
public virtual void GenerateCodeFromExpression (CodeExpression
expression, TextWriter writer, CodeGeneratorOptions options)
{
- throw new NotImplementedException();
+ ICodeGenerator cg = CreateGenerator ();
+ if (cg == null)
+ throw new NotImplementedException ();
+ cg.GenerateCodeFromExpression (expression, writer,
options);
}
- [MonoTODO]
public virtual void GenerateCodeFromMember (CodeTypeMember
member, TextWriter writer, CodeGeneratorOptions options)
{
- throw new NotImplementedException();
+ // Documented to always throw an exception (if not
overriden)
+ throw new NotImplementedException ();
+ // Note: the pattern is different from other
GenerateCodeFrom* because
+ // ICodeGenerator doesn't have a GenerateCodeFromMember
member
}
- [MonoTODO]
public virtual void GenerateCodeFromNamespace (CodeNamespace
codeNamespace, TextWriter writer, CodeGeneratorOptions options)
{
- throw new NotImplementedException();
+ ICodeGenerator cg = CreateGenerator ();
+ if (cg == null)
+ throw new NotImplementedException ();
+ cg.GenerateCodeFromNamespace (codeNamespace, writer,
options);
}
public virtual void GenerateCodeFromStatement (CodeStatement
statement, TextWriter writer, CodeGeneratorOptions options)
{
- CreateGenerator ().GenerateCodeFromStatement
(statement, writer, options);
+ ICodeGenerator cg = CreateGenerator ();
+ if (cg == null)
+ throw new NotImplementedException ();
+ cg.GenerateCodeFromStatement (statement, writer,
options);
}
- [MonoTODO]
public virtual void GenerateCodeFromType (CodeTypeDeclaration
codeType, TextWriter writer, CodeGeneratorOptions options)
{
- throw new NotImplementedException();
+ ICodeGenerator cg = CreateGenerator ();
+ if (cg == null)
+ throw new NotImplementedException ();
+ cg.GenerateCodeFromType (codeType, writer, options);
}
+ [ComVisible (false)]
+ [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
+ public static CompilerInfo[] GetAllCompilerInfo ()
+ {
+ int n = 0;
+ if ((Config != null) && (Config.Compilers != null))
+ n = Config.Compilers.Hash.Count;
+ CompilerInfo[] ci = new CompilerInfo [n];
+ if (n > 0)
+ Config.Compilers.Hash.Values.CopyTo (ci, 0);
+ return ci;
+ }
+
+ [ComVisible (false)]
+ [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
public static CompilerInfo GetCompilerInfo (string language)
{
if (language == null)
throw new ArgumentNullException ("language");
- return Config.GetCompilerInfo (language);
+ return (Config == null) ? null : Config.GetCompilerInfo
(language);
}
+ [ComVisible (false)]
+ [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
+ public static string GetLanguageFromExtension (string extension)
+ {
+ if (extension == null)
+ throw new ArgumentNullException ("extension");
+
+ if (Config != null) {
+ foreach (DictionaryEntry de in
Config.Compilers.Hash) {
+ CompilerInfo c = (CompilerInfo)
de.Value;
+ if (Array.IndexOf (c.GetExtensions (),
extension) != -1)
+ return (string) de.Key;
+ }
+ }
+ return null;
+ }
+
+ public virtual string GetTypeOutput (CodeTypeReference type)
+ {
+ ICodeGenerator cg = CreateGenerator ();
+ if (cg == null)
+ throw new NotImplementedException ();
+ return cg.GetTypeOutput (type);
+ }
+
+ [ComVisible (false)]
+ [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
public static bool IsDefinedExtension (string extension)
{
if (extension == null)
throw new ArgumentNullException ("extension");
- foreach (CompilerInfo c in
Config.Compilers.Hash.Values) {
- if (Array.IndexOf (c.GetExtensions (),
extension) != -1)
- return true;
+ if (Config != null) {
+ foreach (CompilerInfo c in
Config.Compilers.Hash.Values) {
+ if (Array.IndexOf (c.GetExtensions (),
extension) != -1)
+ return true;
+ }
}
-
return false;
}
+ [ComVisible (false)]
+ [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
public static bool IsDefinedLanguage (string language)
{
if (language == null)
throw new ArgumentNullException ("language");
+ if (Config == null)
+ return false;
return (Config.GetCompilerInfo (language) == null);
}
+ public virtual bool IsValidIdentifier (string value)
+ {
+ ICodeGenerator cg = CreateGenerator ();
+ if (cg == null)
+ throw new NotImplementedException ();
+ return cg.IsValidIdentifier (value);
+ }
+
+ public virtual CodeCompileUnit Parse (TextReader codeStream)
+ {
+ ICodeParser cp = CreateParser ();
+ if (cp == null)
+ throw new NotImplementedException ();
+ return cp.Parse (codeStream);
+ }
+
public virtual bool Supports (GeneratorSupport supports)
{
- return CreateGenerator ().Supports (supports);
+ ICodeGenerator cg = CreateGenerator ();
+ if (cg == null)
+ throw new NotImplementedException ();
+ return cg.Supports (supports);
}
static CompilationConfiguration Config {
get { return ConfigurationSettings.GetConfig
("system.codedom") as CompilationConfiguration; }
}
#endif
-
}
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches