Exemple #1
0
        public IEntity GetDefaultMember()
        {
            IType defaultMemberAttribute = _typeSystemServices.Map(typeof(DefaultMemberAttribute));

            foreach (Attribute attribute in _typeDefinition.Attributes)
            {
                IConstructor tag = TypeSystemServices.GetEntity(attribute) as IConstructor;
                if (null != tag)
                {
                    if (defaultMemberAttribute == tag.DeclaringType)
                    {
                        StringLiteralExpression memberName = attribute.Arguments[0] as StringLiteralExpression;
                        if (null != memberName)
                        {
                            List buffer = new List();
                            Resolve(buffer, memberName.Value, EntityType.Any);
                            return(NameResolutionService.GetEntityFromList(buffer));
                        }
                    }
                }
            }
            if (null != BaseType)
            {
                return(BaseType.GetDefaultMember());
            }
            return(null);
        }
 public GeneratorExpressionTrees(string parameter, ReferenceExpression parameterRef, NameResolutionService nameResolutionService, BooCodeBuilder codeBuilder)
 {
     _parameter = parameter;
     _parameterRef = parameterRef;
     _nameResolutionService = nameResolutionService;
     _codeBuilder = codeBuilder;
 }
Exemple #3
0
        public virtual bool Resolve(List targetList, string name, EntityType flags)
        {
            bool found = false;

            // Try to resolve name as a generic parameter
            if (NameResolutionService.IsFlagSet(flags, EntityType.Type))
            {
                foreach (GenericParameterDeclaration gpd in _typeDefinition.GenericParameters)
                {
                    if (gpd.Name == name)
                    {
                        targetList.AddUnique(gpd.Entity);
                        return(true);
                    }
                }
            }

            // Try to resolve name as a member
            foreach (IEntity entity in GetMembers())
            {
                if (entity.Name == name && NameResolutionService.IsFlagSet(flags, entity.EntityType))
                {
                    targetList.AddUnique(entity);
                    found = true;
                }
            }

            return(found);
        }
Exemple #4
0
 public ModuleEntity(NameResolutionService nameResolutionService,
                     TypeSystemServices typeSystemServices,
                     Module module)
 {
     _nameResolutionService = nameResolutionService;
     _typeSystemServices    = typeSystemServices;
     _module    = module;
     _namespace = SafeNamespace(module);
 }
Exemple #5
0
 public bool Resolve(List targetList, string name, EntityType flags)
 {
     if (name == _alias && NameResolutionService.IsFlagSet(flags, _subject.EntityType))
     {
         targetList.Add(_subject);
         return(true);
     }
     return(false);
 }
Exemple #6
0
 public ModuleEntity(NameResolutionService nameResolutionService,
     TypeSystemServices typeSystemServices,
     Module module)
 {
     _nameResolutionService = nameResolutionService;
     _typeSystemServices = typeSystemServices;
     _module = module;
     _namespace = SafeNamespace(module);
 }
Exemple #7
0
        public virtual bool Resolve(List targetList, string name, EntityType flags)
        {
            IEntity element = (IEntity)_children[name];

            if (null != element && NameResolutionService.IsFlagSet(flags, element.EntityType))
            {
                targetList.Add(element);
                return(true);
            }
            return(false);
        }
Exemple #8
0
 private IMethod FindConversionOperator(string name, IType fromType, IType toType, IEnumerable <IEntity> candidates)
 {
     foreach (IMethod method in NameResolutionService.Select <IMethod>(candidates, name, EntityType.Method))
     {
         if (IsConversionOperator(method, fromType, toType))
         {
             return(method);
         }
     }
     return(null);
 }
Exemple #9
0
        public virtual bool Resolve(List targetList, string name, EntityType flags)
        {
            bool found = false;

            foreach (IEntity entity in GetMembers())
            {
                if (entity.Name == name && NameResolutionService.IsFlagSet(flags, entity.EntityType))
                {
                    targetList.AddUnique(entity);
                    found = true;
                }
            }

            return(found);
        }
Exemple #10
0
        public override bool Resolve(List targetList, string name, EntityType flags)
        {
            // Try to resolve name as a generic parameter
            if (NameResolutionService.IsFlagSet(flags, EntityType.Type))
            {
                IGenericParameter gp = GetGenericParameter(name);
                if (gp != null)
                {
                    targetList.Add(gp);
                    return(true);
                }
            }

            return(base.Resolve(targetList, name, flags));
        }
Exemple #11
0
        public bool Resolve(List targetList, string name, EntityType flags)
        {
            Declaration found = _declarations[name];

            if (null != found)
            {
                IEntity element = TypeSystemServices.GetEntity(found);
                if (NameResolutionService.IsFlagSet(flags, element.EntityType))
                {
                    targetList.Add(element);
                    return(true);
                }
            }
            return(false);
        }
Exemple #12
0
        public override bool Resolve(List targetList, string name, EntityType flags)
        {
            // Try to resolve name as a generic parameter
            if (NameResolutionService.IsFlagSet(flags, EntityType.Type))
            {
                foreach (GenericParameterDeclaration gpd in Method.GenericParameters)
                {
                    if (gpd.Name == name)
                    {
                        targetList.AddUnique(gpd.Entity);
                        return(true);
                    }
                }
            }

            return(base.Resolve(targetList, name, flags));
        }
