release notes

posted Nov 20, 2020, 3:11 PM by Scott Wells

  • Issue 1763 - Two users reported an issue where OST generation seemed to freeze while querying and adapting custom Apex types from the org. This occurred when processing a very large Apex class, in both of these cases specifically MetadataService, because the custom class adapter was using index information to yield high fidelity type names for return types, type parameters, etc. This has now been changed to use the exact type names from the original Apex source which resolves the issue. The resulting OST stub Apex classes are equally valid, but there are two potential changes as a result of this change. First, the names of inner types referenced in the same top-level type are no longer fully-qualified if they weren't qualified in the original source. Second, if the type names in the original source used a different case than the corresponding declaration, that will be conveyed into the OST stub Apex class.
  • Issue 1764 - One of the changes/fixes in could result in a lack of completions for instance variables named exactly the same as a type. This is now fixed.
  • In the process of fixing issue 1764 I found a few other small issues and addressed them. For example, the scope agreement code inspection now properly detects (most) invalid usages of .class and flags them as issues. A quick fix is available to change the variable-based usage to a corresponding type-based usage.
  • Fixed an issue with base/derived relationship detection when a declaration implements/overrides multiple base declarations with slightly different signatures, typically due to slight differences in type parameters. If you are seeing this issue, please rebuild your caches and indices.
  • Other related fixes and improvements. release notes

posted Nov 19, 2020, 7:18 AM by Scott Wells

  • Issue 1751 - IC2 was only recreating the Developer Console trace flag when it wasn't present at all. Now it also does so when it's present but expired. This should help to keep that critical trace flag fresh while working in the Log Analyzer and Anonymous Apex tool windows.
  • Issue 1759 - When resolving types by simple name, null values were being cached too aggressively, ultimately leading to any number of issues with incorrect unresolvable symbols, gaps in find usages, etc. These are now evicted properly.
  • Issue 1760 - Evidently the Salesforce APIs report some reference-type SObject fields as being string-type. Now when OST generation sees a field that specifies a reference name but is reported as a string, it processes that field as a reference instead. This seems to affect a dozen or so SObjects, each having a small number of reference fields reported in this manner. NOTE: You must regenerate (minimally) the SObjects portion of your OST to see the effect of this fix.
  • Fixed a number of small parser, reference resolution, and code inspection bugs:
    • When implementing multiple parameterized types with nested type parameters, e.g., class Foo implements Iterable<Map<String, String>>, Iterator<Map<String, String>>, the Apex parser would only recognize the first type. This is now fixed.
    • Fixed expression type evaluation for Schema.<sobjectTypeName>.SObjectType.fields.<fieldName> and Schema.<sobjectTypeName>.<fieldName> so that they both evaluate to Schema.SObjectField instead of the referenced field.
    • Fixed an issue with reference resolution where an incorrect match could occur because it would stop at the closest declaration of the expected type and name but not necessarily signature.
    • Fixed an issue with detection of overridden @TestVisible private virtual methods.
  • Tightened the surrounding newlines emitted when generating implementation/override methods from interfaces/base classes respectively.
  • Fixed an issue where generated implementations of methods from System.Iterable and System.Iterator did not properly take into account the type parameter.
  • Fixed a few system type interface implementation relationships in the OST.
  • Other related fixes and improvements. release notes

posted Nov 13, 2020, 7:30 AM by Scott Wells

  • Issue 1747 - Changed the base type parameter for Database.Batchable from SObject to Object since it's evidently allowable to parameterize by non-SObject types.
  • Issue 1748 - When implementing interface methods in inner types, the minimum visibility of the generated implemented methods is now public since an interface method must always be public or global by definition. NOTE: The OST must be regenerated to see the effect of this change.
  • Issue 1753 - Corrected the definition of Auth.AuthProviderPluginClass to implement Auth.AuthProviderPlugin and denote the refresh method as virtual so that it can be overridden in derived classes. NOTE: The OST must be regenerated to see the effect of this change.
  • Automatic metadata subscription management now works properly with scratch orgs configured to behave as non-scratch orgs.
  • Fixed an NPE introduced in when starting the offline debugger from anonymous Apex.
  • Fixed a binary incompatibility with the upcoming 2020.3 release. release notes

