Exemplo n.º 1
0
        public Property (Class declaringType, NCC.IProperty tinfo)
        {
            this.declaringType = declaringType;
        
            ModifierEnum mod = (ModifierEnum)0;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Private) != 0)
                mod |= ModifierEnum.Private;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Internal) != 0)
                mod |= ModifierEnum.Internal;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Protected) != 0)
                mod |= ModifierEnum.Protected;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Public) != 0)
                mod |= ModifierEnum.Public;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Abstract) != 0)
                mod |= ModifierEnum.Abstract;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Sealed) != 0)
                mod |= ModifierEnum.Sealed;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Static) != 0)
                mod |= ModifierEnum.Static;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Override) != 0)
                mod |= ModifierEnum.Override;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Virtual) != 0)
                mod |= ModifierEnum.Virtual;
            if ((tinfo.Attributes & NCC.NemerleAttributes.New) != 0)
                mod |= ModifierEnum.New;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Extern) != 0)
                mod |= ModifierEnum.Extern;
                
            modifiers = mod;
            
            this.FullyQualifiedName = tinfo.Name;
            returnType = new ReturnType (tinfo.GetMemType ());
            this.region = Class.GetRegion (tinfo.Location);
            if (tinfo is NCC.MemberBuilder)
                this.bodyRegion = Class.GetRegion (((NCC.MemberBuilder)tinfo).BodyLocation);
            else
                this.bodyRegion = Class.GetRegion (tinfo.Location);
            
            NCC.IMethod getter = tinfo.GetGetter ();
            NCC.IMethod setter = tinfo.GetSetter ();
			if (getter != null)
		    {
			    this.Getter = new Method(declaringType, getter);
			    if (getter is NCC.MemberBuilder)
			        getterRegion = Class.GetRegion (((NCC.MemberBuilder)getter).BodyLocation);
			    else
			       getterRegion = Class.GetRegion(getter.Location);
			}
			if (setter != null)
			{
			    this.Setter = new Method(declaringType, setter);
			    if (setter is NCC.MemberBuilder)
			        setterRegion = Class.GetRegion (((NCC.MemberBuilder)setter).BodyLocation);
			    else
			        setterRegion = Class.GetRegion(setter.Location);
			}
			
			LoadXml (declaringType);
        }
Exemplo n.º 2
0
		public Local (Class declaringType, NCC.LocalValue tinfo)
		{
		    this.declaringType = declaringType;
		
		    ModifierEnum mod = ModifierEnum.Public;
            
            if (!tinfo.IsMutable)
                mod |= ModifierEnum.Readonly;
                
			modifiers = mod;
			
			this.FullyQualifiedName = tinfo.Name;
			returnType = new ReturnType (tinfo.Type.Fix ());
			this.region = Class.GetRegion ();
	   }
Exemplo n.º 3
0
		public Field (Class declaringType, NCC.IField tinfo)
		{
		    this.declaringType = declaringType;
		
		    ModifierEnum mod = (ModifierEnum)0;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Private) != 0)
                mod |= ModifierEnum.Private;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Internal) != 0)
                mod |= ModifierEnum.Internal;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Protected) != 0)
                mod |= ModifierEnum.Protected;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Public) != 0)
                mod |= ModifierEnum.Public;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Abstract) != 0)
                mod |= ModifierEnum.Abstract;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Sealed) != 0)
                mod |= ModifierEnum.Sealed;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Static) != 0)
                mod |= ModifierEnum.Static;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Override) != 0)
                mod |= ModifierEnum.Override;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Virtual) != 0)
                mod |= ModifierEnum.Virtual;
            if ((tinfo.Attributes & NCC.NemerleAttributes.New) != 0)
                mod |= ModifierEnum.New;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Extern) != 0)
                mod |= ModifierEnum.Extern;
            
            if (!tinfo.IsMutable)
                mod |= ModifierEnum.Readonly;
            if (tinfo.IsVolatile)
                mod |= ModifierEnum.Volatile;
            if (tinfo.IsLiteral)
                mod |= ModifierEnum.Const;
                
			modifiers = mod;
			
			this.FullyQualifiedName = tinfo.Name;
			returnType = new ReturnType (tinfo.GetMemType ());
			this.region = Class.GetRegion (tinfo.Location);
			
			LoadXml (declaringType);
	   }
