[WIP] Data dependencies propagate orphan instances #11022
Closed
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.
Work so far:
I split this task in three parts:
DA.Daml.LFConversion.MetadataEncoding
.DA.Daml.Compiler.DataDependencies
and adding it to thehsmodImports
field ingenerateSrcFromLf
modRefImport
function.DA.Daml.LFConversion.convertModule
md_insts
field ofdetails :: ModDetails
argument: only includes instances defined in the current module.md_exports
field ofdetails :: ModDetails
argument: this includes functions, datatypes and classes, but not instances.I also tried adding a parameter
visibleInstances :: [ClsInst]
toconvertModule
, and providing it as the result of callinghptInstances
on the availablehsc :: HscEnv
. Note that one of the callsites ofconvertModule
,generateRawDalfRule
, didn't have an availablehsc
, so I added a lineHowever, on running this the value of
visibleInstances
turned out to be an empty list. I added some trace lines and noticed that the callstack goes throughgenerateRawDalfRule
, so perhaps just adding thehsc
line isn't enough. The docstring forgenerateRawDalfRule
,makes me think that this is somewhat intentional, and that
generateRawDalfRule
shouldn't perform too much work, but I'm not sure how to reconcile that with what we need.mg_inst_env
field ofModGuts
, but I haven't been able to get my hands on aModGuts
value.There's also the question of how to test this. For the encoding/decoding, I followed the approach of the other encoder/decoders in
DA.Daml.LFConversion.MetadataEncoding
. I'd also like to test that the generated$$imports
value has the right type, and I found the@QUERY-LF
pragma, but I found it hard to read thejson
file being queried.Pull Request Checklist
CHANGELOG_BEGIN
andCHANGELOG_END
tagsNOTE: CI is not automatically run on non-members pull-requests for security
reasons. The reviewer will have to comment with
/AzurePipelines run
totrigger the build.