release notes

Post date: Mar 08, 2021 6:38:37 PM

  • Issue 1832 - A whole swath of fixes for issues found when creating an Illuminated Cloud 2 project from NPSP (Salesforce Non-Profit Starter Pack) metadata. Note that this project is somewhat of a strange hybrid of a Salesforce DX source format project–it includes an sfdx-project.json file and its documents use file type-specific extensions instead of .document–and a traditional metadata format project–all other XML metadata has the metadata type-specific extension, e.g., .object instead of .object-meta.xml, and there is no metadata decomposition.

    • As a result, a few special provisions are required to work with such a project including:

      • Designating the scratch org (if using a scratch org) as Use deploy/retrieve/delete instead of push/pull.

      • Setting up namespace translation between npsp and the project connection's actual namespace if not using npsp.

      • Adding a new clause to the sfdx-project.json file (as described below) to hint to Illuminated Cloud 2 that the files are stored in metadata format and not source format in spite of the presence of an sfdx-project.json file.

      • While this update fixes many of the found issues, it doesn't (yet) address all of them. In particular there is still no support for dynamic Visualforce references in Apex, nor are references to field sets of packaged SObjects resolvable.

      • With all of that preface out of the way, here are the things that were fixed:

      • Added support for an explicit clause in sfdx-project.json to instruct Illuminated Cloud 2 the format of the stored metadata files, either source (default) or metadata. The clause uses the plugins feature of this configuration file and takes the form:

        • "plugins": { "illuminatedCloud2": { "format": "[metadata|source]" } }

        • This only needs to be specified for a format value of metadata when a project has an sfdx-project.json file but its files are stored in metadata format. Otherwise Illuminated Cloud 2 infers that a project with no sfdx-project.json file is stored in metadata format, and a project with an sfdx-project.json but not this clause is stored in source format.

      • Numerous fixes to OST generation for SObjects when local metadata exists for the same SObjects.

      • Custom labels from installed managed packages are now rendered into the OST as per-namespace inner classes of the System.Label system class with constants for each label from that namespace initialized with the respective label's value. These are now taken into account for code completion, reference navigation, code folding, and other custom label features of Illuminated Cloud.

      • Fixed an issue with method override/implementation detection when a concrete implementation is present in a base class which itself doesn't have an inheritance relationship with the declaring type of the abstract/interface method.

      • Fixed an issue where Apex compile-time custom label references would not evaluate as being of type System.String.

      • Fixed an issue where the unary plus operator applied to a string literal would result in a type mismatch error.

      • Found and fixed a few places where the effective connection type (scratch org acting as a non-scratch org or sandbox managed via source tracking) was not being used properly.

      • Fixed an issue that could result in invalid entries being added to the package.xml file for context-based metadata operations against foldered metadata.

  • Issue 1835 - Added missing getAsyncCalls() and getLimitAsyncCalls() to the System.Limits class in the OST.

  • Updated to the latest version of the licensing software which includes a fix for failed trial activations on Mac M1 machines.

  • Added a selectioner to add the ApexDoc comment for a selected type or body declaration, and then to add the adjacent whitespace between that declaration and the next (or previous if there is no next) declaration at the same scope.

  • Updated the URL of the PMD Apex ruleset to the quickstart ruleset.

  • Fixed an issue with module validation where that could result in a false report of a stale OST either when indexing is occurring or immediately after project creation.

  • Other related fixes and improvements.

NOTE: As always, the effects of all changes to the OST are not realized until the OST is regenerated.