Exemplo n.º 4
0
		public Constructor (IClass declaringType, NCC.IMethod tinfo)
		{
		    this.declaringType = declaringType;
		
			ModifierEnum mod = (ModifierEnum)0;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Private) != 0)
                mod |= ModifierEnum.Private;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Internal) != 0)
                mod |= ModifierEnum.Internal;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Protected) != 0)
                mod |= ModifierEnum.Protected;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Public) != 0)
                mod |= ModifierEnum.Public;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Abstract) != 0)
                mod |= ModifierEnum.Abstract;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Sealed) != 0)
                mod |= ModifierEnum.Sealed;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Static) != 0)
                mod |= ModifierEnum.Static;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Override) != 0)
                mod |= ModifierEnum.Override;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Virtual) != 0)
                mod |= ModifierEnum.Virtual;
            if ((tinfo.Attributes & NCC.NemerleAttributes.New) != 0)
                mod |= ModifierEnum.New;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Extern) != 0)
                mod |= ModifierEnum.Extern;
                
			modifiers = mod;
			this.FullyQualifiedName = "this";
			
			returnType = new ReturnType ((NCC.MType)tinfo.ReturnType);
			this.region = Class.GetRegion (tinfo.Location);
            if (tinfo is NCC.MemberBuilder)
                this.bodyRegion = Class.GetRegion (((NCC.MemberBuilder)tinfo).BodyLocation);
            else
                this.bodyRegion = Class.GetRegion (tinfo.Location);
			this._member = tinfo;
			    
			// Add parameters
			foreach (Fun_parm pinfo in tinfo.GetParameters ())
			    parameters.Add(new Parameter(this, pinfo, null));
		}
Exemplo n.º 5
0
 void LoadXml (Class declaring, NCC.IMethod methodBase)
 {
     if (declaring.xmlHelp != null) {
         XmlNodeList nodes = declaring.xmlHelp.SelectNodes ("/Type/Members/Member[@MemberName='" + methodBase.Name.ToString () + "']");
         if (nodes != null && nodes.Count > 0) {
             if (nodes.Count == 1) {
                 node = nodes[0];
             } else {
                 node = FindMatch (nodes, methodBase);
             }
             if (node != null) {
                 XmlNode docNode = node.SelectSingleNode ("Docs/summary");
                 if (docNode != null) {
                     Documentation = docNode.InnerXml;
                 }
             }
         }
     }
 }
Exemplo n.º 6
0
		public Event (Class declaringType, NCC.IEvent tinfo)
		{
		    this.declaringType = declaringType;
		
		    ModifierEnum mod = (ModifierEnum)0;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Private) != 0)
                mod |= ModifierEnum.Private;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Internal) != 0)
                mod |= ModifierEnum.Internal;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Protected) != 0)
                mod |= ModifierEnum.Protected;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Public) != 0)
                mod |= ModifierEnum.Public;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Abstract) != 0)
                mod |= ModifierEnum.Abstract;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Sealed) != 0)
                mod |= ModifierEnum.Sealed;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Static) != 0)
                mod |= ModifierEnum.Static;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Override) != 0)
                mod |= ModifierEnum.Override;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Virtual) != 0)
                mod |= ModifierEnum.Virtual;
            if ((tinfo.Attributes & NCC.NemerleAttributes.New) != 0)
                mod |= ModifierEnum.New;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Extern) != 0)
                mod |= ModifierEnum.Extern;
                
			modifiers = mod;
			
			this.FullyQualifiedName = tinfo.Name;
			returnType = new ReturnType (tinfo.GetMemType ());
			this.region = Class.GetRegion (tinfo.Location);
            if (tinfo is NCC.MemberBuilder)
                this.bodyRegion = Class.GetRegion (((NCC.MemberBuilder)tinfo).BodyLocation);
            else
                this.bodyRegion = Class.GetRegion (tinfo.Location);
                
            LoadXml (declaringType);
		}
