@@ -528,3 +528,42 @@ private module CmdExprRemoval {
528
528
}
529
529
}
530
530
}
531
+
532
+ /**
533
+ * Clean up arguments to commands by:
534
+ * - Removing the parameter name as an argument.
535
+ */
536
+ private module CmdArguments {
537
+ private class CmdParameterRemoval extends Synthesis {
538
+ override predicate child ( Raw:: Ast parent , ChildIndex i , Child child ) {
539
+ exists ( Raw:: Expr e |
540
+ this .rawChild ( parent , i , e ) and
541
+ child = childRef ( getResultAst ( e ) )
542
+ )
543
+ }
544
+
545
+ private predicate rawChild ( Raw:: Cmd cmd , ChildIndex i , Raw:: Expr child ) {
546
+ exists ( int index |
547
+ i = cmdArgument ( index ) and
548
+ child = cmd .getArgument ( index )
549
+ )
550
+ }
551
+
552
+ override predicate isNamedArgument ( CmdCall call , int i , string name ) {
553
+ exists ( Raw:: Cmd cmd , Raw:: Expr e , Raw:: CmdParameter p |
554
+ this .rawChild ( cmd , cmdArgument ( i ) , e ) and
555
+ call = getResultAst ( cmd ) and
556
+ p .getName ( ) .toLowerCase ( ) = name
557
+ |
558
+ p .getExpr ( ) = e
559
+ or
560
+ exists ( ChildIndex j , int jndex |
561
+ j = cmdElement_ ( jndex ) and
562
+ not exists ( p .getExpr ( ) ) and
563
+ cmd .getChild ( toRawChildIndex ( j ) ) = p and
564
+ cmd .getChild ( toRawChildIndex ( cmdElement_ ( jndex + 1 ) ) ) = e
565
+ )
566
+ )
567
+ }
568
+ }
569
+ }
0 commit comments