---
cases:
  - note: functions/always_true
    query: data.ex.always_true = x
    modules:
      - |
        package test

        samepkg := y if {
        	data.test.foo("how do you do?", y)
        }
      - |
        package test.l1.l3

        g(__local238__) := __local238__
      - |
        package test.l1.l2

        p := true

        f(__local248__) := __local248__
      - |
        package test.omit_result

        f(__local258__) := __local258__

        p if {
        	data.test.omit_result.f(1)
        }
      - |
        package topdown_test_partial

        __result__ := _result if {
        	_result = "h"
        }
      - |
        package ex

        foo(__local176__) := y if {
        	split(__local176__, "i", y)
        }

        bar[x] := y if {
        	data.l[_].a = x
        	data.ex.foo(x, y)
        }

        chain0(__local177__) := y if {
        	data.ex.foo(__local177__, y)
        }

        chain1(__local178__) := b if {
        	data.ex.chain0(__local178__, b)
        }

        chain2 := d if {
        	data.ex.chain1("fooibar", d)
        }

        cross(__local179__) := [a, b] if {
        	split(__local179__, "i", y)
        	__local27__ = y[1]
        	data.ex.foo(__local27__, b)
        	__local28__ = y[2]
        	data.test.foo(__local28__, a)
        }

        falsy_func(__local180__) := false

        falsy_func_else(__local181__) if {
        	__local181__ = 1
        }

        else := false

        falsy_undefined if {
        	data.ex.falsy_func(1)
        }

        falsy_negation if {
        	not data.ex.falsy_func(1)
        }

        falsy_else_value := __local23__ if {
        	true
        	data.ex.falsy_func_else(2, __local23__)
        }

        falsy_else_undefined if {
        	data.ex.falsy_func_else(2)
        }

        falsy_else_negation if {
        	not data.ex.falsy_func_else(2)
        }

        arrays([__local183__, __local184__]) := [a, b] if {
        	data.ex.foo(__local183__, a)
        	data.ex.foo(__local184__, b)
        }

        arraysrule := y if {
        	data.ex.arrays(["hih", "foo"], y)
        }

        objects({"foo": __local185__, "bar": __local186__}) := z if {
        	data.ex.foo(__local185__, a)
        	data.test.foo(__local186__, b)
        	z = [a, b]
        }

        objectsrule := y if {
        	data.ex.objects({"bar": "hi ho", "foo": "hih"}, y)
        }

        refoutput := y if {
        	data.ex.foo("hih", z)
        	y = z[1]
        }

        void(__local187__) if {
        	__local187__ = "foo"
        }

        voidGood if {
        	not data.ex.void("bar", true)
        }

        voidBad if {
        	data.ex.void("bar", true)
        }

        multi(1, __local188__) := y if {
        	y = __local188__
        }

        multi(2, __local189__) := y if {
        	__local24__ = 2 * __local189__
        	a = __local24__
        	__local25__ = a + 1
        	y = __local25__
        }

        multi(3, __local190__) := y if {
        	__local26__ = __local190__ * 10
        	y = __local26__
        }

        multi("foo", __local191__) := y if {
        	y = "bar"
        }

        multi1 := y if {
        	data.ex.multi(1, 2, y)
        }

        multi2 := y if {
        	data.ex.multi(2, 2, y)
        }

        multi3 := y if {
        	data.ex.multi(3, 2, y)
        }

        multi4 := y if {
        	data.ex.multi("foo", 2, y)
        }

        always_true_fn(__local192__) := true

        always_true if {
        	data.ex.always_true_fn(1)
        }
      - |
        package test

        foo(__local224__) := y if {
        	trim(__local224__, "h o", y)
        }

        cross := y if {
        	data.ex.cross("hi, my name is foo", y)
        }

        multi("foo", __local225__) := y if {
        	y = __local225__
        }

        multi("bar", __local227__) := y if {
        	y = "baz"
        }

        multi_cross_pkg := [y, z] if {
        	data.test.multi("foo", "bar", y)
        	data.ex.multi(2, 1, z)
        }
    data: {}
    want_result:
      - x: true
