@@ -879,10 +879,15 @@ func (p *sourceParser) consumeTestAssertion() AstNode {
879
879
}
880
880
assertionNode .Connect (dslshape .NodeTestPredicateObject , objectNode )
881
881
882
+ // is
883
+ if ok := p .consumeKeyword ("is" ); ! ok {
884
+ return assertionNode
885
+ }
886
+
882
887
// assertion type
883
- if _ , ok := p .tryConsume ( lexer . TokenTypeExclamationPoint ); ok {
888
+ if ok := p .tryConsumeKeyword ( "not" ); ok {
884
889
assertionNode .MustDecorate (dslshape .NodeTestPredicateAssertionType , "negative" )
885
- } else if _ , ok := p .tryConsume ( lexer . TokenTypeQuestionMark ); ok {
890
+ } else if ok := p .tryConsumeKeyword ( "conditional" ); ok {
886
891
assertionNode .MustDecorate (dslshape .NodeTestPredicateAssertionType , "conditional" )
887
892
} else {
888
893
// If no marker, it's a positive assertion
@@ -896,6 +901,11 @@ func (p *sourceParser) consumeTestAssertion() AstNode {
896
901
}
897
902
assertionNode .MustDecorate (dslshape .NodeTestPredicatePermission , permission )
898
903
904
+ // for
905
+ if ok := p .consumeKeyword ("for" ); ! ok {
906
+ return assertionNode
907
+ }
908
+
899
909
// subject consumption
900
910
subjectNode , ok := p .consumeTestObject ()
901
911
if ! ok {
@@ -904,7 +914,7 @@ func (p *sourceParser) consumeTestAssertion() AstNode {
904
914
assertionNode .Connect (dslshape .NodeTestPredicateSubject , subjectNode )
905
915
906
916
// optional caveat context
907
- if p . isToken ( lexer . TokenTypeLeftBrace ) {
917
+ if ok := p . tryConsumeKeyword ( "when" ); ok {
908
918
caveatContextNode , ok := p .consumeOpaqueBraceExpression ()
909
919
if ! ok {
910
920
return assertionNode
0 commit comments