opentofu/internal/lang
Martin Atkins e879e9060f configgraph: Only ask ResourceInstanceGlue once for each value
Most of what we interact with in configgraph is other parts of the
evaluator that automatically get memoized by patterns like OnceValuer, but
the value for a resource instance is always provided by something outside
of the evaluator that won't typically be able to use those mechanisms, and
so the evaluator's ResourceInstance.Value implementation will now provide
memoization on behalf of that external component, to ensure that we end
up with only one value for each resource instance regardless of how that
external component behaves.

In the case of the current planning phase, in particular this means that
we'll now only try to plan each resource instance once, whereas before
we would ask it to make a separate plan for each call to Value.

For now this is just retrofitted in an minimally-invasive way as part of
our "walking skeleton" phase where we're just trying to wire the existing
parts together end-to-end and then decide at the end whether we want to
refactor things more. If this need for general-purpose memoization ends
up appearing in other places too then maybe we'll choose to structure this
a little differently.

Signed-off-by: Martin Atkins <mart@degeneration.co.uk>
2025-12-12 07:03:52 -08:00
..
blocktoattr Fix typos (#1905) 2024-08-29 13:20:33 -04:00
eval configgraph: Only ask ResourceInstanceGlue once for each value 2025-12-12 07:03:52 -08:00
evalchecks Early return when having errors and additional tests (#3042) 2025-09-26 08:44:39 -03:00
exprs lang/eval: Clear some linter warnings 2025-10-27 10:15:41 -07:00
funcs Normalize paths at internal/lang/funcs tests (#3223) 2025-09-16 09:17:02 -03:00
globalref httpclient: Add OTel tracing automatically when needed (#2772) 2025-05-09 10:16:38 +01:00
grapheval execgraph: Most of the "compiler" machinery 2025-10-27 10:15:41 -07:00
lint lint: Include more source context in unused attribute diagnostics 2025-09-26 09:08:31 -07:00
marks Ephemeral variables (#3108) 2025-09-10 07:45:23 -04:00
testdata/functions-test Move lang/ to internal/lang/ 2021-05-17 14:09:07 -07:00
types Update copyright notice (#1232) 2024-02-08 09:48:59 +00:00
data.go lang: Data methods now take context.Context 2025-06-18 07:26:17 -07:00
data_test.go lang: Data methods now take context.Context 2025-06-18 07:26:17 -07:00
doc.go Update copyright notice (#1232) 2024-02-08 09:48:59 +00:00
eval.go Extract the provider functions references from the dynamic blocks (#3429) 2025-10-28 17:10:07 +02:00
eval_test.go Feature branch: Ephemeral resources (#2852) 2025-08-04 16:39:12 +03:00
functions.go Unify core functions address handling (#3445) 2025-10-31 08:41:52 +02:00
functions_descriptions_test.go Unify core functions address handling (#3445) 2025-10-31 08:41:52 +02:00
functions_test.go Unify core functions address handling (#3445) 2025-10-31 08:41:52 +02:00
references.go Fix typos (#1905) 2024-08-29 13:20:33 -04:00
references_test.go Bump our hcl fork to include fix for Provider defined functions in parentheses (#3402) 2025-10-22 10:40:53 +01:00
scope.go lang: hcl.EvalContext creation needs context.Context 2025-06-17 07:56:33 -07:00