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; }
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); }
public ModuleEntity(NameResolutionService nameResolutionService, TypeSystemServices typeSystemServices, Module module) { _nameResolutionService = nameResolutionService; _typeSystemServices = typeSystemServices; _module = module; _namespace = SafeNamespace(module); }
public bool Resolve(List targetList, string name, EntityType flags) { if (name == _alias && NameResolutionService.IsFlagSet(flags, _subject.EntityType)) { targetList.Add(_subject); return(true); } return(false); }
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); }
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); }
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); }
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)); }
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); }
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)); }
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 }); }
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); }
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); }
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(); }
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); }
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; }
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(); }