Пример #1
0
  /**
   * @param node The node we want to have wrapped.
   * @return The (new) node parent (the block probably)
   */
  private AstNode makeSureBlockExistsAround(AstNode node) {
    AstNode parent = node.getParent();

    if (parent instanceof IfStatement) {
      /* the parent is an if and there are no braces, so we should make a new block */
      IfStatement i = (IfStatement) parent;

      /* replace the if or the then, depending on what the current node is */
      if (i.getThenPart().equals(node)) {
        i.setThenPart(createBlockWithNode(node));
      } else if (i.getElsePart() != null) {
        if (i.getElsePart().equals(node)) i.setElsePart(createBlockWithNode(node));
      }

    } else if (parent instanceof WhileLoop) {
      /* the parent is a while and there are no braces, so we should make a new block */
      /* I don't think you can find this in the real world, but just to be sure */
      WhileLoop w = (WhileLoop) parent;
      if (w.getBody().equals(node)) w.setBody(createBlockWithNode(node));
    } else if (parent instanceof ForLoop) {
      /* the parent is a for and there are no braces, so we should make a new block */
      /* I don't think you can find this in the real world, but just to be sure */
      ForLoop f = (ForLoop) parent;
      if (f.getBody().equals(node)) f.setBody(createBlockWithNode(node));
    }

    return node.getParent();
  }
Пример #2
0
  public void testLinenoIf() {
    AstRoot root =
        parse(
            "\nif\n"
                + "   (a == 3)\n"
                + "   {\n"
                + "     b = 0;\n"
                + "   }\n"
                + "     else\n"
                + "   {\n"
                + "     c = 1;\n"
                + "   }\n");

    IfStatement ifStmt = (IfStatement) root.getFirstChild();
    AstNode condClause = ifStmt.getCondition();
    AstNode thenClause = ifStmt.getThenPart();
    AstNode elseClause = ifStmt.getElsePart();

    assertEquals(1, ifStmt.getLineno());
    assertEquals(2, condClause.getLineno());
    assertEquals(3, thenClause.getLineno());
    assertEquals(7, elseClause.getLineno());
  }