posted Nov 12, 2020, 7:18 AM by Scott Wells

  • Issue 806 (redux) - Fixed an issue with reference resolution and code completion for fields listed in SOQL TYPEOF ELSE clauses.
  • Issue 1500 - Fixed an issue with expression type evaluation (and therefore chained completions) of inline collection initializer blocks.
  • Issue 1559 - Fixed several issues with bulk deployment actions when a supporting meta.xml file is used as the selected context for the action, specifically around out-of-date detection for the Deploy Modified Metadata action.
  • Issue 1714 - Fixed several issues with the extract/introduce variable refactoring when used against SObject constructor field initializer expressions.
  • Issue 1734 - Added a workaround for an issue with how PersonAccount metadata is incorrectly listed by the Salesforce APIs. I've also reported the underlying issue to Salesforce so that it can be fixed properly.
  • Issue 1737 - Added an exception to the Apex illegal assignment code inspection for all SobjectType fields reported by the Salesforce APIs that are of type String when used as instance variables and of type SObjectType when used as class variables.
  • Issue 1738 - Fixed an Apex parser issue with type declarations in anonymous Apex documents.
  • Issue 1741 - Prospective (though likely incomplete) fix for a slow indexing issue that can occur when a CLI-based org connection has expired or been deleted, and a project that uses that org for its connection is opened.
  • Issue 1746 - Added LWC components (LightningComponentBundle metadata type) to the default metadata subscription when creating a new metadata format project.
  • Issue 1752 - Fixed an issue with Anonymous Apex and SOQL Query tabs that are bound to local .apex or .soql files respectively where the connection between the saved tab and the file is lost across sessions.
  • Issue 1755 - Fixed an Apex parser issue with parameterized annotations on inner types.
  • Related to issue 1738, added a new code inspection, Apex > File contents verification, that verifies that the contents of Apex source files match the constraints of the containing files, specifically that:
    • Apex class files (*.cls) each contain exactly one top-level Apex class, interface, or enum with the same name as the corresponding file
    • Apex trigger files (*.trigger) each contain exactly one top-level Apex trigger with the same name as the corresponding file
    • SOQL Query files (*.soql) each contain exactly one SOQL query
    • Anonymous Apex files (*.apex) can contain any combination of type declarations, method declarations, and statements, so no validation is performed beyond what the Apex parser already performs
    When issues are found, quick fixes are provided to help rename declarations or files as appropriate. Given the case-insensitive nature of Apex, when the names match in a case-insensitive manner but not in a case-sensitive manner, a warning is added with a quick fix to change one of the two names to match.
  • Added a provision for fixing known issues in retrieved metadata, and added a specific fix for retrieved installed package metadata if/when it includes an invalid activateRSS element.
  • Other related fixes and improvements. release notes

