public static Dictionary <string, List <KeyValuePair <INode, IMethodOrProperty> > > externalMethodsAndProperties(this O2MappedAstData astData, IMethod iMethod) { var externalMethods = new Dictionary <string, List <KeyValuePair <INode, IMethodOrProperty> > >(); // add the current method externalMethods.add(iMethod.DotNetName, new KeyValuePair <INode, IMethodOrProperty>(astData.methodDeclaration(iMethod), iMethod)); var iNodesAdded = new List <INode>(); foreach (var methodCalled in astData.calledINodesReferences(iMethod)) { if (methodCalled is MemberReferenceExpression) { var memberRef = (MemberReferenceExpression)methodCalled; { var methodOrProperty = astData.fromMemberReferenceExpressionGetIMethodOrProperty(memberRef); if (methodOrProperty.notNull()) { externalMethods.add(methodOrProperty.DotNetName, new KeyValuePair <INode, IMethodOrProperty>(memberRef, methodOrProperty)); iNodesAdded.Add(memberRef); } else { externalMethods.add(astData.getTextForINode(memberRef), new KeyValuePair <INode, IMethodOrProperty>(memberRef, null)); } } } } foreach (var mapping in astData.calledIMethods_getMappings(iMethod)) { var iMethodMapping = mapping.Key; var iNodeMapping = mapping.Value; if (iNodesAdded.Contains(iNodeMapping).isFalse()) { if (iNodeMapping is ObjectCreateExpression || ((iNodeMapping is InvocationExpression && (iNodeMapping as InvocationExpression).TargetObject.notNull() && iNodesAdded.Contains((iNodeMapping as InvocationExpression).TargetObject).isFalse()))) { var nodeText = (iMethodMapping.notNull()) ? iMethodMapping.DotNetName : astData.getTextForINode(iNodeMapping); externalMethods.add(nodeText, new KeyValuePair <INode, IMethodOrProperty>(iNodeMapping, iMethodMapping)); } } } return(externalMethods); }
public static List <IMethod> calledIMethods(this O2MappedAstData o2MappedAstData, IMethod iMethod) { return((from mapping in o2MappedAstData.calledIMethods_getMappings(iMethod) select mapping.Key).toList()); }