You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Origin tracking allows to see the original (source) terms a transformed term belongs to. This is used, for example, to put error messages in the source code. Origin tracking/preservation in Stratego and Spoofax is currently broken: origins are only preserved for the all, some, and one built-in Stratego strategies.
This issue tracks work on fixing origin preservation.
Write tests for origin tracking in main ITermFactory implementation
Change Stratego compiler to generate code to call the new ITermFactory origin preserving methods
Measure new Stratego performance
Fix any performance regressions
@Apanatshka outlines the background and ideas here. In its essence, it boils down to implementing origin preservation (that is, copy the origin of a source term instead of taking the source term as the origin, as in origin tracking) by taking the origin of the input term when building a new term (!C()). In many situations, such as congruences, rules, and where-clauses, the Stratego code is desugared down to basic Stratego match and build strategies. Origin tracking on terms build is expected to solve 90% of origin preservation problems, but might have some implications on performance and effects on compiler optimizations.
The text was updated successfully, but these errors were encountered:
Origin tracking allows to see the original (source) terms a transformed term belongs to. This is used, for example, to put error messages in the source code. Origin tracking/preservation in Stratego and Spoofax is currently broken: origins are only preserved for the
all
,some
, andone
built-in Stratego strategies.This issue tracks work on fixing origin preservation.
@Apanatshka outlines the background and ideas here. In its essence, it boils down to implementing origin preservation (that is, copy the origin of a source term instead of taking the source term as the origin, as in origin tracking) by taking the origin of the input term when building a new term (
!C()
). In many situations, such as congruences, rules, and where-clauses, the Stratego code is desugared down to basic Stratego match and build strategies. Origin tracking on terms build is expected to solve 90% of origin preservation problems, but might have some implications on performance and effects on compiler optimizations.The text was updated successfully, but these errors were encountered: