func TestSplitExpBindingSource(t *testing.T) {
	ast := testGood(t, `
pipeline MAPPED(
	in  int thingy,
	out int thing,
)
{
	return (
		thing = self.thingy,
	)
}
pipeline MAPPER(
	in  int[]    thingies,
	out MAPPED[] things,
)
{
	map call MAPPED(
		thingy = split self.thingies,
	)
	return (
		things = MAPPED,
	)
}
map call MAPPER(
	thingies = split [
		[
			1,
		],
		[
			2,
			3,
			4,
		],
	],
)
`)
	if ast == nil {
		return
	}
	graph, err := ast.MakeCallGraph("", ast.Call)
	if err != nil {
		t.Fatal(err)
	}
	mappedCall := graph.GetChildren()[0]
	thingy := mappedCall.ResolvedInputs()["thingy"].Exp.(*SplitExp)
	if thingy.Source.KnownLength() {
		t.Error("Not supposed to be known length.")
	}
	fork := map[*CallStm]CollectionIndex{
		graph.Call(): arrayIndex(0),
	}
	boundThingy, err := thingy.BindingPath("", fork, &ast.TypeTable)
	if err != nil {
		t.Fatal(err)
	}
	split := boundThingy.(*SplitExp).Source
	if !split.KnownLength() {
		t.Error("expected known length for", split.GoString(),
			"backing", boundThingy.GoString())
	} else if split.ArrayLength() != 1 {
		t.Errorf("%d != 1 backing %s", split.ArrayLength(),
			boundThingy.GoString())
	}
	fork[graph.Call()] = arrayIndex(1)
	boundThingy, err = thingy.BindingPath("", fork, &ast.TypeTable)
	if err != nil {
		t.Fatal(err)
	}
	split = boundThingy.(*SplitExp).Source
	if !split.KnownLength() {
		t.Error("expected known length for", split.GoString(),
			"backing", boundThingy.GoString())
	} else if split.ArrayLength() != 3 {
		t.Errorf("%d != 3 backing %s", split.ArrayLength(),
			boundThingy.GoString())
	}
}
Tests that SplitExp.BindingPath has a correct Source.
package syntax
import "testing"