Commit ae9afff8d for llama.cpp
commit ae9afff8d2c012ca760eb9c2adf41961cf6f6232
Author: Sigbjørn Skjæret <sigbjorn.skjaeret@huggingface.co>
Date: Sat Sep 12 22:49:53 2026 +0200
jinja : support dot property integer literals (#28817)
diff --git a/common/jinja/runtime.cpp b/common/jinja/runtime.cpp
index 49354c7c9..252ab55de 100644
--- a/common/jinja/runtime.cpp
+++ b/common/jinja/runtime.cpp
@@ -842,6 +842,12 @@ value member_expression::execute_impl(context & ctx) {
} else {
property = this->property->execute(ctx);
}
+ } else if (is_stmt<integer_literal>(this->property)) {
+ // syntax: obj.index
+ property = mk_val<value_int>(cast_stmt<integer_literal>(this->property)->val);
+ if (property->as_int() < 0) {
+ throw std::runtime_error("Static member property cannot be negative");
+ }
} else {
// syntax: obj.prop
if (!is_stmt<identifier>(this->property)) {
diff --git a/tests/test-jinja.cpp b/tests/test-jinja.cpp
index ab551d7b3..00de91ddf 100644
--- a/tests/test-jinja.cpp
+++ b/tests/test-jinja.cpp
@@ -398,6 +398,18 @@ static void test_expressions(testing & t) {
"Bob"
);
+ test_template(t, "dot notation (integer property)",
+ "{{ {10: 'Bob'}.10 }}",
+ json::object(),
+ "Bob"
+ );
+
+ test_template(t, "dot notation (array index)",
+ "{{ user.10 }}",
+ {{"user", json::array({"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"})}},
+ "k"
+ );
+
test_template(t, "negative float (not dot notation)",
"{{ -1.0 }}",
json::object(),