1212import com .github .javaparser .ast .stmt .BlockStmt ;
1313import com .github .javaparser .ast .type .ReferenceType ;
1414import com .github .javaparser .ast .type .Type ;
15+ import com .github .javaparser .resolution .declarations .ResolvedConstructorDeclaration ;
16+ import com .github .javaparser .resolution .declarations .ResolvedMethodDeclaration ;
1517import com .github .javaparser .resolution .types .ResolvedType ;
1618import com .github .javaparser .symbolsolver .JavaSymbolSolver ;
1719import com .github .javaparser .symbolsolver .resolution .typesolvers .CombinedTypeSolver ;
2729import org .apache .commons .lang3 .tuple .Pair ;
2830
2931import java .io .IOException ;
30- import java .nio .file .Path ;
31- import java .nio .file .Paths ;
32+ import java .nio .file .*;
3233import java .util .*;
3334import java .util .stream .Collectors ;
3435import java .util .stream .IntStream ;
@@ -490,13 +491,14 @@ private static List<CallSite> getCallSites(Optional<BlockStmt> callableBody) {
490491 } else {
491492 returnType = resolveExpression (methodCallExpr );
492493 }
494+ ResolvedMethodDeclaration resolvedMethodDeclaration = methodCallExpr .resolve ();
493495
494496 // resolve arguments of the method call to types
495497 List <String > arguments = methodCallExpr .getArguments ().stream ()
496- .map (arg -> resolveExpression ( arg ) ).collect (Collectors .toList ());
498+ .map (SymbolTable :: resolveExpression ).collect (Collectors .toList ());
497499 // add a new call site object
498500 callSites .add (createCallSite (methodCallExpr , methodCallExpr .getNameAsString (), receiverName , declaringType ,
499- arguments , returnType , isStaticCall , false ));
501+ arguments , returnType , resolvedMethodDeclaration . getSignature (), isStaticCall , false ));
500502 }
501503
502504 for (ObjectCreationExpr objectCreationExpr : callableBody .get ().findAll (ObjectCreationExpr .class )) {
@@ -505,12 +507,15 @@ private static List<CallSite> getCallSites(Optional<BlockStmt> callableBody) {
505507
506508 // resolve arguments of the constructor call to types
507509 List <String > arguments = objectCreationExpr .getArguments ().stream ()
508- .map (arg -> resolveExpression (arg )).collect (Collectors .toList ());
510+ .map (SymbolTable ::resolveExpression ).collect (Collectors .toList ());
511+
512+ ResolvedConstructorDeclaration resolvedConstructorDeclaration = objectCreationExpr .resolve ();
509513
510514 // add a new call site object
511515 callSites .add (createCallSite (objectCreationExpr , "<init>" ,
512516 objectCreationExpr .getScope ().isPresent () ? objectCreationExpr .getScope ().get ().toString () : "" ,
513- instantiatedType , arguments , instantiatedType , false , true ));
517+ instantiatedType , arguments , instantiatedType , resolvedConstructorDeclaration .getSignature (),
518+ false , true ));
514519 }
515520
516521 return callSites ;
@@ -531,13 +536,14 @@ private static List<CallSite> getCallSites(Optional<BlockStmt> callableBody) {
531536 */
532537 private static CallSite createCallSite (Expression callExpr , String calleeName , String receiverExpr ,
533538 String receiverType , List <String > arguments , String returnType ,
534- boolean isStaticCall , boolean isConstructorCall ) {
539+ String calleeSignature , boolean isStaticCall , boolean isConstructorCall ) {
535540 CallSite callSite = new CallSite ();
536541 callSite .setMethodName (calleeName );
537542 callSite .setReceiverExpr (receiverExpr );
538543 callSite .setReceiverType (receiverType );
539544 callSite .setArgumentTypes (arguments );
540545 callSite .setReturnType (returnType );
546+ callSite .setCalleeSignature (calleeSignature );
541547 callSite .setStaticCall (isStaticCall );
542548 callSite .setConstructorCall (isConstructorCall );
543549 if (callExpr .getRange ().isPresent ()) {
0 commit comments