Exemplo n.º 7
0
 XmlNode FindMatch (XmlNodeList nodes, NCC.IMethod methodBase)
 {
     Nemerle.Core.list<Fun_parm> p = methodBase.GetParameters ();
     foreach (XmlNode node in nodes) {
         XmlNodeList paramList = node.SelectNodes ("Parameters/*");
         if (p.Length == 0 && paramList.Count == 0) return node;
         if (p.Length != paramList.Count) continue;
         try
         {
             bool matched = true;
             for (int i = 0; i < paramList.Count; i++) {
                 Fun_parm k = p.Nth(i);
                 if (k.ty is NCC.MType.Class)
                 {
                     string pname = ((NCC.MType.Class)k.ty).tycon.FrameworkTypeName;
                     if (pname != paramList[i].Attributes["Type"].Value) {
                         matched = false;
                         break;
                     }
                 }
                 else if (k.ty is NCC.MType.Array)
                 {
                     NCC.MType.Array zas = (NCC.MType.Array)k.ty;
                     if (zas.t is NCC.MType.Class)
                     {
                         string pname = ((NCC.MType.Class)zas.t).tycon.FrameworkTypeName + "[]";
                         if (pname != paramList[i].Attributes["Type"].Value) {
                             matched = false;
                             break;
                         }
                     }
                 }
                 else if (k.ty is NCC.MType.Ref)
                 {
                     NCC.MType.Ref zas = (NCC.MType.Ref)k.ty;
                     if (zas.t is NCC.MType.Class)
                     {
                         string pname = ((NCC.MType.Class)zas.t).tycon.FrameworkTypeName + "&";
                         if (pname != paramList[i].Attributes["Type"].Value) {
                             matched = false;
                             break;
                         }
                     }
                 }
                 else
                 {
                     matched = false;
                     break;
                 }
             }
             if (matched)
                 return node;
         }
         catch { }
     }
     return null;
 }
Exemplo n.º 8
0
 public ReturnType(NCC.MType type)
 {
     base.arrayDimensions = new int[0];
     base.pointerNestingLevel = 0;
     
     if (type is NCC.MType.Class)
     {
         NCC.MType.Class t = (NCC.MType.Class)type;
         base.FullyQualifiedName = t.tycon.FrameworkTypeName
                 .Replace ("`1", "")
                 .Replace ("`2", "")
                 .Replace ("`3", "")
                 .Replace ("`4", "");
                 
         if (t.args.Length > 0)
         {
             base.genericArguments = new ReturnTypeList ();
             foreach (NCC.TyVar tyvar in t.args)
             {
                 base.genericArguments.Add (new ReturnType (tyvar.Fix ()));
             }
         }
     }
     else if (type is NCC.MType.TyVarRef)
     {
         base.FullyQualifiedName = ((NCC.MType.TyVarRef)type).tyvar.Name;
     }
     else if (type is NCC.MType.Fun)
     {
         // Use the plain type until Ambience works correctly
         base.FullyQualifiedName = Engine.GetNameFromType (type);
     }
     else if (type is NCC.MType.Tuple)
     {
         // Use the plain type until Ambience works correctly
         base.FullyQualifiedName = Engine.GetNameFromType (type);
     }
     else if (type is NCC.MType.Array)
     {
         NCC.MType.Array a = (NCC.MType.Array)type;
         ReturnType rtx = new ReturnType (a.t.Fix ());
         this.FullyQualifiedName = rtx.FullyQualifiedName;
         this.arrayDimensions = new int[rtx.ArrayDimensions.Length + 1];
         this.arrayDimensions[0] = a.rank;
         for (int i = 0; i < rtx.ArrayDimensions.Length; i++)
             this.arrayDimensions[i+1] = rtx.ArrayDimensions[i];
     }
     else if (type is NCC.MType.Void)
     {
         base.FullyQualifiedName = "System.Void";
     }
     else if (type is NCC.MType.Ref)
     {
         ReturnType rtx = new ReturnType (((NCC.MType.Ref)type).t.Fix ());
         this.FullyQualifiedName = rtx.FullyQualifiedName;
         this.arrayDimensions = rtx.ArrayDimensions;
     }
     else if (type is NCC.MType.Out)
     {
         ReturnType rtx = new ReturnType (((NCC.MType.Out)type).t.Fix ());
         this.FullyQualifiedName = rtx.FullyQualifiedName;
         this.arrayDimensions = rtx.ArrayDimensions;
     }
 }
Exemplo n.º 9
0
 internal static GenericParameter GetGenericParameter (NCC.StaticTyVar tyvar)
 {
     ReturnTypeList constraints = new ReturnTypeList ();
     foreach (NCC.MType constraint in tyvar.Constraints)
         constraints.Add (new ReturnType (constraint));
         
     return new GenericParameter (tyvar.Name, constraints, tyvar.SpecialConstraints);
 }
