public override AstNode VisitParameterDeclaration(ParameterDeclaration parameterDeclaration, ICecilArgumentsResolver argumentsResolver) { parameterDeclaration.Type.AcceptVisitor(this, argumentsResolver); var parameterReference = parameterDeclaration.Annotation <ParameterReference>(); if (parameterReference != null) { var parameterType = parameterReference.ParameterType; var genericTypeOrSelf = parameterType.GetGenericTypeOrSelfReference(); if (genericTypeOrSelf.IsGeneric()) { if (genericTypeOrSelf.IsGenericInstance) { ResolveGenericInstance(genericTypeOrSelf, argumentsResolver); return(parameterDeclaration); } var pair = argumentsResolver.ResolvePair(genericTypeOrSelf.ToString()); TypeReference typeReference = pair.TypeReference; if (parameterType.IsByReference) { Type type = pair.Type.MakeByRefType(); typeReference = new TypeReference(string.Empty, type.FullName, typeReference.Module, typeReference.Scope); } parameterReference.ParameterType = typeReference; } } return(parameterDeclaration); }
public void VisitParameterDeclaration(ParameterDeclaration parameterDeclaration) { StartNode(parameterDeclaration); WriteAttributes(parameterDeclaration.Attributes); if (!string.IsNullOrEmpty(parameterDeclaration.Name)) { parameterDeclaration.NameToken.AcceptVisitor(this); } if (parameterDeclaration.Annotation<OptionalParameterNote> () != null) { WriteToken ("?", Roles.Attribute); } if (!parameterDeclaration.Type.IsNull) { WriteToken (Roles.Colon); Space(); parameterDeclaration.Type.AcceptVisitor(this); } if (!parameterDeclaration.DefaultExpression.IsNull) { Space(policy.SpaceAroundAssignment); WriteToken(Roles.Assign); Space(policy.SpaceAroundAssignment); parameterDeclaration.DefaultExpression.AcceptVisitor(this); } EndNode(parameterDeclaration); }
public void VisitParameterDeclaration(ParameterDeclaration parameterDeclaration) { StartNode(parameterDeclaration); WriteAttributes(parameterDeclaration.Attributes); /* switch (parameterDeclaration.ParameterModifier) { case ParameterModifier.Ref: WriteKeyword(ParameterDeclaration.RefModifierRole); break; case ParameterModifier.Out: WriteKeyword(ParameterDeclaration.OutModifierRole); break; case ParameterModifier.Params: WriteKeyword(ParameterDeclaration.ParamsModifierRole); break; case ParameterModifier.This: WriteKeyword(ParameterDeclaration.ThisModifierRole); break; }*/ if (!string.IsNullOrEmpty(parameterDeclaration.Name)) { WriteIdentifier(parameterDeclaration.NameToken); } if (parameterDeclaration.Annotation<OptionalParameterNote>() != null) { WriteToken("?", Roles.Attribute); } if (!parameterDeclaration.Type.IsNull) { WriteToken(Roles.Colon); Space(); parameterDeclaration.Type.AcceptVisitor(this); } if (!parameterDeclaration.DefaultExpression.IsNull) { Space(policy.SpaceAroundAssignment); WriteToken(Roles.Assign); Space(policy.SpaceAroundAssignment); parameterDeclaration.DefaultExpression.AcceptVisitor(this); } EndNode(parameterDeclaration); }
internal static Type GetActualType(this ParameterDeclaration paremeterDefinition) { var paremeterReference = paremeterDefinition.Annotation <ParameterReference>(); return(paremeterReference.ParameterType.GetActualType()); }