|
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