コード例 #1
0
ファイル: GenericsServices.cs プロジェクト: boo/boo-lang
 public GenericConstructionChecker(TypeSystemServices tss, Node constructionNode, IType[] typeArguments, CompilerErrorCollection errorCollection)
 {
     _tss = tss;
     _constructionNode = constructionNode;
     _typeArguments = typeArguments;
     _errors = errorCollection;
 }
コード例 #2
0
ファイル: GenericsServices.cs プロジェクト: w4x/boolangstudio
 public GenericConstructionChecker(TypeSystemServices tss, Node constructionNode, TypeReferenceCollection argumentNodes, CompilerErrorCollection errorCollection)
 {
     _tss = tss;
     _constructionNode = constructionNode;
     _argumentNodes = argumentNodes;
     _errors = errorCollection;
 }
コード例 #3
0
ファイル: ArrayType.cs プロジェクト: boo/boo-lang
 public ArrayType(TypeSystemServices tagManager, IType elementType, int rank)
 {
     _array = tagManager.ArrayType;
     _elementType = elementType;
     _rank = rank;
     _enumerable = tagManager.IEnumerableGenericType;
 }
コード例 #4
0
ファイル: GenericMapping.cs プロジェクト: boo/boo-lang
 /// <summary>
 /// Constrcuts a new GenericMapping for a specific mapping of generic parameters to type arguments.
 /// </summary>
 /// <param name="parameters">The generic parameters that should be mapped.</param>
 /// <param name="arguments">The type arguments to map generic parameters to.</param>
 protected GenericMapping(TypeSystemServices tss, IGenericParameter[] parameters, IType[] arguments)
 {
     _tss = tss;
     for (int i = 0; i < parameters.Length; i++)
     {
         _map.Add(parameters[i], arguments[i]);
     }
 }
コード例 #5
0
 public ExternalGenericParameter(TypeSystemServices tss, Type type)
     : base(tss, type)
 {
     if (type.DeclaringMethod != null)
     {
         _declaringMethod = (IMethod)tss.Map(type.DeclaringMethod);
     }
 }
