Method with hyphens between quotes fails with in syntax parser v2
## Bug report
When declaring a process with hyphens, it fails because it is not a valid method in groovy. However, when adding it between quotes, it works for syntax parser V1, but not for V2 it fails.
### Expected behavior and actual behavior
Both parsers should run the process, or at least this change must be document in the strict syntax.
### Steps to reproduce the problem
main.nf
```
process 'MY-MODULE' {
input:
val greeting
output:
stdout
script:
"""
echo '${greeting}'
"""
}
workflow {
'MY-MODULE'("hola")
}
```
```
$ NXF_SYNTAX_PARSER=v1 nextflow run main.nf
N E X T F L O W ~ version 26.03.1-edge
Launching `main.nf` [special_kay] revision: e9bbf97ff2
executor > local (1)
[08/99abf6] process > MY-MODULE [100%] 1 of 1 ✔
jorgee@PF54MRDZ:~$ NXF_SYNTAX_PARSER=v2 dev_nextflow run main.nf
N E X T F L O W ~ version 26.03.1-edge
Launching `main.nf` [serene_kimura] revision: e9bbf97ff2
Error main.nf:5:1: Invalid process definition -- check for missing or out-of-order section labels
│ 3 | */
│ 4 |
│ 5 | process 'MY-MODULE' {
│ | ^^^^^^^^^^^^^^^^^^^^^
│ 6 | input:
╰ 7 | val greeting
ERROR ~ Script compilation failed
-- Check '.nextflow.log' file for details
```
### Program output
```
Apr-07 15:58:03.862 [main] DEBUG nextflow.Session - Session start
Apr-07 15:58:03.866 [main] DEBUG nextflow.script.ScriptLoaderFactory - Using script parser v2
Apr-07 15:58:03.926 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files:
Apr-07 15:58:03.937 [main] DEBUG n.trace.WorkflowStatsObserver - Workflow completed > WorkflowStats[succeededCount=0; failedCount=0; ignoredCount=0; cachedCount=0; pendingCount=0; submittedCount=0; runningCount=0; retriesCount=0; abortedCount=0; succeedDuration=0ms; failedDuration=0ms; cachedDuration=0ms;loadCpus=0; loadMemory=0; peakRunning=0; peakCpus=0; peakMemory=0; ]
Apr-07 15:58:04.077 [main] ERROR nextflow.cli.Launcher - Script compilation failed
nextflow.exception.ScriptCompilationException: Script compilation failed
at nextflow.script.parser.v2.ScriptLoaderV2.parse0(ScriptLoaderV2.groovy:129)
at nextflow.script.parser.v2.ScriptLoaderV2.parse(ScriptLoaderV2.groovy:81)
at nextflow.script.parser.v2.ScriptLoaderV2.parse(ScriptLoaderV2.groovy)
at nextflow.script.ScriptRunner.parseScript(ScriptRunner.groovy:215)
at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:126)
at nextflow.cli.CmdRun.run(CmdRun.groovy:441)
at nextflow.cli.Launcher.run(Launcher.groovy:526)
at nextflow.cli.Launcher.main(Launcher.groovy:686)
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Main: 5: Invalid process definition -- check for missing or out-of-order section labels @ line 5, column 1.
process 'MY-MODULE' {
^
1 error
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:292)
at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:148)
at nextflow.script.parser.ScriptAstBuilder.collectSyntaxError(ScriptAstBuilder.java:2187)
at nextflow.script.parser.ScriptAstBuilder.compilationUnit(ScriptAstBuilder.java:230)
at nextflow.script.parser.ScriptAstBuilder.buildAST(ScriptAstBuilder.java:202)
at nextflow.script.parser.ScriptParserPlugin.buildAST(ScriptParserPlugin.java:51)
at org.codehaus.groovy.control.SourceUnit.buildAST(SourceUnit.java:256)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:631)
at nextflow.script.parser.v2.ScriptCompiler.compile0(ScriptCompiler.java:146)
at nextflow.script.parser.v2.ScriptCompiler.compile(ScriptCompiler.java:112)
at nextflow.script.parser.v2.ScriptLoaderV2.parse0(ScriptLoaderV2.groovy:114)
... 7 common frames omitted
```
### Environment
* Nextflow version: 26.03.1-edge
* Java version: 24
* Operating system: Linux, e
0 条评论