Exemplo n.º 10
0
 public static DefaultRegion GetRegion (NCC.Location cloc)
 {
     try
     {
         DefaultRegion reg = new DefaultRegion (cloc.Line, cloc.Column,
             cloc.EndLine, cloc.EndColumn);
         reg.FileName = cloc.File;
         return reg;
     }
     catch
     {
         return GetRegion ();
     }
 }
Exemplo n.º 11
0
        public Class(NCC.TypeInfo tinfo, DefaultCompilationUnit cu, bool addMembers): base (cu)
        {
            this.tinfo = tinfo;
            
            this.FullyQualifiedName = tinfo.FrameworkTypeName.TrimEnd('*');
            if (this.FullyQualifiedName.Contains("`"))
                this.FullyQualifiedName = this.FullyQualifiedName.TrimEnd ('1', '2', '3', '4').TrimEnd('`');

            
            if (tinfo.IsEnum)
                classType = ClassType.Enum;
            else if (tinfo.IsInterface)
                classType = ClassType.Interface;
            else if (tinfo.IsValueType)
                classType = ClassType.Struct;
            else if (tinfo.IsDelegate)
                classType = ClassType.Delegate;
            else
                classType = ClassType.Class;
            
            this.region = GetRegion (tinfo.Location);
            this.bodyRegion = GetRegion (tinfo.Location);
            
            ModifierEnum mod = (ModifierEnum)0;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Private) != 0)
                mod |= ModifierEnum.Private;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Internal) != 0)
                mod |= ModifierEnum.Internal;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Protected) != 0)
                mod |= ModifierEnum.Protected;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Public) != 0)
                mod |= ModifierEnum.Public;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Abstract) != 0)
                mod |= ModifierEnum.Abstract;
            if ((tinfo.Attributes & NCC.NemerleAttributes.Sealed) != 0)
                mod |= ModifierEnum.Sealed;
                
            modifiers = mod;
            
            if (tinfo.Typarms.Length > 0)
            {
                this.genericParamters = new GenericParameterList ();
                foreach (NCC.StaticTyVar typarm in tinfo.Typarms)
                {
                    genericParamters.Add (GetGenericParameter (typarm));
                }
            }
            
            if (addMembers || tinfo.IsDelegate)
            {
                foreach (NCC.IMember member in tinfo.GetMembers ())
                {
                    if (member.Name.StartsWith ("_N") || member.Location.Line == tinfo.Location.Line)
                        continue;
                        
                    NCC.MemberKind m = member.GetKind ();
                    
                    if (m is NCC.MemberKind.Field)
                    {
                        NCC.MemberKind.Field f = (NCC.MemberKind.Field)m;
                        if (f.field.Name != "value__")
                            fields.Add (new Field (this, f.field));
                    }
                    else if (m is NCC.MemberKind.Method)
                    {
                        NCC.MemberKind.Method mt = (NCC.MemberKind.Method)m;
                        if (mt.method.Name.StartsWith ("get_") || mt.method.Name.StartsWith ("set_") || 
                            mt.method.Name.StartsWith ("add_") || mt.method.Name.StartsWith ("remove_"))
                            continue;
                        
                        NCC.FunKind fk = mt.method.GetFunKind ();
                        if (fk is NCC.FunKind.Constructor || fk is NCC.FunKind.StaticConstructor)
                            methods.Add (new Constructor (this, mt.method));
                        else
                            methods.Add (new Method (this, mt.method));
                    }
                    else if (m is NCC.MemberKind.Property)
                    {
                        NCC.MemberKind.Property px = (NCC.MemberKind.Property)m;
                        if (px.prop.IsIndexer)
                            indexer.Add (new Indexer (this, px.prop));
                        else
                            properties.Add (new Property (this, px.prop));
                    }
                    else if (m is NCC.MemberKind.Event)
                        events.Add (new Event (this, ((NCC.MemberKind.Event)m).body));
                    else if (m is NCC.MemberKind.Type)
                        innerClasses.Add (new Class ( ((NCC.MemberKind.Type)m).tycon, cu));
                }
            }
            
            foreach (NCC.MType.Class mt in tinfo.GetDirectSuperTypes ())
            {
                if (mt.tycon.FrameworkTypeName != "System.Object" &&
                    mt.tycon.FrameworkTypeName != "System.ValueType" &&
                    mt.tycon.FrameworkTypeName != "System.Enum" &&
                    mt.tycon.FrameworkTypeName != "System.Delegate" &&
                    mt.tycon.FrameworkTypeName != "System.MulticastDelegate")
                    baseTypes.Add (new ReturnType(mt));
            }
            
            LoadXml ();
        }