Exemple #13
0
        private IEntity[] FindExtension(IType fromType, string name)
        {
            IEntity extension = NameResolutionService.ResolveExtension(fromType, name);

            if (null == extension)
            {
                return(Ambiguous.NoEntities);
            }

            var a = extension as Ambiguous;

            if (null != a)
            {
                return(a.Entities);
            }
            return(new[] { extension });
        }
Exemple #14
0
        public IEntity GetDefaultMember()
        {
            IType defaultMemberAttribute = _typeSystemServices.Map(Types.DefaultMemberAttribute);

            foreach (Attribute attribute in _typeDefinition.Attributes)
            {
                IConstructor tag = TypeSystemServices.GetEntity(attribute) as IConstructor;
                if (null != tag)
                {
                    if (defaultMemberAttribute == tag.DeclaringType)
                    {
                        StringLiteralExpression memberName = attribute.Arguments[0] as StringLiteralExpression;
                        if (null != memberName)
                        {
                            List buffer = new List();
                            Resolve(buffer, memberName.Value, EntityType.Any);
                            return(NameResolutionService.GetEntityFromList(buffer));
                        }
                    }
                }
            }
            if (_typeDefinition.BaseTypes.Count > 0)
            {
                List buffer = new List();

                foreach (TypeReference baseType in _typeDefinition.BaseTypes)
                {
                    IType   tag           = TypeSystemServices.GetType(baseType);
                    IEntity defaultMember = tag.GetDefaultMember();
                    if (defaultMember != null)
                    {
                        if (tag.IsInterface)
                        {
                            buffer.AddUnique(defaultMember);
                        }
                        else                         //non-interface base class trumps interfaces
                        {
                            return(defaultMember);
                        }
                    }
                }
                return(NameResolutionService.GetEntityFromList(buffer));
            }
            return(null);
        }
Exemple #15
0
        public virtual bool Resolve(List targetList, string name, EntityType flags)
        {
            bool found = false;

            foreach (IEntity member in GetMembers())
            {
                if (!NameResolutionService.IsFlagSet(flags, member.EntityType))
                {
                    continue;
                }

                if (member.Name == name)
                {
                    targetList.AddUnique(member);
                    found = true;
                }
            }

            if (IsInterface)
            {
                if (_typeSystemServices.ObjectType.Resolve(targetList, name, flags))
                {
                    found = true;
                }

                foreach (IType baseInterface in GetInterfaces())
                {
                    found |= baseInterface.Resolve(targetList, name, flags);
                }
            }
            else
            {
                if (!found || TypeSystemServices.ContainsMethodsOnly(targetList))
                {
                    IType baseType = BaseType;
                    if (null != baseType)
                    {
                        found |= baseType.Resolve(targetList, name, flags);
                    }
                }
            }
            return(found);
        }
Exemple #16
0
        public CompilerContext(CompilerParameters options, CompileUnit unit)
        {
            if (null == options)
            {
                throw new ArgumentNullException("options");
            }
            if (null == unit)
            {
                throw new ArgumentNullException("unit");
            }

            _unit                  = unit;
            _errors                = new CompilerErrorCollection();
            _warnings              = new CompilerWarningCollection();
            _assemblyReferences    = options.References;
            _parameters            = options;
            _nameResolutionService = new TypeSystem.NameResolutionService(this);
            _traceSwitch           = _parameters.TraceSwitch;
            _properties            = new Hash();
        }
Exemple #17
0
        bool ResolveModuleMember(Boo.Lang.List targetList, string name, EntityType flags)
        {
            bool found = false;

            foreach (TypeMember member in _module.Members)
            {
                if (name != member.Name)
                {
                    continue;
                }

                IEntity entity = _typeSystemServices.GetMemberEntity(member);
                if (NameResolutionService.IsFlagSet(flags, entity.EntityType))
                {
                    targetList.Add(entity);
                    found = true;
                }
            }
            return(found);
        }
Exemple #18
0
        public virtual bool Resolve(List targetList, string name, EntityType flags)
        {
            if (NameResolutionService.IsFlagSet(flags, EntityType.Local))
            {
                Local local = ResolveLocal(name);
                if (null != local)
                {
                    targetList.Add(TypeSystemServices.GetEntity(local));
                    return(true);
                }
            }

            if (NameResolutionService.IsFlagSet(flags, EntityType.Parameter))
            {
                ParameterDeclaration parameter = ResolveParameter(name);
                if (null != parameter)
                {
                    targetList.Add(TypeSystemServices.GetEntity(parameter));
                    return(true);
                }
            }

            return(false);
        }
 public RunnableParser(NameResolutionService nameResolutionService)
 {
     this.nameResolutionService = nameResolutionService;
 }
Exemple #20
0
        public CompilerContext(CompilerParameters options, CompileUnit unit)
        {
            if (null == options) throw new ArgumentNullException("options");
            if (null == unit) throw new ArgumentNullException("unit");

            _unit = unit;
            _errors = new CompilerErrorCollection();
            _warnings = new CompilerWarningCollection();
            _assemblyReferences = options.References;
            _parameters = options;
            if (_parameters.Debug && !_parameters.Defines.ContainsKey("DEBUG"))
                _parameters.Defines.Add("DEBUG", null);
            _nameResolutionService = new TypeSystem.NameResolutionService(this);
            _properties = new Hash();
        }