aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lua/mason-core/installer/compiler/expr.lua3
-rw-r--r--tests/mason-core/installer/compiler/expr_spec.lua13
2 files changed, 16 insertions, 0 deletions
diff --git a/lua/mason-core/installer/compiler/expr.lua b/lua/mason-core/installer/compiler/expr.lua
index a07fc00d..cc5aa07a 100644
--- a/lua/mason-core/installer/compiler/expr.lua
+++ b/lua/mason-core/installer/compiler/expr.lua
@@ -95,6 +95,9 @@ function M.tbl_interpolate(tbl, ctx)
return Result.try(function(try)
local interpolated = {}
for k, v in pairs(tbl) do
+ if type(k) == "string" then
+ k = try(M.interpolate(k, ctx))
+ end
if type(v) == "string" then
interpolated[k] = try(M.interpolate(v, ctx))
elseif type(v) == "table" then
diff --git a/tests/mason-core/installer/compiler/expr_spec.lua b/tests/mason-core/installer/compiler/expr_spec.lua
index 944a5983..4f96c04f 100644
--- a/tests/mason-core/installer/compiler/expr_spec.lua
+++ b/tests/mason-core/installer/compiler/expr_spec.lua
@@ -270,4 +270,17 @@ describe("table interpolation", function()
}, {})
)
end)
+
+ it("should interpolate string keys", function()
+ assert.same(
+ Result.success {
+ ["a-1.2.3"] = "1.2.3",
+ [12] = "12",
+ },
+ expr.tbl_interpolate({
+ ["a-{{version}}"] = "{{version}}",
+ [12] = "12",
+ }, { version = "1.2.3" })
+ )
+ end)
end)