fix(format): stabilize fingerprints without losing inherited changes - #1535
Draft
joaodinissf wants to merge 1 commit into
Draft
joaodinissf wants to merge 1 commit into
joaodinissf wants to merge 1 commit into
Conversation
joaodinissf
force-pushed
the
codex/fix-format-fingerprints
branch
from
September 11, 2026 16:55
fe8a1b2 to
c2cddf5
Compare
Saving a byte-identical `.format` file changed its exported fingerprints, because they contained the Java identity of the parent EMF object, which differs on every reload. Dependent formats were reindexed and regenerated although nothing had changed. In the reproducer, saving an unchanged `Xtype.format` also reindexed its dependent `Xbase.format`. Derive every fingerprint from source text and resource location, never from object identity. A local declaration is fingerprinted by its own token text. A format configuration is fingerprinted by the resource URI and complete source text of its own resource and of every configuration it transitively extends, so an identical reload is stable while a real change propagates through an intermediate format that declares nothing locally. Raw comments and delimiters participate because they move the source locations recorded in the generated code and traces. An inheritance cycle terminates through a visited set; an unresolved base contributes its proxy URI and ends the chain, so it is distinguishable from an absent base and a later resolution changes the fingerprint exactly once. Add a focused test class (eight tests) and a real Eclipse workspace test. The latter checks identical LF/CRLF saves, a content-preserving rename of a base, and compares all generated Java and trace bytes between incremental and full builds after constant, rule, declaration, comment and line-ending edits. The focused tests additionally cover empty configurations, cycles, unresolved and resolved bases, base selection and superclass changes. Bump the Format bundle from 17.3.3 to 17.3.4 and the SDK feature from 19.2.0 to 19.2.1, including its update-site entry. Closes dsldevkit#1534. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
joaodinissf
force-pushed
the
codex/fix-format-fingerprints
branch
from
September 22, 2026 22:19
c2cddf5 to
065b3d5
Compare
joaodinissf
marked this pull request as draft
September 22, 2026 22:19
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1534
Why the change
Saving an unchanged
.formatfile no longer changes its fingerprints, so the format files that extend it are no longer re-indexed, while real changes still propagate through inheritance.Special things to note
withreference during indexing, and a configuration is now exported under its fingerprint, as its declarations already were.Change outline
🤖 Generated with Claude Code