1616package nextflow .script .control ;
1717
1818import nextflow .script .ast .ASTNodeMarker ;
19- import nextflow .script .ast .AssignmentExpression ;
20- import nextflow .script .ast .FeatureFlagNode ;
2119import nextflow .script .ast .ProcessNode ;
2220import nextflow .script .ast .ScriptNode ;
2321import nextflow .script .ast .ScriptVisitorSupport ;
2422import nextflow .script .ast .WorkflowNode ;
25- import nextflow .script .types .TypeChecker ;
26- import nextflow .script .types .Types ;
2723import org .codehaus .groovy .ast .ASTNode ;
2824import org .codehaus .groovy .ast .MethodNode ;
29- import org .codehaus .groovy .ast .Variable ;
30- import org .codehaus .groovy .ast .expr .BinaryExpression ;
31- import org .codehaus .groovy .ast .expr .DeclarationExpression ;
32- import org .codehaus .groovy .ast .expr .EmptyExpression ;
33- import org .codehaus .groovy .ast .expr .Expression ;
3425import org .codehaus .groovy .ast .expr .MethodCallExpression ;
35- import org .codehaus .groovy .ast .expr .PropertyExpression ;
36- import org .codehaus .groovy .ast .expr .VariableExpression ;
37- import org .codehaus .groovy .ast .stmt .ExpressionStatement ;
3826import org .codehaus .groovy .control .SourceUnit ;
3927import org .codehaus .groovy .control .messages .SyntaxErrorMessage ;
4028import org .codehaus .groovy .syntax .SyntaxException ;
@@ -50,11 +38,8 @@ public class TypeCheckingVisitor extends ScriptVisitorSupport {
5038
5139 private SourceUnit sourceUnit ;
5240
53- private boolean experimental ;
54-
55- public TypeCheckingVisitor (SourceUnit sourceUnit , boolean experimental ) {
41+ public TypeCheckingVisitor (SourceUnit sourceUnit ) {
5642 this .sourceUnit = sourceUnit ;
57- this .experimental = experimental ;
5843 }
5944
6045 @ Override
@@ -68,33 +53,6 @@ public void visit() {
6853 visit (sn );
6954 }
7055
71- // script declarations
72-
73- @ Override
74- public void visitFeatureFlag (FeatureFlagNode node ) {
75- if ( !experimental )
76- return ;
77- var fn = node .target ;
78- if ( fn == null )
79- return ;
80- var expectedType = fn .getType ();
81- var actualType = node .value .getType ();
82- if ( !Types .isAssignableFrom (expectedType , actualType ) )
83- addError ("Type mismatch for feature flag '" + node .name + "' -- expected a " + Types .getName (expectedType ) + " but received a " + Types .getName (actualType ), node );
84- }
85-
86- // statements
87-
88- @ Override
89- public void visitExpressionStatement (ExpressionStatement node ) {
90- var exp = node .getExpression ();
91- if ( exp instanceof AssignmentExpression ae && ae .getNodeMetaData (ASTNodeMarker .IMPLICIT_DECLARATION ) != null ) {
92- applyDeclaration (ae );
93- return ;
94- }
95- super .visitExpressionStatement (node );
96- }
97-
9856 // expressions
9957
10058 @ Override
@@ -112,42 +70,6 @@ private void checkMethodCallArguments(MethodCallExpression node, MethodNode defN
11270 addError (String .format ("Incorrect number of call arguments, expected %d but received %d" , paramsCount , argsCount ), node );
11371 }
11472
115- @ Override
116- public void visitDeclarationExpression (DeclarationExpression node ) {
117- applyDeclaration (node );
118- }
119-
120- private void applyDeclaration (BinaryExpression node ) {
121- var target = node .getLeftExpression ();
122- var source = node .getRightExpression ();
123- if ( source instanceof EmptyExpression )
124- return ;
125- visit (target );
126- visit (source );
127- var sourceType = TypeChecker .getType (source );
128- target .putNodeMetaData (ASTNodeMarker .INFERRED_TYPE , sourceType );
129- }
130-
131- @ Override
132- public void visitPropertyExpression (PropertyExpression node ) {
133- super .visitPropertyExpression (node );
134-
135- if ( TypeChecker .getType (node ) == null ) {
136- var mn = asMethodNamedOutput (node );
137- var property = node .getPropertyAsString ();
138- if ( mn instanceof ProcessNode pn )
139- addError ("Unrecognized output `" + property + "` for process `" + pn .getName () + "`" , node );
140- else if ( mn instanceof WorkflowNode wn )
141- addError ("Unrecognized output `" + property + "` for workflow `" + wn .getName () + "`" , node );
142- }
143- }
144-
145- private static MethodNode asMethodNamedOutput (PropertyExpression node ) {
146- if ( node .getObjectExpression () instanceof PropertyExpression pe )
147- return asMethodOutput (pe );
148- return null ;
149- }
150-
15173 @ Override
15274 public void addError (String message , ASTNode node ) {
15375 var cause = new TypeError (message , node );
0 commit comments