Skip to content

docs: state the tri-state locking versions correctly on the LC0031 page - #186

Merged
Arthurvdv merged 1 commit into
mainfrom
docs/lc0031-tri-state-versions
Sep 13, 2026
Merged

docs: state the tri-state locking versions correctly on the LC0031 page#186
Arthurvdv merged 1 commit into
mainfrom
docs/lc0031-tri-state-versions

Conversation

@Arthurvdv

Copy link
Copy Markdown
Member

Summary

Follow-up to #185, which was merged before this correction landed on its branch.

The LC0031 page said tri-state locking is "default from v25 onward". Microsoft Learn states it applies from Business Central 2023 release wave 2 (version 23), is enabled by default, and can no longer be disabled from version 26. The sentence now reads "introduced in version 23, enabled by default, and always on from version 26".

Related: ALCops/Analyzers#547

🤖 Generated with Claude Code

Tri-state locking arrived in version 23 and is enabled by default; version 26
removed the opt-out. The page said it was the default only from version 25.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Arthurvdv added a commit to ALCops/Analyzers that referenced this pull request Sep 13, 2026
…eiver forms (#547)

Issue #530 reported LC0031 firing on bare LockTable() inside Base App table
triggers and a code action that changed nothing there. The trigger case is
reported on purpose: the compiler binds every receiver form to the same
built-in, LockTable is transaction-wide while ReadIsolation is instance-local,
and Microsoft's own new code no longer writes LockTable in triggers. The
defect was the code fix, which returned the unchanged document whenever the
invocation had no member-access receiver.

- Code fix: a bare LockTable() becomes a bare ReadIsolation(IsolationLevel::UpdLock);
  member-access receivers keep their form; the replacement copies the trivia of
  the original call so indentation and comments survive.
- Fixtures: the full receiver-form set (named variable, Rec, bare, this,
  tableextension, page, TableNo OnRun, namespaced, RecordRef, arguments), both
  ReadIsolation forms as NoDiagnostic, and a leading-comment HasFix case;
  tableextension fixtures gated on SDK 13.0, this fixtures on runtime 14.0.
- Rule doc lc0031-record-instance-isolation-level.md records the trigger
  decision, the per-form verdicts and the SDK facts; the receiver-forms
  regression row now covers the code fix flavour of the gap.

Closes #530
Related: #545
Docs: ALCops/alcops.dev#185, ALCops/alcops.dev#186

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Arthurvdv
Arthurvdv merged commit 0a5b103 into main Sep 13, 2026
1 check passed
@Arthurvdv
Arthurvdv deleted the docs/lc0031-tri-state-versions branch September 13, 2026 10:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant