Repository navigation
ST6RI-984 (original) Values computed while a reference is transiently unresolved are kept after it resolves - #824
Draft
vincemolnar wants to merge 5 commits into
Draft
vincemolnar wants to merge 5 commits into
vincemolnar wants to merge 5 commits into
Conversation
seidewitz
marked this pull request as draft
October 26, 2026 18:52
- Updated to forget failures of nested name resolution when the enclosing resolution ends. - Tests pass.
Member
|
@vincemolnar
Let me know if you concur. |
Contributor
Author
|
@seidewitz I concur, thanks! I have also updated the PR description to make it self-contained. Let me know if you want it restored. |
seidewitz
marked this pull request as draft
October 28, 2026 15:25
Member
|
Further testing has shown that the original general solution proposed in this PR results in unacceptable performance when there are links that cannot be resolved, not just temporarily, but permanently during the processing of a model. While work continues on this general solution, a more specific solution is proposed in PR #825, which is adequate for a release update to eliminate user-visible symptoms. |
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.
Since release 2026-09, some models that validated without issues get spurious warnings, and an unresolved proxy can end up in the model.
Problems fixed
After
transformAll(…, true), the model also contains an unresolved proxy (anAcceptActionUsageobject) owned by the implied binding connector, whichSysML2XMI -gwrites out. The examples insysml/src/examples/Metadata Examplesget 10 such warnings.After
EcoreUtil.resolveAll, a feature redefined in a type whose supertype comes from semantic metadata is inherited both redefined and not redefined ("Duplicate of inherited member name …"), for example 70 times insysml/src/examples/Arrowhead Framework Example.(Also before 2026-09.) In
kerml/src/examples/Association Examples/ProductSelection_OwnedEnds.kerml, aftertransformAll(…, true), an impliedSubsettingowns an unresolved proxy.Cause
A name lookup nested in the resolution of another reference can fail because the scope excludes the elements whose resolution is in progress.
LazyLinkingResourcethen records the reference as unresolvable until the next change to the resource. Until #815/#821 and #818, the result parameters and default multiplicities created during name resolution changed the resource and so discarded these records. Now the records persist, and values computed and cached in the meantime (an implicit binding connector, a redefinition closure) keep the unresolved proxy.Changes
KerMLLazyLinkingResource: a failure of a lookup nested in the resolution of another reference stays recorded only until that resolution ends.FeatureAdapter.getAllRedefinedFeatures: a result that contains an unresolved proxy is not cached.ConnectorUtil.addConnectorEndTo,TypeUtil.insertImplicitSpecializations,FeatureUtil.insertImplicitTypeFeaturings: an unresolved proxy is not added as an owned related element.Tests
NestedResolutionTestcovers problems 1 and 2; both tests fail without these changes. The full build with all tests passes.