private void BuildOperatorTypedArguments() { var method = OperatorResolveResult.UserDefinedOperatorMethod; if (method != null) { for (int i = 0; i < method.TypeArguments.Count; i++) { TypeArguments[i] = new TypeParamExpression(method.TypeParameters[i].Name, null, method.TypeArguments[i]); } } }
private void BuildTypedArguments(Expression expression) { AstNodeCollection <AstType> typedArguments = null; if (expression is IdentifierExpression identifierExpression) { typedArguments = identifierExpression.TypeArguments; } else { if (expression is MemberReferenceExpression memberRefExpression) { typedArguments = memberRefExpression.TypeArguments; } } if (ResolveResult.Member is IMethod method) { TypeArguments = new TypeParamExpression[method.TypeParameters.Count]; if (typedArguments != null && typedArguments.Count == method.TypeParameters.Count) { var list = typedArguments.ToList(); for (int i = 0; i < list.Count; i++) { TypeArguments[i] = new TypeParamExpression(method.TypeParameters[i].Name, list[i], null); } } else { for (int i = 0; i < method.TypeArguments.Count; i++) { TypeArguments[i] = new TypeParamExpression(method.TypeParameters[i].Name, null, method.TypeArguments[i]); } } if (method.DeclaringType != null && method.DeclaringTypeDefinition != null && method.DeclaringTypeDefinition.TypeParameters.Count > 0) { var typeParams = method.DeclaringTypeDefinition.TypeParameters; var typeArgs = method.DeclaringType.TypeArguments; var temp = new TypeParamExpression[typeParams.Count]; for (int i = 0; i < typeParams.Count; i++) { temp[i] = new TypeParamExpression(typeParams[i].Name, null, typeArgs[i], true); } TypeArguments = TypeArguments.Concat(temp).ToArray(); } } }
private void BuildTypedArguments(IMember member) { var typeParams = member.DeclaringTypeDefinition.TypeParameters; var typeArgs = member.DeclaringType.TypeArguments; var temp = new TypeParamExpression[typeParams.Count]; for (int i = 0; i < typeParams.Count; i++) { temp[i] = new TypeParamExpression(typeParams[i].Name, null, typeArgs[i], true); } TypeArguments = temp; }
private void BuildTypedArguments(AstType type) { if (type is SimpleType simpleType) { AstNodeCollection <AstType> typedArguments = simpleType.TypeArguments; IList <ITypeParameter> typeParams = null; if (ResolveResult.Member.DeclaringTypeDefinition != null) { typeParams = ResolveResult.Member.DeclaringTypeDefinition.TypeParameters; } else if (ResolveResult.Member is SpecializedMethod) { typeParams = ((SpecializedMethod)ResolveResult.Member).TypeParameters; } TypeArguments = new TypeParamExpression[typedArguments.Count]; var list = typedArguments.ToList(); for (int i = 0; i < list.Count; i++) { TypeArguments[i] = new TypeParamExpression(typeParams[i].Name, list[i], null); } } }