Exemplo n.º 12
0
 public Class(NCC.TypeInfo tinfo, DefaultCompilationUnit cu)
   : this (tinfo, cu, true)
 { }
Exemplo n.º 13
0
 void make_type (NCC.TypeInfo ti)
 {
     cu.Classes.Add (new Class (ti, cu));
 }
Exemplo n.º 14
0
 public Method (Class declaringType, NCC.IMethod tinfo)
 {
     this.declaringType = declaringType;
 
     ModifierEnum mod = (ModifierEnum)0;
     if ((tinfo.Attributes & NCC.NemerleAttributes.Private) != 0)
         mod |= ModifierEnum.Private;
     if ((tinfo.Attributes & NCC.NemerleAttributes.Internal) != 0)
         mod |= ModifierEnum.Internal;
     if ((tinfo.Attributes & NCC.NemerleAttributes.Protected) != 0)
         mod |= ModifierEnum.Protected;
     if ((tinfo.Attributes & NCC.NemerleAttributes.Public) != 0)
         mod |= ModifierEnum.Public;
     if ((tinfo.Attributes & NCC.NemerleAttributes.Abstract) != 0)
         mod |= ModifierEnum.Abstract;
     if ((tinfo.Attributes & NCC.NemerleAttributes.Sealed) != 0)
         mod |= ModifierEnum.Sealed;
     if ((tinfo.Attributes & NCC.NemerleAttributes.Static) != 0)
         mod |= ModifierEnum.Static;
     if ((tinfo.Attributes & NCC.NemerleAttributes.Override) != 0)
         mod |= ModifierEnum.Override;
     if ((tinfo.Attributes & NCC.NemerleAttributes.Virtual) != 0)
         mod |= ModifierEnum.Virtual;
     if ((tinfo.Attributes & NCC.NemerleAttributes.New) != 0)
         mod |= ModifierEnum.New;
     if ((tinfo.Attributes & NCC.NemerleAttributes.Extern) != 0)
         mod |= ModifierEnum.Extern;
         
     modifiers = mod;
     this.FullyQualifiedName = tinfo.Name;
     
     if (tinfo.GetHeader().typarms.Length > 0)
     {
         this.genericParameters = new GenericParameterList ();
         foreach (NCC.StaticTyVar typarm in tinfo.GetHeader().typarms)
         {
             genericParameters.Add (Class.GetGenericParameter (typarm));
         }
     }
     
     if (tinfo.Name == "op_Addition") this.FullyQualifiedName = "@+";
     else if (tinfo.Name == "op_Subtraction") this.FullyQualifiedName = "@-";
     else if (tinfo.Name == "op_Multiply") this.FullyQualifiedName = "@*";
     else if (tinfo.Name == "op_Division") this.FullyQualifiedName = "@/";
     else if (tinfo.Name == "op_Modulus") this.FullyQualifiedName = "@%";
     else if (tinfo.Name == "op_ExclusiveOr") this.FullyQualifiedName = "@^";
     else if (tinfo.Name == "op_BitwiseAnd") this.FullyQualifiedName = "@&";
     else if (tinfo.Name == "op_BitwiseOr") this.FullyQualifiedName = "@|";
     else if (tinfo.Name == "op_LogicalAnd") this.FullyQualifiedName = "@&&";
     else if (tinfo.Name == "op_LogicalOr") this.FullyQualifiedName = "@||";
     else if (tinfo.Name == "op_Assign") this.FullyQualifiedName = "@=";
     else if (tinfo.Name == "op_LeftShift") this.FullyQualifiedName = "@<<";
     else if (tinfo.Name == "op_RightShift") this.FullyQualifiedName = "@>>";
     else if (tinfo.Name == "op_Equality") this.FullyQualifiedName = "@==";
     else if (tinfo.Name == "op_GreaterThan") this.FullyQualifiedName = "@>";
     else if (tinfo.Name == "op_LessThan") this.FullyQualifiedName = "@<";
     else if (tinfo.Name == "op_Inequality") this.FullyQualifiedName = "@!=";
     else if (tinfo.Name == "op_GreaterThanOrEqual") this.FullyQualifiedName = "@>=";
     else if (tinfo.Name == "op_LessThanOrEqual") this.FullyQualifiedName = "@<=";
     else if (tinfo.Name == "op_MultiplicationAssignment") this.FullyQualifiedName = "@*=";
     else if (tinfo.Name == "op_SubtractionAssignment") this.FullyQualifiedName = "@-=";
     else if (tinfo.Name == "op_ExclusiveOrAssignment") this.FullyQualifiedName = "@^=";
     else if (tinfo.Name == "op_LeftShiftAssignment") this.FullyQualifiedName = "@<<=";
     else if (tinfo.Name == "op_ModulusAssignment") this.FullyQualifiedName = "@%=";
     else if (tinfo.Name == "op_AdditionAssignment") this.FullyQualifiedName = "@+=";
     else if (tinfo.Name == "op_BitwiseAndAssignment") this.FullyQualifiedName = "@&=";
     else if (tinfo.Name == "op_BitwiseOrAssignment") this.FullyQualifiedName = "@|=";
     else if (tinfo.Name == "op_Comma") this.FullyQualifiedName = "@,";
     else if (tinfo.Name == "op_DivisionAssignment") this.FullyQualifiedName = "@/=";
     else if (tinfo.Name == "op_Implicit") this.FullyQualifiedName = "@:";
     else if (tinfo.Name == "op_Explicit") this.FullyQualifiedName = "@:>";
     else if (tinfo.Name == "op_UnaryPlus") this.FullyQualifiedName = "@+";
     else if (tinfo.Name == "op_UnaryNegation") this.FullyQualifiedName = "@-";
     else if (tinfo.Name == "op_Decrement") this.FullyQualifiedName = "@--";
     else if (tinfo.Name == "op_Increment") this.FullyQualifiedName = "@++";
     else if (tinfo.Name == "op_OnesComplement") this.FullyQualifiedName = "@~";
     else if (tinfo.Name == "op_LogicalNot") this.FullyQualifiedName = "@!";    
     
     returnType = new ReturnType ((NCC.MType)tinfo.ReturnType);
     this.region = Class.GetRegion (tinfo.Location);
     if (tinfo is NCC.MemberBuilder)
         this.bodyRegion = Class.GetRegion (((NCC.MemberBuilder)tinfo).BodyLocation);
     else
         this.bodyRegion = Class.GetRegion (tinfo.Location);
     this._member = tinfo;
     
     LoadXml (declaringType, tinfo);
         
     // Add parameters
     foreach (Fun_parm pinfo in tinfo.GetParameters ())
     {
         try { parameters.Add(new Parameter(this, pinfo, node)); }
         catch { }
     }
 }
