Skip to content

Commit 824dabb

Browse files
Move AST transforms to nf-lang (#6247)
Signed-off-by: Ben Sherman <bentshermann@gmail.com> Co-authored-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
1 parent 544b8c4 commit 824dabb

19 files changed

+712
-766
lines changed

modules/nextflow/src/main/groovy/nextflow/Nextflow.groovy

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ import java.nio.file.NoSuchFileException
2424
import java.nio.file.Path
2525

2626
import groovyx.gpars.dataflow.DataflowReadChannel
27-
import nextflow.ast.OpXform
28-
import nextflow.ast.OpXformImpl
2927
import nextflow.exception.StopSplitIterationException
3028
import nextflow.exception.WorkflowScriptErrorException
3129
import nextflow.extension.GroupKey

modules/nextflow/src/main/groovy/nextflow/ast/NextflowXform.groovy

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,33 @@ import java.lang.annotation.Retention
2121
import java.lang.annotation.RetentionPolicy
2222
import java.lang.annotation.Target
2323

24+
import groovy.transform.CompileStatic
25+
import nextflow.script.control.PathCompareVisitor
26+
import org.codehaus.groovy.ast.ASTNode
27+
import org.codehaus.groovy.ast.ClassNode
28+
import org.codehaus.groovy.control.CompilePhase
29+
import org.codehaus.groovy.control.SourceUnit
30+
import org.codehaus.groovy.transform.ASTTransformation
31+
import org.codehaus.groovy.transform.GroovyASTTransformation
2432
import org.codehaus.groovy.transform.GroovyASTTransformationClass
2533

2634
/**
27-
* Marker interface which to apply AST transformation to {@code process} declaration
35+
* Replace path comparisons with explicit method calls.
36+
*
37+
* @author Paolo Di Tommaso <paolo.ditommaso@gmail.com>
2838
*/
2939
@Retention(RetentionPolicy.SOURCE)
3040
@Target(ElementType.METHOD)
3141
@GroovyASTTransformationClass(classes = [NextflowXformImpl])
32-
@interface NextflowXform {}
42+
@interface NextflowXform {
43+
44+
@CompileStatic
45+
@GroovyASTTransformation(phase = CompilePhase.CONVERSION)
46+
class NextflowXformImpl implements ASTTransformation {
47+
48+
@Override
49+
void visit(ASTNode[] nodes, SourceUnit source) {
50+
new PathCompareVisitor(source).visitClass((ClassNode)nodes[1])
51+
}
52+
}
53+
}

modules/nextflow/src/main/groovy/nextflow/ast/NextflowXformImpl.groovy

Lines changed: 0 additions & 132 deletions
This file was deleted.

modules/nextflow/src/main/groovy/nextflow/ast/OpXform.groovy

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,35 @@ import java.lang.annotation.Retention
2121
import java.lang.annotation.RetentionPolicy
2222
import java.lang.annotation.Target
2323

24+
import nextflow.script.control.OpCriteriaVisitor
25+
import groovy.transform.CompileStatic
26+
import org.codehaus.groovy.ast.ASTNode
27+
import org.codehaus.groovy.ast.ClassNode
28+
import org.codehaus.groovy.control.CompilePhase
29+
import org.codehaus.groovy.control.SourceUnit
30+
import org.codehaus.groovy.transform.ASTTransformation
31+
import org.codehaus.groovy.transform.GroovyASTTransformation
2432
import org.codehaus.groovy.transform.GroovyASTTransformationClass
2533

2634
/**
27-
* Declares Nextflow operators AST xforms
35+
* Transform closure arguments for branch and multiMap
36+
* into the appropriate criteria objects.
37+
*
38+
* @author Paolo Di Tommaso <paolo.ditommaso@gmail.com>
2839
*/
2940
@Retention(RetentionPolicy.SOURCE)
3041
@Target(ElementType.METHOD)
3142
@GroovyASTTransformationClass(classes = [OpXformImpl])
32-
@interface OpXform {}
43+
@interface OpXform {
44+
45+
@CompileStatic
46+
@GroovyASTTransformation(phase = CompilePhase.CONVERSION)
47+
class OpXformImpl implements ASTTransformation {
48+
49+
@Override
50+
void visit(ASTNode[] nodes, SourceUnit source) {
51+
new OpCriteriaVisitor(source).visitClass((ClassNode)nodes[1])
52+
}
53+
54+
}
55+
}

0 commit comments

Comments
 (0)