class JjUnary_c extends Unary_c {

  public JjUnary_c(Position pos, Unary.Operator op, Expr expr) {
    super(pos, op, expr);
  }

  public Type childExpectedType(Expr child, AscriptionVisitor av) {<FILL_FUNCTION_BODY>}
}

    TypeSystem ts = av.typeSystem();

    if (child == expr) {
      if (op == POST_INC || op == POST_DEC || op == PRE_INC || op == PRE_DEC) {
        // if (child.type().isByte() || child.type().isShort()){// || child.type().isChar()) {
        // return ts.Int();
        // }
        return child.type();
      } else if (op == NEG || op == POS) {
        // if (child.type().isByte() || child.type().isShort() || child.type().isChar()) {
        // return ts.Int();
        // }
        return child.type();
      } else if (op == BIT_NOT) {
        // if (child.type().isByte() || child.type().isShort() || child.type().isChar()) {
        // return ts.Int();
        // }
        return child.type();
      } else if (op == NOT) {
        return ts.Boolean();
      }
    }

    return child.type();

  
<methods>public void <init>(polyglot.util.Position, polyglot.ast.Unary.Operator, polyglot.ast.Expr) ,public List#RAW acceptCFG(polyglot.visit.CFGBuilder, List#RAW) ,public polyglot.types.Type childExpectedType(polyglot.ast.Expr, polyglot.visit.AscriptionVisitor) ,public java.lang.Object constantValue() ,public polyglot.ast.Term entry() ,public polyglot.ast.Expr expr() ,public polyglot.ast.Unary expr(polyglot.ast.Expr) ,public boolean isConstant() ,public polyglot.ast.Unary.Operator operator() ,public polyglot.ast.Unary operator(polyglot.ast.Unary.Operator) ,public polyglot.ast.Precedence precedence() ,public void prettyPrint(polyglot.util.CodeWriter, polyglot.visit.PrettyPrinter) ,public java.lang.String toString() ,public polyglot.ast.Node typeCheck(polyglot.visit.TypeChecker) throws polyglot.types.SemanticException,public polyglot.ast.Node visitChildren(polyglot.visit.NodeVisitor) <variables>protected polyglot.ast.Expr expr,protected polyglot.ast.Unary.Operator op