-
Key: QVT13-23
-
Legacy Issue Number: 18324
-
Status: closed
-
Source: campus.upb.de ( Christopher Gerking)
-
Summary:
Trace data creation is specified to happen "at the end of the initialization section".
For disjuncting mappings, the initialization section is never executed, which prevents any trace data from being stored.
As a consequence, no resolution via resolve-in-expressions is possible on the disjuncting mapping, due to the missing trace record. This is problematic, since disjunction should be transparent from a resolver's point of view, i.e. it should not make a difference for resolution whether a mapping disjuncts or not.
Hence, some clarification is required whether trace records are deliberately avoided for disjuncting mappings (for whatever reason), or whether trace data must be created in another place than the init section in case of a disjuncting mapping.
-
Reported: QVT 1.1 — Thu, 27 Dec 2012 05:00 GMT
-
Disposition: Resolved — QVT 1.3
-
Disposition Summary:
No trace data for disjuncting mapping
Trace data creation is specified to happen "at the end of the initialization section".
For disjuncting mappings, the initialization section is never executed, which prevents any trace data from being stored.
As a consequence, no resolution via resolve-in-expressions is possible on the disjuncting mapping, due to the missing trace record. This is problematic, since disjunction should be transparent from a resolver's point of view, i.e. it should not make a difference for resolution whether a mapping disjuncts or not.
Hence, some clarification is required whether trace records are deliberately avoided for disjuncting mappings (for whatever reason), or whether trace data must be created in another place than the init section in case of a disjuncting mapping.
Discussion
It seems the 8.1.x section on Tracing never got written. Time for a thorough review and clarification.
Trace lookups by source objects treat context and all in/inout parameters as source objects.
Trace lookups by target objects treat all out/inout and result parameters as target objects.
Trace lookups by mapping allow either disjuncting mapping or candidate mapping to be used as the mapping selection.
If re-execution is to be completely suppressed and fully re-use a previous execution, the output trace should be the final outputs, but the existing text is clear that it is the preliminary outputs at the end of the initialization section. The earlier trace gives a slightly different semantics that requires the population section to modify the created object after it is traced and allows the population section to use the trace. This is different but fine when explained clearly.
References to 8.1.12 refer to the new text from the
QVT13-99resolution. -
Updated: Tue, 29 Mar 2016 15:09 GMT