コード例 #6
0
ファイル: NamespaceEntity.cs プロジェクト: boo/boo-lang
        public NamespaceEntity(INamespace parent, TypeSystemServices tagManager, string name)
        {
            _parent = parent;
            _typeSystemServices = tagManager;
            _name = name;
			_assemblies = new Dictionary<Assembly, Dictionary<string, List<Type>>>(AssemblyEqualityComparer.Default);
            _childrenNamespaces = new Dictionary<string, NamespaceEntity>();
            _internalModules = new List<ModuleEntity>();
            _externalModules = new List<ExternalType>();
コード例 #7
0
ファイル: ModuleEntity.cs プロジェクト: boo/boo-lang
 public ModuleEntity(NameResolutionService nameResolutionService,
     TypeSystemServices typeSystemServices,
     Module module)
 {
     _nameResolutionService = nameResolutionService;
     _typeSystemServices = typeSystemServices;
     _module = module;
     _namespace = SafeNamespace(module);
 }
コード例 #8
0
        public GenericConstructedMethod(TypeSystemServices tss, IMethod definition, IType[] arguments)
        {
            _tss = tss;
            _definition = definition;
            _genericArguments = arguments;

            _genericMapping = new GenericMapping(tss, this, arguments);

            _fullyConstructed = IsFullyConstructed();
        }
コード例 #9
0
        public InternalGenericParameter(TypeSystemServices tss, GenericParameterDeclaration declaration)
        {
            _tss = tss;
            _declaration = declaration;

            // Determine and remember declaring type and declaring method (if applicable)
            _declaringMethod = declaration.ParentNode as Method;
            _declaringType = (
                _declaringMethod == null ?
                declaration.ParentNode as TypeDefinition : _declaringMethod.DeclaringType);
        }
コード例 #10
0
ファイル: AnonymousCallableType.cs プロジェクト: boo/boo-lang
 internal AnonymousCallableType(TypeSystemServices services, CallableSignature signature)
 {
     if (null == services)
     {
         throw new ArgumentNullException("services");
     }
     if (null == signature)
     {
         throw new ArgumentNullException("signature");
     }
     _typeSystemServices = services;
     _signature = signature;
 }
コード例 #11
0
ファイル: InternalMethod.cs プロジェクト: w4x/boolangstudio
 internal InternalMethod(TypeSystemServices typeSystemServices, Method method)
 {
     _typeSystemServices = typeSystemServices;
     _method = method;
     if (method.NodeType != NodeType.Constructor && method.NodeType != NodeType.Destructor)
     {
         if (null == _method.ReturnType)
         {
             IType returnType = _method.DeclaringType.NodeType == NodeType.ClassDefinition
                 ? Unknown.Default
                 : (IType)_typeSystemServices.VoidType;
             _method.ReturnType = _typeSystemServices.CodeBuilder.CreateTypeReference(method.LexicalInfo, returnType);
         }
     }
 }
コード例 #12
0
 public ReferenceExpression CreateReference(ParameterDeclaration parameter)
 {
     return(CreateReference((InternalParameter)TypeSystemServices.GetEntity(parameter)));
 }
コード例 #13
0
 public ReferenceExpression CreateReference(LexicalInfo li, System.Type type)
 {
     return(CreateReference(li, TypeSystemServices.Map(type)));
 }
コード例 #14
0
 public TypeReference CreateTypeReference(Type type)
 {
     return(CreateTypeReference(TypeSystemServices.Map(type)));
 }
コード例 #15
0
 public InternalGenericParameter(TypeSystemServices tss, GenericParameterDeclaration declaration, AbstractInternalType declaringType, int position)
     : this(tss, declaration, position)
 {
     _declaringType = declaringType;
 }
コード例 #16
0
ファイル: ExternalParameter.cs プロジェクト: boo/boo-lang
 public ExternalParameter(TypeSystemServices service, ParameterInfo parameter)
 {
     _typeSystemServices = service;
     _parameter = parameter;
 }
コード例 #17
0
 public InternalProperty(TypeSystemServices tagManager, Property property)
 {
     _typeSystemServices = tagManager;
     _property           = property;
 }
コード例 #18
0
ファイル: ExternalConstructor.cs プロジェクト: codehaus/boo
 public ExternalConstructor(TypeSystemServices manager, ConstructorInfo ci) : base(manager, ci)
 {
 }
コード例 #19
0
ファイル: ArrayType.cs プロジェクト: boo/boo-lang
 public ArrayType(TypeSystemServices tagManager, IType elementType)
     : this(tagManager, elementType, 1)
 {
 }
コード例 #20
0
ファイル: InternalEvent.cs プロジェクト: w4x/boolangstudio
 public InternalEvent(TypeSystemServices tagManager, Event event_)
 {
     _event = event_;
 }
コード例 #21
0
 public AbstractExternalGenericInfo(TypeSystemServices tss)
 {
     _tss = tss;
 }
コード例 #22
0
ファイル: ExternalMethod.cs プロジェクト: codehaus/boo
 internal ExternalMethod(TypeSystemServices manager, MethodBase mi)
 {
     _typeSystemServices = manager;
     _mi = mi;
 }
コード例 #23
0
ファイル: AsyncHelper.cs プロジェクト: weimingtom/boo
 private static IMethod GetNoArgsNoVoid(IEnumerable <IEntity> value, TypeSystemServices tss)
 {
     return(value.Cast <IMethod>().SingleOrDefault(m =>
                                                   ((m.GetParameters().Length == 0) || (m.IsExtension && m.GetParameters().Length == 1)) &&
                                                   m.ReturnType != tss.VoidType));
 }
コード例 #24
0
ファイル: AsyncHelper.cs プロジェクト: weimingtom/boo
 private static IMethod GetNoArgs(IEnumerable <IEntity> value, TypeSystemServices tss)
 {
     return(value.Cast <IMethod>().SingleOrDefault(m => m.GetParameters().Length == 0));
 }
コード例 #25
0
 public InternalGenericParameter(TypeSystemServices tss, GenericParameterDeclaration declaration, InternalMethod declaringMethod, int position)
     : this(tss, declaration, position)
 {
     _declaringMethod = declaringMethod;
 }
コード例 #26
0
        private int CalculateArgumentScore(IType parameterType, IType argumentType)
        {
            if (parameterType == argumentType || (TypeSystemServices.IsSystemObject(argumentType) && TypeSystemServices.IsSystemObject(parameterType)))
            {
                return(parameterType is ICallableType ? CallableExactMatchScore : ExactMatchScore);
            }

            if (TypeCompatibilityRules.IsAssignableFrom(parameterType, argumentType))
            {
                var callableType = parameterType as ICallableType;
                var callableArg  = argumentType as ICallableType;
                if (callableType != null && callableArg != null)
                {
                    return(CalculateCallableScore(callableType, callableArg));
                }
                return(UpCastScore);
            }

            if (TypeSystemServices.FindImplicitConversionOperator(argumentType, parameterType) != null)
            {
                return(ImplicitConversionScore);
            }

            if (TypeSystemServices.CanBeReachedByPromotion(parameterType, argumentType))
            {
                return(IsWideningPromotion(parameterType, argumentType) ? WideningPromotion : NarrowingPromotion);
            }

            if (MyDowncastPermissions().CanBeReachedByDowncast(parameterType, argumentType))
            {
                return(DowncastScore);
            }

            return(-1);
        }
コード例 #27
0
ファイル: InternalClass.cs プロジェクト: codehaus/boo
 internal InternalClass(TypeSystemServices manager, TypeDefinition typeDefinition) :
     base(manager, typeDefinition)
 {
 }
コード例 #28
0
ファイル: InternalEnum.cs プロジェクト: boo/boo-lang
 internal InternalEnum(TypeSystemServices tagManager, EnumDefinition enumDefinition)
     : base(tagManager, enumDefinition)
 {
 }
コード例 #29
0
ファイル: ExternalType.cs プロジェクト: boo/boo-lang
 internal ExternalType(TypeSystemServices tss, Type type)
 {
     if (null == type) throw new ArgumentException("type");
     _typeSystemServices = tss;
     _type = type;
 }
コード例 #30
0
ファイル: InternalProperty.cs プロジェクト: w4x/boolangstudio
 public InternalProperty(TypeSystemServices typeSystemServices, Property property)
 {
     _typeSystemServices = typeSystemServices;
     _property = property;
 }
コード例 #31
0
ファイル: DeclarationsNamespace.cs プロジェクト: boo/boo-lang
 public DeclarationsNamespace(INamespace parent, TypeSystemServices tagManager, DeclarationCollection declarations)
 {
     _parent = parent;
     _declarations = declarations;
 }
コード例 #32
0
ファイル: InternalCallableType.cs プロジェクト: codehaus/boo
 internal InternalCallableType(TypeSystemServices typeSystemServices, TypeDefinition typeDefinition) :
     base(typeSystemServices, typeDefinition)
 {
 }
コード例 #33
0
ファイル: ExternalCallableType.cs プロジェクト: codehaus/boo
 internal ExternalCallableType(TypeSystemServices typeSystemServices, Type type) : base(typeSystemServices, type)
 {
     _invoke = typeSystemServices.Map(type.GetMethod("Invoke"));
 }
コード例 #34
0
ファイル: GenericMapping.cs プロジェクト: boo/boo-lang
 /// <summary>
 /// Constructs a new generic mapping between a generic method and one of its constructed methods.
 /// </summary>
 public GenericMapping(TypeSystemServices tss, IMethod constructedMethod, IType[] arguments)
     : this(tss, constructedMethod.ConstructedInfo.GenericDefinition.GenericInfo.GenericParameters, arguments)
 {
     _constructedOwner = constructedMethod;
     _genericSource = constructedMethod.ConstructedInfo.GenericDefinition;
 }
コード例 #35
0
 public MethodInvocationExpression CreateMethodInvocation(MethodInfo staticMethod, Expression arg0, Expression arg1)
 {
     return(CreateMethodInvocation(TypeSystemServices.Map(staticMethod), arg0, arg1));
 }
コード例 #36
0
 public InternalGenericMethod(TypeSystemServices tss, Method method)
     : base(tss, method)
 {
 }
コード例 #37
0
 public TypeReference CreateTypeReference(LexicalInfo li, Type type)
 {
     return(CreateTypeReference(li, TypeSystemServices.Map(type)));
 }
コード例 #38
0
 public ExternalGenericMethodDefinitionInfo(TypeSystemServices tss, ExternalMethod method) :     base(tss)
 {
     _method = method;
 }
コード例 #39
0
 public BinaryExpression CreateAssignment(Expression lhs, Expression rhs)
 {
     return(CreateBoundBinaryExpression(TypeSystemServices.GetExpressionType(lhs), BinaryOperatorType.Assign, lhs, rhs));
 }
コード例 #40
0
 internal InternalInterface(TypeSystemServices manager, TypeDefinition typeDefinition)
     : base(manager, typeDefinition)
 {
 }
コード例 #41
0
 protected IType ArgumentType(Expression e)
 {
     return(TypeSystemServices.GetExpressionType(e));
 }
コード例 #42
0
ファイル: InternalCallableType.cs プロジェクト: boo/boo-lang
 internal InternalCallableType(TypeSystemServices typeSystemServices, TypeDefinition typeDefinition)
     : base(typeSystemServices, typeDefinition)
 {
 }
コード例 #43
0
        public InternalConstructor(TypeSystemServices typeSystemServices,
		                           Constructor constructor)
            : base(typeSystemServices, constructor)
        {
        }
コード例 #44
0
 public ExternalEntity(TypeSystemServices typeSystemServices, T memberInfo)
 {
     _typeSystemServices = typeSystemServices;
     _memberInfo         = memberInfo;
 }
コード例 #45
0
ファイル: ExternalParameter.cs プロジェクト: codehaus/boo
 public ExternalParameter(TypeSystemServices service, ParameterInfo parameter)
 {
     _typeSystemServices = service;
     _parameter          = parameter;
 }
コード例 #46
0
 public InternalEnumMember(TypeSystemServices tagManager, EnumMember member)
 {
     _member = member;
 }
コード例 #47
0
 public ExternalConstructor(TypeSystemServices manager, ConstructorInfo ci)
     : base(manager, ci)
 {
 }
コード例 #48
0
ファイル: TypeSystemServices.cs プロジェクト: boo/boo-lang
 internal VoidTypeImpl(TypeSystemServices typeSystemServices)
     : base(typeSystemServices, Types.Void)
 {
 }
コード例 #49
0
ファイル: AbstractInternalType.cs プロジェクト: codehaus/boo
 protected AbstractInternalType(TypeSystemServices typeSystemServices, TypeDefinition typeDefinition)
 {
     _typeSystemServices = typeSystemServices;
     _typeDefinition     = typeDefinition;
 }
コード例 #50
0
 public InternalGenericParameter(TypeSystemServices tss, GenericParameterDeclaration declaration, int position)
     : this(tss, declaration)
 {
     _position = position;
 }
コード例 #51
0
 internal InternalEnum(TypeSystemServices tagManager, EnumDefinition enumDefinition) :
     base(tagManager, enumDefinition)
 {
 }
コード例 #52
0
 public RaiseStatement RaiseException(LexicalInfo lexicalInfo, IConstructor exceptionConstructor, params Expression[] args)
 {
     Debug.Assert(TypeSystemServices.IsValidException(exceptionConstructor.DeclaringType));
     return(new RaiseStatement(lexicalInfo, CreateConstructorInvocation(lexicalInfo, exceptionConstructor, args)));
 }
コード例 #53
0
ファイル: DeclarationsNamespace.cs プロジェクト: boo/boo-lang
 public DeclarationsNamespace(INamespace parent, TypeSystemServices tagManager, Declaration declaration)
 {
     _parent = parent;
     _declarations = new DeclarationCollection();
     _declarations.Add(declaration);
 }
コード例 #54
0
 public Expression CreateTypeofExpression(System.Type type)
 {
     return(CreateTypeofExpression(TypeSystemServices.Map(type)));
 }
コード例 #55
0
 public ExternalConstructedTypeInfo(TypeSystemServices tss, ExternalType type)
 {
     _type = type;
     _tss  = tss;
 }
コード例 #56
0
 public MethodInvocationExpression CreateMethodInvocation(Expression target, MethodInfo method)
 {
     return(CreateMethodInvocation(target, TypeSystemServices.Map(method)));
 }
コード例 #57
0
ファイル: ExternalCallableType.cs プロジェクト: boo/boo-lang
 internal ExternalCallableType(TypeSystemServices typeSystemServices, Type type)
     : base(typeSystemServices, type)
 {
     _invoke = typeSystemServices.Map(type.GetMethod("Invoke"));
 }
コード例 #58
0
 public ExternalConstructedMethodInfo(TypeSystemServices tss, ExternalMethod method)
 {
     _method = method;
     _tss    = tss;
 }
コード例 #59
0
 public ExternalConstructedTypeInfo(TypeSystemServices tss, ExternalType type)
 {
     _type = type;
     _tss = tss;
 }
コード例 #60
0
 public ExternalGenericTypeInfo(TypeSystemServices tss, ExternalType type) : base(tss)
 {
     _type = type;
 }