posted Nov 2, 2020, 8:15 AM by Scott Wells

  • Log Analyzer Profiling Enhancements - Significant Log Analyzer enhancements and new features for governor-limited resource utilization profiling, specifically for resource consumption hotspot analysis and characterization. For the best profiling experience, use the Tracing (Profile) log level preset when executing the profiled process.

    • Improved display of self/total metrics for the Database Profiling view - Previously the metrics in this view varied between total when there was no local/self activity and self when there was. This could result in lost information when additional activity occurred deeper in the call stack, e.g., when a DML operation resulted in a trigger that itself performed further DML. Now each metric is presented as Self/Total of Limit.
    • Reported vs. observed cumulative profiling metrics for the Cumulative Usage Limits and Profiling view - This view displays reported counts and durations for DML operations, SOQL operations, and method invocations for the executed process based on the corresponding metrics from the source log. In the process of implementing these enhancements and new features, I found that these metrics could be reported incorrectly, in particular SOQL operations for static SOQL queries used directly in expressions without being assigned to a variable. Now Illuminated Cloud collects its own cumulative profiling metrics for DML and SOQL operations based on observed events of the corresponding types and includes those as well as the reported metrics for a more complete and accurate view of the executed process. In addition to the aforementioned SOQL operation disparity, I've also found that there are rare situations where Illuminated Cloud will observe an operation in the log that is not reported as part of the final summary information. Conversely, the final summary information includes some system methods in its counts that do not correspond to actual DML operations or queries, e.g., event bus inspections. As a result, both of these sets of cumulative profiling metrics should be considered for the best understanding of the executed process.
    New Features
    • Smart Expand action - This new tree view toolbar action expands the selected branch—or entire tree if there's no active selection—until there are no further insights to be gained by further expansion. The exact behavior of this action varies based on the selected view, but in general it means that the resolution of the profiling metrics for that view do not change upon further tree expansion.
    • Show Callees action - This actions shows the methods, constructors, properties, triggers, etc., which were invoked from a specific selected method transitively as a flat list with merged total/self governor-limited resource consumption metrics for each context. This is useful when trying to identify resource consumption "hotspots", either as single consumers or as aggregate consumers. Once a hotspot has been identified, the Show Callers action can be used to analyze single consumers in a bottom-up fashion, or the Show Merged Callees action can be used to analyze aggregate consumers in a top-down fashion.
    • Show Callers action - This action shows all invocation paths (i.e., backtraces) leading to a specific selected line of code and the aggregate governor-limited resource utilization along each path as a proportion of the total use of that resource. This is useful when a single particularly heavy consumer of a resource has been identified—generally via the Cumulative Usage Limits and Profiling view's cumulative profiling metrics or the Show Callees action—and you need to understand the logic that ultimately leads to that resource consumption "hotspot".
    • Show Merged Callees action - This actions shows the methods, constructors, properties, triggers, etc., which were invoked from a specific selected method transitively as a merged invocation hierarchy with aggregated total/self governor-limited resource consumption metrics for each level. This is useful when a resource is used heavily starting at a particular point of execution, but there is no single specific consumer of that resource. It allows the user to understand how and where the resource is consumed across the transitive execution of the process from entry point. release notes

posted Oct 21, 2020, 8:22 AM by Scott Wells

  • Winter '21 / API v50.0 WSDL Updates
    • This is a follow-on to and completes the Winter '21 / API v50.0 updates by including SOAP API clients based on the API v50.0 WSDLs and an updated metadata.xsd used for validation and code completion in metadata XML files. release notes

posted Oct 19, 2020, 7:56 AM by Scott Wells

  • Winter '21 / API v50.0 Updates
    • Updated the API version used for primary communication with Salesforce APIs to 50.0.
    • Added 50.0 as an available API version number for configured connections.
    • Updated the OST version number to prompt regeneration for changes in API v50.0.
    • Added parser and code inspection/intention support for @NamespaceAccessible annotation enhancements.
    • Updated Visualforce, Aura, and LWC components, functions, modules, etc., for Winter '21.
    • Updated the bundled SLDS to 2.13.3 (sanitized version).
    • Added support for new FieldService* parameterized scratch org features.
    • Updated the SFDX JSON schema definitions.
    • Updated the standard value set names.
    • Updated all integrated API documentation.
    • NOTE: The SOAP client and bundled metadata.xsd have not yet been updated as the corresponding WSDLs must be provided by Salesforce. Once they have been provided a new build will be released with those changes.
    • NOTE: Full support for the new safe navigation operator was included in release notes

