diff --git a/src/Serilog.Expressions/Templates/Compilation/NameResolution/TemplateLocalNameResolver.cs b/src/Serilog.Expressions/Templates/Compilation/NameResolution/TemplateLocalNameBinder.cs similarity index 97% rename from src/Serilog.Expressions/Templates/Compilation/NameResolution/TemplateLocalNameResolver.cs rename to src/Serilog.Expressions/Templates/Compilation/NameResolution/TemplateLocalNameBinder.cs index 60bdb57..cf8683c 100644 --- a/src/Serilog.Expressions/Templates/Compilation/NameResolution/TemplateLocalNameResolver.cs +++ b/src/Serilog.Expressions/Templates/Compilation/NameResolution/TemplateLocalNameBinder.cs @@ -76,7 +76,7 @@ Template Transform(Repetition rep, Stack locals) locals.Pop(); return new Repetition( - rep.Enumerable, + ExpressionLocalNameBinder.BindLocalValueNames(rep.Enumerable, locals), rep.BindingNames, body, rep.Delimiter != null ? Transform(rep.Delimiter, locals) : null, diff --git a/test/Serilog.Expressions.Tests/Cases/template-evaluation-cases.asv b/test/Serilog.Expressions.Tests/Cases/template-evaluation-cases.asv index 5df712a..55c0079 100644 --- a/test/Serilog.Expressions.Tests/Cases/template-evaluation-cases.asv +++ b/test/Serilog.Expressions.Tests/Cases/template-evaluation-cases.asv @@ -25,6 +25,7 @@ A{#if false}B{#else if true}C{#end} ⇶ AC {#each a in [1,2,3]}<{a}>{#delimit},{#end} ⇶ <1>,<2>,<3> {#each a in {x: 1, y: 2}}{a}{#end} ⇶ xy {#each a, b in {x: 1, y: 2}}{a}.{b}{#end} ⇶ x.1y.2 +{#each a, b in {x: {y: 'z'}}}{#each c, d in b}A: {a}, C: {c}, D: {d}{#end}{#end} ⇶ A: x, C: y, D: z {#if true}A{#each a in [1]}B{a}{#end}C{#end}D ⇶ AB1CD {#each a in []}{a}!{#else}none{#end} ⇶ none Culture-specific {42.34} ⇶ Culture-specific 42,34