|
29 | 29 | import java.util.jar.Manifest;
|
30 | 30 | import java.util.logging.Level;
|
31 | 31 | import java.util.logging.Logger;
|
32 |
| -import java.util.stream.Stream; |
33 | 32 | import java.util.stream.Collectors;
|
| 33 | +import java.util.stream.Stream; |
34 | 34 |
|
| 35 | +import org.eclipse.core.resources.IFile; |
35 | 36 | import org.eclipse.core.resources.IResource;
|
| 37 | +import org.eclipse.core.resources.ResourcesPlugin; |
36 | 38 | import org.eclipse.core.runtime.CoreException;
|
37 | 39 | import org.eclipse.core.runtime.URIUtil;
|
38 | 40 | import org.eclipse.debug.core.sourcelookup.ISourceContainer;
|
|
50 | 52 | import org.eclipse.jdt.core.dom.ASTParser;
|
51 | 53 | import org.eclipse.jdt.core.dom.ASTVisitor;
|
52 | 54 | import org.eclipse.jdt.core.dom.CompilationUnit;
|
53 |
| -import org.eclipse.jdt.core.dom.LambdaExpression; |
54 |
| -import org.eclipse.jdt.core.manipulation.CoreASTProvider; |
55 | 55 | import org.eclipse.jdt.core.dom.IMethodBinding;
|
56 | 56 | import org.eclipse.jdt.core.dom.ITypeBinding;
|
| 57 | +import org.eclipse.jdt.core.dom.LambdaExpression; |
| 58 | +import org.eclipse.jdt.core.manipulation.CoreASTProvider; |
57 | 59 | import org.eclipse.jdt.internal.core.JarPackageFragmentRoot;
|
58 | 60 | import org.eclipse.jdt.launching.IVMInstall;
|
59 | 61 | import org.eclipse.jdt.launching.JavaRuntime;
|
@@ -276,7 +278,13 @@ private CompilationUnit asCompilationUnit(String uri) {
|
276 | 278 | * setEnvironment(String [], String [], String [], boolean)
|
277 | 279 | * and a unit name setUnitName(String).
|
278 | 280 | */
|
279 |
| - parser.setEnvironment(new String[0], new String[0], null, true); |
| 281 | + IFile resource = (IFile) JDTUtils.findResource(JDTUtils.toURI(uri), |
| 282 | + ResourcesPlugin.getWorkspace().getRoot()::findFilesForLocationURI); |
| 283 | + if (resource != null && JdtUtils.isJavaProject(resource.getProject())) { |
| 284 | + parser.setProject(JavaCore.create(resource.getProject())); |
| 285 | + } else { |
| 286 | + parser.setEnvironment(new String[0], new String[0], null, true); |
| 287 | + } |
280 | 288 | parser.setUnitName(Paths.get(filePath).getFileName().toString());
|
281 | 289 | /**
|
282 | 290 | * See the java doc for { @link ASTParser#setSource(char[]) },
|
@@ -492,7 +500,7 @@ public List<MethodInvocation> findMethodInvocations(String uri, int line) {
|
492 | 500 | // Keep consistent with JDI since JDI uses binary class name
|
493 | 501 | invocation.declaringTypeName = binding.getDeclaringClass().getBinaryName();
|
494 | 502 | }
|
495 |
| - invocation.methodGenericSignature = BindingUtils.toSignature(binding, BindingUtils.getMethodName(binding, true)); |
| 503 | + invocation.methodGenericSignature = BindingUtils.toSignature(binding); |
496 | 504 | invocation.methodSignature = Signature.getTypeErasure(invocation.methodGenericSignature);
|
497 | 505 | int startOffset = astNode.getStartPosition();
|
498 | 506 | if (astNode instanceof org.eclipse.jdt.core.dom.MethodInvocation) {
|
|
0 commit comments