MCPcopy Create free account
hub / github.com/dop251/goja / parseRelationalExpression

Method parseRelationalExpression

parser/expression.go:968–1027  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

966}
967
968func (self *_parser) parseRelationalExpression() ast.Expression {
969 if self.scope.allowIn && self.token == token.PRIVATE_IDENTIFIER {
970 left := &ast.PrivateIdentifier{
971 Identifier: ast.Identifier{
972 Idx: self.idx,
973 Name: self.parsedLiteral,
974 },
975 }
976 self.next()
977 if self.token == token.IN {
978 self.next()
979 return &ast.BinaryExpression{
980 Operator: self.token,
981 Left: left,
982 Right: self.parseShiftExpression(),
983 }
984 }
985 return left
986 }
987 left := self.parseShiftExpression()
988
989 allowIn := self.scope.allowIn
990 self.scope.allowIn = true
991 defer func() {
992 self.scope.allowIn = allowIn
993 }()
994
995 switch self.token {
996 case token.LESS, token.LESS_OR_EQUAL, token.GREATER, token.GREATER_OR_EQUAL:
997 tkn := self.token
998 self.next()
999 return &ast.BinaryExpression{
1000 Operator: tkn,
1001 Left: left,
1002 Right: self.parseRelationalExpression(),
1003 Comparison: true,
1004 }
1005 case token.INSTANCEOF:
1006 tkn := self.token
1007 self.next()
1008 return &ast.BinaryExpression{
1009 Operator: tkn,
1010 Left: left,
1011 Right: self.parseRelationalExpression(),
1012 }
1013 case token.IN:
1014 if !allowIn {
1015 return left
1016 }
1017 tkn := self.token
1018 self.next()
1019 return &ast.BinaryExpression{
1020 Operator: tkn,
1021 Left: left,
1022 Right: self.parseRelationalExpression(),
1023 }
1024 }
1025

Callers 1

Calls 2

nextMethod · 0.95
parseShiftExpressionMethod · 0.95

Tested by

no test coverage detected