+
+ class PartialMethodDefinitionInfo : MethodInfo
+ {
+ MethodOrOperator mc;
+ MethodAttributes attrs;
+
+ public PartialMethodDefinitionInfo (MethodOrOperator mc)
+ {
+ this.mc = mc;
+ if ((mc.ModFlags & Modifiers.STATIC) != 0)
+ attrs = MethodAttributes.Static;
+ }
+
+ public override MethodInfo GetBaseDefinition ()
+ {
+ throw new NotImplementedException ();
+ }
+
+ public override ICustomAttributeProvider ReturnTypeCustomAttributes
+ {
+ get { throw new NotImplementedException (); }
+ }
+
+ public override MethodAttributes Attributes
+ {
+ get { return attrs; }
+ }
+
+ public override MethodImplAttributes GetMethodImplementationFlags ()
+ {
+ throw new NotImplementedException ();
+ }
+
+ public override ParameterInfo [] GetParameters ()
+ {
+ throw new NotImplementedException ();
+ }
+
+ public override object Invoke (object obj, BindingFlags invokeAttr, Binder binder, object [] parameters, CultureInfo culture)
+ {
+ throw new NotImplementedException ();
+ }
+
+ public override RuntimeMethodHandle MethodHandle
+ {
+ get { throw new NotImplementedException (); }
+ }
+
+ public override Type DeclaringType
+ {
+ get { return mc.Parent.TypeBuilder; }
+ }
+
+ public override object [] GetCustomAttributes (Type attributeType, bool inherit)
+ {
+ throw new NotImplementedException ();
+ }
+
+ public override object [] GetCustomAttributes (bool inherit)
+ {
+ throw new NotImplementedException ();
+ }
+
+ public override Type ReturnType {
+ get {
+ return mc.MemberType;
+ }
+ }
+
+ public override bool IsDefined (Type attributeType, bool inherit)
+ {
+ throw new NotImplementedException ();
+ }
+
+ public override string Name
+ {
+ get { return mc.Name; }
+ }
+
+ public override Type ReflectedType
+ {
+ get { throw new NotImplementedException (); }
+ }
+ }
+
+ public class UnixUtils {
+ [System.Runtime.InteropServices.DllImport ("libc", EntryPoint="isatty")]
+ extern static int _isatty (int fd);
+
+ public static bool isatty (int fd)
+ {
+ try {
+ return _isatty (fd) == 1;
+ } catch {
+ return false;
+ }
+ }
+ }
+
+ /// <summary>
+ /// An exception used to terminate the compiler resolution phase and provide completions
+ /// </summary>
+ /// <remarks>
+ /// This is thrown when we want to return the completions or
+ /// terminate the completion process by AST nodes used in
+ /// the completion process.
+ /// </remarks>
+ public class CompletionResult : Exception {
+ string [] result;
+ string base_text;
+
+ public CompletionResult (string base_text, string [] res)
+ {
+ if (base_text == null)
+ throw new ArgumentNullException ("base_text");
+ this.base_text = base_text;
+
+ result = res;
+ Array.Sort (result);
+ }
+
+ public string [] Result {
+ get {
+ return result;
+ }
+ }
+
+ public string BaseText {
+ get {
+ return base_text;
+ }
+ }
+ }