Exemplo n.º 15
0
 private Class GetTheRealType (NCC.MType objectType, DefaultCompilationUnit cu)
 {
     if (objectType is NCC.MType.Class)
     {
         return new Class (((NCC.MType.Class)objectType).tycon, cu, false);
     }
     else if (objectType is NCC.MType.Array)
     {
         return new Class ("System.Array", cu);
     }
     else if (objectType is NCC.MType.Fun)
     {
         return GetTheRealType (((NCC.MType.Fun)objectType).to.Fix (), cu);
     }
     else if (objectType is NCC.MType.Ref)
     {
         return GetTheRealType (((NCC.MType.Ref)objectType).t.Fix (), cu);
     }
     else if (objectType is NCC.MType.Out)
     {
         return GetTheRealType (((NCC.MType.Out)objectType).t.Fix (), cu);
     }
     else
     {
         return null;
     }
 }
Exemplo n.º 16
0
 private void AddMember (Class declaring, LanguageItemCollection lang, NCC.IMember member)
 {
     // Do not add property getters and setters, not events adders and removers,
     // nor overloaded operators, nor enum value__, not Nemerle internal methods
     if (member.Name.StartsWith("_N") || member.Name.StartsWith("get_") ||
         member.Name.StartsWith("set_") || member.Name == "value__" ||
         member.Name.StartsWith("op_") || member.Name.StartsWith("add_") ||
         member.Name.StartsWith("remove_"))
         return;
           
     try
     {
         if (member is NCC.IField)
             lang.Add (new NemerleBinding.Parser.SharpDevelopTree.Field (declaring, (NCC.IField)member));
         else if (member is NCC.IMethod)
             lang.Add (new Method (declaring, (NCC.IMethod)member));
         else if (member is NCC.IProperty)
         {
             NCC.IProperty prop = (NCC.IProperty)member;
             if (prop.IsIndexer)
                 lang.Add (new Indexer (declaring, prop));
             else
                 lang.Add (new Property (declaring, prop));
         }
         else if (member is NCC.IEvent)
             lang.Add (new Event (declaring, (NCC.IEvent)member));
     }
     catch (Exception e)
     {
         System.Console.WriteLine (e.Message);
     }
 }
