diff --git a/testdata/obj_local_right_level.golden b/testdata/obj_local_right_level.golden new file mode 100644 index 0000000..59e290c --- /dev/null +++ b/testdata/obj_local_right_level.golden @@ -0,0 +1,3 @@ +{ + "bar": 1 +} diff --git a/testdata/obj_local_right_level.jsonnet b/testdata/obj_local_right_level.jsonnet new file mode 100644 index 0000000..d641a27 --- /dev/null +++ b/testdata/obj_local_right_level.jsonnet @@ -0,0 +1,6 @@ +{ + bar: 0 +} + { + local foo = super.bar + 1, + bar: foo +} + {} + {} + {} \ No newline at end of file diff --git a/testdata/obj_local_right_level2.golden b/testdata/obj_local_right_level2.golden new file mode 100644 index 0000000..350fead --- /dev/null +++ b/testdata/obj_local_right_level2.golden @@ -0,0 +1,4 @@ +{ + "answer": "right", + "bar": "right" +} diff --git a/testdata/obj_local_right_level2.jsonnet b/testdata/obj_local_right_level2.jsonnet new file mode 100644 index 0000000..2531fe5 --- /dev/null +++ b/testdata/obj_local_right_level2.jsonnet @@ -0,0 +1,7 @@ +{ + local foo = self.bar, + bar: "wrong", + answer: foo +} + { + bar: "right" +} \ No newline at end of file diff --git a/testdata/obj_local_right_level3.golden b/testdata/obj_local_right_level3.golden new file mode 100644 index 0000000..9e01204 --- /dev/null +++ b/testdata/obj_local_right_level3.golden @@ -0,0 +1,4 @@ +{ + "answer": "right", + "bar": "wrong2" +} diff --git a/testdata/obj_local_right_level3.jsonnet b/testdata/obj_local_right_level3.jsonnet new file mode 100644 index 0000000..b1465f9 --- /dev/null +++ b/testdata/obj_local_right_level3.jsonnet @@ -0,0 +1,9 @@ +{ + bar: "right", +} + { + local foo = super.bar, + bar: "wrong1", + answer: foo, +} + { + bar: "wrong2" +} \ No newline at end of file diff --git a/value.go b/value.go index 068f4a8..81c865c 100644 --- a/value.go +++ b/value.go @@ -648,7 +648,7 @@ func objectIndex(i *interpreter, trace TraceElement, sb selfBinding, fieldName s } fieldSelfBinding := selfBinding{self: sb.self, superDepth: foundAt} - fieldUpValues := prepareFieldUpvalues(sb, upValues, locals) + fieldUpValues := prepareFieldUpvalues(fieldSelfBinding, upValues, locals) return field.field.evaluate(i, trace, fieldSelfBinding, fieldUpValues, fieldName) }