diff --git a/shared/static/scripts/sx.js b/shared/static/scripts/sx.js index a8825f0..6b77fd6 100644 --- a/shared/static/scripts/sx.js +++ b/shared/static/scripts/sx.js @@ -813,13 +813,12 @@ var i = 0; while (i < args.length) { if (isKw(args[i]) && i + 1 < args.length) { - // Keep kwarg values as AST — renderDOM will handle them when the - // component body references the param symbol. Simple literals are - // eval'd so strings/numbers resolve immediately. + // Evaluate kwarg values eagerly so expressions like (get t "src") + // resolve in the caller's env (where lambda params are bound). var v = args[i + 1]; kwargs[args[i].name] = (typeof v === "string" || typeof v === "number" || - typeof v === "boolean" || isNil(v) || isKw(v)) - ? v : (isSym(v) ? sxEval(v, env) : v); + typeof v === "boolean" || isNil(v)) + ? v : sxEval(v, env); i += 2; } else { children.push(args[i]);