Example #1
0
        private TypeNode ConvertToClassParameter(TypeNode baseType, TypeNode /*!*/ typeParameter)
        {
            ClassParameter result;

            if (typeParameter is MethodTypeParameter)
            {
                result = new MethodClassParameter();
            }
            else if (typeParameter is TypeParameter)
            {
                result = new ClassParameter
                {
                    DeclaringType = typeParameter.DeclaringType
                };
            }
            else
            {
                return(typeParameter); //give up
            }
            result.SourceContext      = typeParameter.SourceContext;
            result.TypeParameterFlags = ((ITypeParameter)typeParameter).TypeParameterFlags;

            result.Name            = typeParameter.Name;
            result.Namespace       = StandardIds.ClassParameter;
            result.BaseClass       = baseType is Class c ? c : CoreSystemTypes.Object;
            result.DeclaringMember = ((ITypeParameter)typeParameter).DeclaringMember;
            result.DeclaringModule = typeParameter.DeclaringModule;
            result.Flags           = typeParameter.Flags & ~TypeFlags.Interface;

            //InterfaceList constraints = result.Interfaces = new InterfaceList();
            InterfaceList interfaces = typeParameter.Interfaces;

            for (int i = 1, n = interfaces == null ? 0 : interfaces.Count; i < n; i++)
            {
                //^ assert interfaces != null;
                interfaces.Add(this.VisitInterfaceReference(interfaces[i]));
            }
            return(result);
        }
Example #2
0
 public void When(MethodClassParameter param)
 {
 }
    private TypeNode ConvertToClassParameter(TypeNode baseType, TypeNode/*!*/ typeParameter)
    {
        ClassParameter result;
        if (typeParameter is MethodTypeParameter)
        {
            result = new MethodClassParameter();
        }
        else if (typeParameter is TypeParameter)
        {
            result = new ClassParameter();
            result.DeclaringType = typeParameter.DeclaringType;
        }
        else
            return typeParameter; //give up
        result.SourceContext = typeParameter.SourceContext;
        result.TypeParameterFlags = ((ITypeParameter)typeParameter).TypeParameterFlags;
#if ExtendedRuntime
      if (typeParameter.IsUnmanaged) { result.SetIsUnmanaged(); }
      if (typeParameter.IsPointerFree) { result.SetIsPointerFree(); }
#endif
        result.ParameterListIndex = ((ITypeParameter)typeParameter).ParameterListIndex;
        result.Name = typeParameter.Name;
        result.Namespace = StandardIds.ClassParameter;
        result.BaseClass = baseType is Class ? (Class)baseType : CoreSystemTypes.Object;
        result.DeclaringMember = ((ITypeParameter)typeParameter).DeclaringMember;
        result.DeclaringModule = typeParameter.DeclaringModule;
        result.Flags = typeParameter.Flags & ~TypeFlags.Interface;
        InterfaceList constraints = result.Interfaces = new InterfaceList();
        InterfaceList interfaces = typeParameter.Interfaces;
        for (int i = 1, n = interfaces == null ? 0 : interfaces.Count; i < n; i++)
        {
            //^ assert interfaces != null;
            constraints.Add(interfaces[i]);
        }
        this.forwarding[typeParameter.UniqueKey] = result;
        return result;
    }
Example #4
0
 public void OnMethodClassParameter(MethodClassParameter param)
 {
 }