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); }
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; }
public void OnMethodClassParameter(MethodClassParameter param) { }