@@ -550,33 +550,49 @@ private module CmdExprRemoval {
550550private module CmdArguments {
551551 private class CmdParameterRemoval extends Synthesis {
552552 override predicate child ( Raw:: Ast parent , ChildIndex i , Child child ) {
553- exists ( Raw:: Expr e |
554- this .rawChild ( parent , i , e ) and
555- child = childRef ( getResultAst ( e ) )
553+ exists ( Raw:: CmdElement elem | this .rawChild ( parent , i , elem ) |
554+ elem instanceof Raw:: Expr and
555+ child = childRef ( getResultAst ( elem ) )
556+ or
557+ // By construction of `Cmd::getArgument` this `CmdParameter` does not
558+ // have an expression attached to it.
559+ elem instanceof Raw:: CmdParameter and
560+ child = SynthChild ( BoolLiteralKind ( true ) )
556561 )
557562 }
558563
559- private predicate rawChild ( Raw:: Cmd cmd , ChildIndex i , Raw:: Expr child ) {
564+ private predicate rawChild ( Raw:: Cmd cmd , ChildIndex i , Raw:: CmdElement child ) {
560565 exists ( int index |
561566 i = cmdArgument ( index ) and
562567 child = cmd .getArgument ( index )
563568 )
564569 }
565570
566571 override predicate isNamedArgument ( CmdCall call , int i , string name ) {
567- exists ( Raw:: Cmd cmd , Raw:: Expr e , Raw:: CmdParameter p |
568- this .rawChild ( cmd , cmdArgument ( i ) , e ) and
572+ exists ( Raw:: Cmd cmd , Raw:: CmdElement elem |
569573 call = getResultAst ( cmd ) and
570- p . getName ( ) . toLowerCase ( ) = name
574+ cmd . getArgument ( i ) = elem
571575 |
572- p .getExpr ( ) = e
573- or
574- exists ( ChildIndex j , int jndex |
575- j = cmdElement_ ( jndex ) and
576- not exists ( p .getExpr ( ) ) and
577- cmd .getChild ( toRawChildIndex ( j ) ) = p and
578- cmd .getChild ( toRawChildIndex ( cmdElement_ ( jndex + 1 ) ) ) = e
579- )
576+ elem = cmd .getNamedArgument ( name ) or cmd .getSwitchArgument ( name ) = elem
577+ )
578+ }
579+
580+ final override predicate isRelevant ( Raw:: Ast a ) {
581+ a instanceof Raw:: CmdParameter and
582+ this .rawChild ( _, _, a )
583+ }
584+
585+ final override Expr getResultAstImpl ( Raw:: Ast r ) {
586+ exists ( Raw:: Cmd cmd , ChildIndex i |
587+ this .rawChild ( cmd , i , r ) and
588+ result = TBoolLiteral ( cmd , i )
589+ )
590+ }
591+
592+ final override predicate booleanValue ( BoolLiteral b , boolean value ) {
593+ exists ( Raw:: Ast parent , ChildIndex i |
594+ b = TBoolLiteral ( parent , i ) and
595+ this .child ( parent , i , SynthChild ( BoolLiteralKind ( value ) ) )
580596 )
581597 }
582598 }
0 commit comments