public static O2MethodStream map_IMethod_Dependencies(this O2MethodStream o2MethodStream, IMethod iMethod) { if (O2MethodStream_ExtensionMethods.O2MethodStreamCache.hasKey(iMethod)) { "Found IMethod in O2MethodStreamCache(merging its data with the current o2MethodStream): {0}".debug(iMethod.DotNetName); o2MethodStream.add_O2MethodStreamMappings(O2MethodStream_ExtensionMethods.O2MethodStreamCache[iMethod]); return(o2MethodStream); } // map the methods called INode methodOrCtorINode = o2MethodStream.O2MappedAstData.methodDeclaration(iMethod); if (methodOrCtorINode.isNull()) { methodOrCtorINode = o2MethodStream.O2MappedAstData.constructorDeclaration(iMethod); } if (methodOrCtorINode.notNull()) { o2MethodStream.map_MemberReferenceExpressions(methodOrCtorINode) .map_ObjectCreateExpressions(methodOrCtorINode) .map_InvocationExpressions(methodOrCtorINode) .map_Expressions(methodOrCtorINode.iNodes <INode, IdentifierExpression>()); // this is not working (the idea is to map the chained ctors /* * * if (methodOrCtorINode is ConstructorDeclaration) * { * var constructorDeclaration = (ConstructorDeclaration)methodOrCtorINode; * if (constructorDeclaration.ConstructorInitializer.notNull()) * { * //var iMethodOfConstructorInitializer = o2MethodStream.fromExpressionGetIMethod(constructorDeclaration.ConstructorInitializer); * //if (iMethodOfConstructorInitializer.notNull()) * // o2MethodStream.add_IMethod(iMethodOfConstructorInitializer); * } * } */ } /* var methodDeclaration = o2MethodStream.O2MappedAstData.methodDeclaration(iMethod); * if (methodDeclaration != null) * { * o2MethodStream * .map_MemberReferenceExpressions(methodDeclaration) * .map_ObjectCreateExpressions(methodDeclaration) * .map_InvocationExpressions(methodDeclaration) * .map_Expressions(methodDeclaration.iNodes<INode, IdentifierExpression>()); * }*/ // map the external classes o2MethodStream.map_ExternalClasses(iMethod); return(o2MethodStream); }