Exemplo n.º 17
0
        ResolveResult GetResults (NCC.CompletionResult results, DefaultCompilationUnit cu, bool completeLocals)
        {
            try
            {
            if (results == null || results.Elems.Count == 0)
                return null;
                        
            if (results.Elems [0] is NCC.Elem.Node)
            {
                List<string> alreadyAdded = new List<string> ();
                List<string> namespaces = new List<string> ();
                LanguageItemCollection lang = new LanguageItemCollection ();
                
                foreach (NCC.Elem elem in results.Elems)
                {
                    if (!(elem is NCC.Elem.Node))
                        continue;
                    
                    NCC.Elem.Node enode = (NCC.Elem.Node)elem;
                    if (enode.node.Value is NCC.NamespaceTree.TypeInfoCache.NamespaceReference)
                    {
                        namespaces.Add (enode.Name);
                    }
                    else if (enode.node.Value is NCC.NamespaceTree.TypeInfoCache.Cached)
                    {
                        if (!alreadyAdded.Contains (enode.Name))
                        {
                            alreadyAdded.Add (enode.Name);
                            lang.Add (new Class (((NCC.NamespaceTree.TypeInfoCache.Cached)enode.node.Value).tycon, cu, false));
                        }
                    }
                }
                return new ResolveResult (namespaces.ToArray (), lang);
            }
            else
            {
                Class declaring = GetTheRealType (results.ObjectType, cu);
                
                /*if (declaring.FullyQualifiedName == "System.Object")
                {
                    // Try with any other member
                    NCC.TypeInfo found = null;
                    foreach (NCC.OverloadPossibility ov in results.Overloads)
                    {
                        if (ov.Member.DeclaringType.FrameworkTypeName != "System.Object")
                        {
                            found = ov.Member.DeclaringType;
                            break;
                        }
                    }
                    if (found != null)
                        declaring = new Class (found, cu, false);
                }*/
                
                LanguageItemCollection lang = new LanguageItemCollection ();
                
                foreach (NCC.Elem elem in results.Elems)
                {
                    if (elem is NCC.Elem.Local)
                    {
                        if (!completeLocals)
                            continue;
                        
                        NCC.Elem.Local lvalue = (NCC.Elem.Local)elem;
/*                        lang.Add (new NemerleBinding.Parser.SharpDevelopTree.Local 
                            (new Class ("LOCALS", cu), lvalue.Value));
*/                    }
                    else if (elem is NCC.Elem.Overloads)
                    {
                        NCC.Elem.Overloads lvalue = (NCC.Elem.Overloads)elem;
                        foreach (NCC.OverloadPossibility ov in lvalue.Values)
                            AddMember (declaring, lang, ov.Member); 
                    }
                    else if (elem is NCC.Elem.Overload)
                    {
                        NCC.Elem.Overload lvalue = (NCC.Elem.Overload)elem;
                        AddMember (declaring, lang, lvalue.Value.Member);
                    }
                    else if (elem is NCC.Elem.Member)
                    {
                        NCC.Elem.Member lvalue = (NCC.Elem.Member)elem;
                        AddMember (declaring, lang, lvalue.member);
                    }
                }
                
                return new ResolveResult (declaring, lang);
            }
            }
            catch (Exception ex)
            {
                System.Console.WriteLine (ex.GetType().FullName);
                System.Console.WriteLine (ex.Message);
                System.Console.WriteLine (ex.StackTrace);
                if (ex.InnerException != null)
                {
                    System.Console.WriteLine (ex.InnerException.GetType().FullName);
                    System.Console.WriteLine (ex.InnerException.Message);
                    System.Console.WriteLine (ex.InnerException.StackTrace);
                }
                return null;
            }
        }