()
| 2943 | } |
| 2944 | |
| 2945 | private AstNode unaryExpr() throws IOException { |
| 2946 | AstNode node; |
| 2947 | int tt = peekToken(); |
| 2948 | if (tt == Token.COMMENT) { |
| 2949 | consumeToken(); |
| 2950 | tt = peekUntilNonComment(tt); |
| 2951 | } |
| 2952 | int line, column; |
| 2953 | |
| 2954 | switch (tt) { |
| 2955 | case Token.VOID: |
| 2956 | case Token.NOT: |
| 2957 | case Token.BITNOT: |
| 2958 | case Token.TYPEOF: |
| 2959 | consumeToken(); |
| 2960 | line = lineNumber(); |
| 2961 | column = columnNumber(); |
| 2962 | node = new UnaryExpression(tt, ts.tokenBeg, unaryExpr()); |
| 2963 | node.setLineColumnNumber(line, column); |
| 2964 | return node; |
| 2965 | |
| 2966 | case Token.ADD: |
| 2967 | consumeToken(); |
| 2968 | line = lineNumber(); |
| 2969 | column = columnNumber(); |
| 2970 | // Convert to special POS token in parse tree |
| 2971 | node = new UnaryExpression(Token.POS, ts.tokenBeg, unaryExpr()); |
| 2972 | node.setLineColumnNumber(line, column); |
| 2973 | return node; |
| 2974 | |
| 2975 | case Token.SUB: |
| 2976 | consumeToken(); |
| 2977 | line = lineNumber(); |
| 2978 | column = columnNumber(); |
| 2979 | // Convert to special NEG token in parse tree |
| 2980 | node = new UnaryExpression(Token.NEG, ts.tokenBeg, unaryExpr()); |
| 2981 | node.setLineColumnNumber(line, column); |
| 2982 | return node; |
| 2983 | |
| 2984 | case Token.INC: |
| 2985 | case Token.DEC: |
| 2986 | consumeToken(); |
| 2987 | line = lineNumber(); |
| 2988 | column = columnNumber(); |
| 2989 | UpdateExpression expr = new UpdateExpression(tt, ts.tokenBeg, memberExpr(true)); |
| 2990 | expr.setLineColumnNumber(line, column); |
| 2991 | checkBadIncDec(expr); |
| 2992 | return expr; |
| 2993 | |
| 2994 | case Token.DELPROP: |
| 2995 | consumeToken(); |
| 2996 | line = lineNumber(); |
| 2997 | column = columnNumber(); |
| 2998 | node = new UnaryExpression(tt, ts.tokenBeg, unaryExpr()); |
| 2999 | node.setLineColumnNumber(line, column); |
| 3000 | return node; |
| 3001 | |
| 3002 | case Token.ERROR: |
no test coverage detected