public static void EnumChildren(ICompletionDataGenerator cdgen,ResolutionContext ctxt, UserDefinedType udt, bool isVarInstance, 
			MemberFilter vis = MemberFilter.Methods | MemberFilter.Types | MemberFilter.Variables | MemberFilter.Enums)
		{
			var scan = new MemberCompletionEnumeration(ctxt, cdgen) { isVarInst = isVarInstance };

			scan.DeepScanClass(udt, vis);
		}
Example #2
0
        public static bool IsImplicitlyConvertible(UserDefinedType r, UserDefinedType target)
        {
            if (r == null || target == null)
            {
                return(false);
            }

            if (r.Definition == target.Definition)
            {
                return(true);
            }

            if (r.Base != null && IsImplicitlyConvertible(r.Base, target))
            {
                return(true);
            }

            if (r is TemplateIntermediateType)
            {
                var templateType = (TemplateIntermediateType)r;

                if (templateType.BaseInterfaces != null &&
                    templateType.BaseInterfaces.Length != 0 &&
                    target is InterfaceType)
                {
                    foreach (var I in templateType.BaseInterfaces)
                    {
                        if (IsImplicitlyConvertible(I, target))
                        {
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
		void BuildCompletionData(UserDefinedType tr, bool showInstanceItems)
		{
			MemberCompletionEnumeration.EnumChildren(CompletionDataGenerator, ctxt, tr, showInstanceItems, MemberFilter);
			StaticProperties.ListProperties(CompletionDataGenerator, MemberFilter, tr, showInstanceItems);
		}
Example #4
0
		public static bool IsImplicitlyConvertible(UserDefinedType r, UserDefinedType target)
		{
			if (r == null || target == null)
				return false;

			if (r.Definition == target.Definition)
				return true;

			if (r.Base != null && IsImplicitlyConvertible(r.Base, target))
				return true;

			if (r is TemplateIntermediateType)
			{
				var templateType = (TemplateIntermediateType)r;

				if (templateType.BaseInterfaces != null &&
					templateType.BaseInterfaces.Length != 0 &&
					target is InterfaceType)
				{
					foreach (var I in templateType.BaseInterfaces)
						if (IsImplicitlyConvertible(I, target))
							return true;
				}
			}

			return false;
		}