Skip to content

Commit 481c773

Browse files
authored
Fix false error on nested closure in config process directive (#6203)
Signed-off-by: Ben Sherman <bentshermann@gmail.com>
1 parent 3e1837e commit 481c773

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

modules/nf-lang/src/main/java/nextflow/config/control/VariableScopeVisitor.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.codehaus.groovy.ast.expr.ConstantExpression;
4242
import org.codehaus.groovy.ast.expr.DeclarationExpression;
4343
import org.codehaus.groovy.ast.expr.Expression;
44+
import org.codehaus.groovy.ast.expr.MapEntryExpression;
4445
import org.codehaus.groovy.ast.expr.MethodCallExpression;
4546
import org.codehaus.groovy.ast.expr.TupleExpression;
4647
import org.codehaus.groovy.ast.expr.VariableExpression;
@@ -146,6 +147,17 @@ private static boolean isWorkflowHandler(List<String> scopes, ConfigAssignNode n
146147
&& List.of("onComplete", "onError").contains(option);
147148
}
148149

150+
@Override
151+
public void visitMapEntryExpression(MapEntryExpression node) {
152+
node.getKeyExpression().visit(this);
153+
154+
var ic = inClosure;
155+
if( inProcess && node.getValueExpression() instanceof ClosureExpression )
156+
inClosure = true;
157+
node.getValueExpression().visit(this);
158+
inClosure = ic;
159+
}
160+
149161
@Override
150162
public void visitConfigBlock(ConfigBlockNode node) {
151163
var newScope = node.kind == null;

modules/nf-lang/src/test/groovy/nextflow/config/control/ConfigResolveTest.groovy

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,16 @@ class ConfigResolveTest extends Specification {
163163
'''\
164164
process {
165165
ext.prefix = { "${meta.id}.filter1" }
166+
167+
publishDir = [
168+
path: { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" },
169+
mode: params.publish_dir_mode,
170+
]
171+
172+
publishDir = [
173+
path: { "${params.outdir}/imputation/${meta.tools}/samples/" },
174+
mode: params.publish_dir_mode,
175+
]
166176
}
167177
'''
168178
)

0 commit comments

Comments
 (0)