internal/core/adt: do not side-effect argument state to result state
Currently the call logic updates the `state` variable depending on
argument logic. Intuitively this seems wrong: we shouldn't need to
change the interpretation of the result of a function depending on
whether its arguments are concrete or not.
This doesn't seem to change any user-visible behavior: I wasn't able to
find any existing stdlib functions whose behavior changed as a result,
probably because the evaluation only applies at the top level and there
are no stdlib functions that can be provoked into returning a
disjunction as the top level result value.
Signed-off-by: Roger Peppe <rogpeppe@gmail.com>
Change-Id: I058d99940ba65e0488af1b6b85efce5541987543
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1232475
Reviewed-by: Marcel van Lohuizen <mpvl@gmail.com>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>