()
| 966 | } |
| 967 | |
| 968 | func (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 |
no test coverage detected