Skip to content

v2.2.1

Choose a tag to compare

@WilliamSmithEdward WilliamSmithEdward released this 24 Sep 02:49
· 72 commits to main since this release

Follows XLIDE 10.7.1, from 10.6.0. Upstream fixed how its lexer and parser read a handful of lines the VBE compiles (XLIDE issues #82 to #90), and this release takes each fix. The full list is in CHANGELOG.md.

Fixed

  • What a one-line If runs after a colon belongs to the If. In If conn Is Nothing Then ACCT = CVErr(xlErrNA): Exit Function, the Exit Function runs only when conn is Nothing, so the next line is no longer reported as unreachable. A Set x = Nothing or an Erase there no longer makes the next line report an unset object or an unallocated array.
  • A comment ending in _ runs on to the next line, and a line continuation may have spaces after its _. The line after either is no longer read as code or reported for a missing Then.
  • If x Then: is a one-line If, and the one-word EndIf closes a block If.
  • 1., &17, a => b and a < > b are read as the VBE reads them. s = "a" &1, which the VBE refuses, is now reported.
  • Needs, 2 is a call, so a missing required argument is reported there.
  • Shape.Duplicate returns a Shape and SparklineGroup.SeriesColor a FormatColor, and a Charts or Worksheets collection can be assigned to a Sheets variable.
  • The command line numbers a .cls or .frm export's lines from the top of the file. A class module's findings printed four lines early.

Added

  • LoadedModule.designer_block: the export header the reader stripped ahead of source, so a span in the analyzed body can be placed in the file.

Changed

  • A contextual keyword such as Text, Step or Output is a keyword token only inside the statement that makes it one, so a variable called text lexes as an identifier.

Verified

Upstream's own 10.7.1 test suite replays through the port identically (1081 standalone and 936 project calls), and the oracle corpus, 16 real workbooks, 195 Office files of every host and 693 further projects give identical diagnostics from both analyzers.