Classes in SFDX subdirectories cannot be resolved

Issue #1511 resolved
Ilija Pavlic created an issue

When classes are stored in subdirectories of a SFDX project, Illuminated Cloud is not able to resolve them. They are colored red for “Cannot resolve symbol”, and their methods cannot be autocompleted. This is true even after rebuilding a full symbol table. Illuminated Cloud is able to autocomplete their names, it knows they exist, but can’t figure out how to use them.

Comments (6)

  1. Scott Wells repo owner

    Hi, Ilija. The most common reason for this is that the classes are not being stored in a formal source directory. Can you provide your .iml file for this project and tell me the project-relative path of one of the classes which is not being resolve properly?

  2. Ilija Pavlic reporter

    The class might be in force-app/main/default/classes/api

    The .iml looks like this:

    <?xml version="1.0" encoding="UTF-8"?>
    <module type="IlluminatedCloud" version="4">
      <component name="FacetManager">
        <facet type="IlluminatedCloud" name="Illuminated Cloud">
          <configuration>
            <option name="connectionName" value="connection-name@example.com" />
            <option name="connectionType" value="SFDX" />
            <option name="moduleContents">
              <ModuleContents>
                <option name="contentSelectionType" value="SELECTED" />
              </ModuleContents>
            </option>
          </configuration>
        </facet>
      </component>
      <component name="NewModuleRootManager">
        <content url="file://$MODULE_DIR$">
          <sourceFolder url="file://$MODULE_DIR$" isTestSource="false" />
          <excludeFolder url="file://$MODULE_DIR$/.sfdx/tools/sobjects" />
          <excludeFolder url="file://$MODULE_DIR$/.sfdx/typings" />
          <excludeFolder url="file://$MODULE_DIR$/.tmp" />
          <excludeFolder url="file://$MODULE_DIR$/temp" />
          <excludeFolder url="file://$MODULE_DIR$/tmp" />
        </content>
        <orderEntry type="jdk" jdkName="IlluminatedCloud (projectname/connection-name@example.com)" jdkType="IlluminatedCloud" />
        <orderEntry type="sourceFolder" forTests="false" />
      </component>
    </module>
    
  3. Scott Wells repo owner

    It looks like you have the root directory selected as a source root. You might remove that and add force-app/main/default as well as any other path that contains source files, e.g., force-app/test/default if you're segregating production source from test source.

    Let me know if that doesn't help.

  4. Ilija Pavlic reporter

    Replaced <sourceFolder url="file://$MODULE_DIR$" isTestSource="false" /> with <sourceFolder url="file://$MODULE_DIR$/force-app/main/default" isTestSource="false" />. Generated full offline symbol table. Same issue.

  5. Scott Wells repo owner

    Okay, I'll need to see your idea.log to see what's going on. Can you get that using Help>Show Log in Explorer/Finder/Files and either attach it here or email it to support@illuminatedcloud.com?

    One other thing to check as you do so...what version of the base IDE are you running? If it's not up-to-date, please update it as there have been breaking plugin SDK changes that could be contributing to the issue. If you're definitely up-to-date and the problem is still occurring, send me the log as requested above.

  6. Log in to comment