posted Oct 15, 2020, 7:01 AM by Scott Wells

  • Issue 1722 - Evidently one of the plugin SDK facilities for determining whether a source file is stored within a library (e.g., the OST) has changed in behavior recently and is now reporting local source files as being library files. This was causing Illuminated Cloud to fail to include local Apex unit test classes properly when enumerating them. This usage has been migrated to another facility that should resolve the issue.
  • Issue 1723 - Fixed another issue with the recent optimization to deploy certain metadata types via the native metadata API deployer in a source format project against a non-scratch org, specifically when Apex/Visualforce files are organized under intermediate directories relative to their respective metadata type directories. release notes

posted Oct 8, 2020, 6:56 AM by Scott Wells

  • Issue 1723 - Fixed a few issues with the recent optimization to deploy certain metadata types via the native metadata API deployer in a source format project against a non-scratch org, specifically when Apex/Visualforce files are not organized under their respective metadata type directories and/or Aura/LWC components are organized under an indirect path relative to the source root.
  • Issue 1725 - Fixed a few issues with code coverage report generation in projects with namespaces.
  • Fixed a (benign but potentially noisy in the logs) issue with the Refresh Metadata action where files not under a source root were being processed unnecessarily. release notes

posted Oct 1, 2020, 9:24 AM by Scott Wells

  • Issue 335 - Apex unit test run configurations now use the Illuminated Cloud icon to differentiate them from other unit test run configuration types, specifically those executed using JUnit.
  • Issue 1352 - Added support for coverage-by-test to the Apex code coverage feature. This allows the user to click on the green gutter annotation that denotes a line of code as covered and select Show Tests Covering Line to display the specific unit tests method(s) which drove that coverage. NOTE: This currently works in JetBrains 2019.3 IDEs but not in released versions of 2020.* IDEs due to an issue which I've filed with JetBrains. JetBrains has stated that it will be addressed in the next release, 2020.3, at which point this feature will work properly in the latest versions of both 2019.* and 2020.*.
  • Issue 1400 - Added support for bidirectional sorting of the Coverage view table contents by both class/trigger name and by coverage percentage.
  • Issue 1617 - Enabled code coverage report generation in all supported IDEs by bundling the JetBrains coverage report jars with Illuminated Cloud (with JetBrains' permission, of course). When a coverage suite is displayed in the Coverage view, you can use Generate Coverage Report to render the coverage details into an HTML-based representation.
  • Issue 1673 - Add a new project creation option, Create 'All Tests' Apex unit test run configuration. This option initially defaults to enabled but retains the setting used during the last project creation. When enabled, the newly-created project includes a project-level run config that is already configured to execute all Apex unit tests in the project against the connection selected for the project when it was created.
  • Issue 1721 - Added full support for the new Apex safe navigation operator that is available now in pre-release orgs and will be available everywhere when Winter '21 is released. This includes parser, syntax highlighter, code formatter, code completion, and static code analysis enhancements for this new operator. Illuminated Cloud will not offer variant completions after an invalid usage of the safe navigation operator. It will flag such usages as invalid and provide a quick fix to change the safe navigation operator to the standard navigation operator. NOTE: Support for this operator is now always available regardless of the state of the target organization. Trying to deploy Apex source code which uses this operator to an organization which is not yet on API v50.0 will result in deployment failures. Once Winter '21 has been released and this feature is GA, it will be supported in Apex source regardless of API version.
  • Implemented a performance optimization for deployment of child metadata in source format projects to non-scratch orgs. When child metadata is deployed in isolation using a package.xml file, the CLI deploys the entire parent metadata object as well. At best this can be inefficient, but it can also result in unexpected/undesired deployment of other child metadata in the same parent object. Illuminated Cloud now automatically deploys via source paths in this situation which is handled properly by the CLI and results in deployment of only the specified child metadata.
  • It's now possible to remove Apex code coverage suites using the coverage suite selection dialog.
  • Added validation logic to the deployment dialog to ensure that a unit test run configuration is chosen when the selected test level is Run Specified Tests. Previously it would degrade to running all local tests in this situation.
  • Removed broken image tags in the embedded Salesforce system API documentation.

1-10 of 176