20220731lamda表达式中的方法调用识别

psi过滤直接用JavaRecursiveElementVisitor过滤PsiMethodCallExpression会发现只识别到了collect的调用

因为JavaRecursiveElementVisitor的逻辑是当一个节点满足要求后,下一个继续的节点是nextSibing

因此需要增加特殊逻辑,当第一层PsiMethodCallExpression被匹配到后,需要递归在PsiReferenceExpression继续寻找,需要把PsiReferenceExpression+PsiReferenceParameterList中的lamda表达式以及其中的方法调用和方法引用都找出来,这里只写方法调用,方法引用也是一样的套路

 

不知道jetbrains有没有类似的工具类做这种深度搜索,代码太多了懒得看,就先这么写着,附语义树如下

完整代码,更新中

0 Comments
Leave a Reply