Skip to content

Commit eeaa7e7

Browse files
committed
Update test assertion parsing with new syntax
1 parent 8acd67c commit eeaa7e7

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

pkg/composableschemadsl/parser/parser.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -879,10 +879,15 @@ func (p *sourceParser) consumeTestAssertion() AstNode {
879879
}
880880
assertionNode.Connect(dslshape.NodeTestPredicateObject, objectNode)
881881

882+
// is
883+
if ok := p.consumeKeyword("is"); !ok {
884+
return assertionNode
885+
}
886+
882887
// assertion type
883-
if _, ok := p.tryConsume(lexer.TokenTypeExclamationPoint); ok {
888+
if ok := p.tryConsumeKeyword("not"); ok {
884889
assertionNode.MustDecorate(dslshape.NodeTestPredicateAssertionType, "negative")
885-
} else if _, ok := p.tryConsume(lexer.TokenTypeQuestionMark); ok {
890+
} else if ok := p.tryConsumeKeyword("conditional"); ok {
886891
assertionNode.MustDecorate(dslshape.NodeTestPredicateAssertionType, "conditional")
887892
} else {
888893
// If no marker, it's a positive assertion
@@ -896,6 +901,11 @@ func (p *sourceParser) consumeTestAssertion() AstNode {
896901
}
897902
assertionNode.MustDecorate(dslshape.NodeTestPredicatePermission, permission)
898903

904+
// for
905+
if ok := p.consumeKeyword("for"); !ok {
906+
return assertionNode
907+
}
908+
899909
// subject consumption
900910
subjectNode, ok := p.consumeTestObject()
901911
if !ok {
@@ -904,7 +914,7 @@ func (p *sourceParser) consumeTestAssertion() AstNode {
904914
assertionNode.Connect(dslshape.NodeTestPredicateSubject, subjectNode)
905915

906916
// optional caveat context
907-
if p.isToken(lexer.TokenTypeLeftBrace) {
917+
if ok := p.tryConsumeKeyword("when"); ok {
908918
caveatContextNode, ok := p.consumeOpaqueBraceExpression()
909919
if !ok {
910920
return assertionNode

0 commit comments

Comments
 (0)