Skip to content

Searching about a java package name fails #191

@cmoulliard

Description

@cmoulliard

Issue

Searching about a java package name fails using as location 11 and query com.todo.app.controller when the java project to be analyzed contains a java file TaskController where there is a line with package com.todo.app.controller`

The problem is related to the code of the existing ReferenceSymbolProvider class as we got a class cast exception

// Code
public class ReferenceSymbolProvider implements SymbolProvider, WithQuery {
    private String query;
    
    @Override
    public List<SymbolInformation> get(SearchMatch match) {
        SymbolKind k = convertSymbolKind((IJavaElement) match.getElement());
        List<SymbolInformation> symbols = new ArrayList<>();
        // For Method Calls we will need to do the local variable trick
        try {
            ReferenceMatch m = (ReferenceMatch) match; // We got a Class cast exception

// Error
!MESSAGE unable to convert for variable: java.lang.ClassCastException: class org.eclipse.jdt.core.search.PackageDeclarationMatch cannot be cast to class org.eclipse.jdt.core.search.ReferenceMatch (org.eclipse.jdt.core.search.PackageDeclarationMatch and org.eclipse.jdt.core.search.ReferenceMatch are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @536856f1)

The class cast exception can be fixed using this code

PackageDeclarationMatch m = (PackageDeclarationMatch)match;

but then the code should be reviewed in order to:

  • Handle properly the class type: PackageDeclarationMatch, ReferencenMatch ?, etc
  • Manage the IPackageFragment part of the class SymbolProvider and method default Location getLocation(IJavaElement element, SearchMatch match) to return the location, range for a package discovered

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugCategorizes issue or PR as related to a bug.priority/backlogHigher priority than priority/awaiting-more-evidence.triage/acceptedIndicates an issue or PR is ready to be actively worked on.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions