public void testJSDocAttachment13() { AstRoot root = parse("({/** attach me */ get 'foo'() {}});"); assertNotNull(root.getComments()); assertEquals(1, root.getComments().size()); ExpressionStatement st = (ExpressionStatement) root.getFirstChild(); ParenthesizedExpression pt = (ParenthesizedExpression) st.getExpression(); ObjectLiteral lit = (ObjectLiteral) pt.getExpression(); StringLiteral stringLit = (StringLiteral) lit.getElements().get(0).getLeft(); assertNotNull(stringLit.getJsDoc()); }
public void testJSDocAttachment10() { AstRoot root = parse("({foo: /** attach me */ (bar)});"); assertNotNull(root.getComments()); assertEquals(1, root.getComments().size()); ExpressionStatement st = (ExpressionStatement) root.getFirstChild(); ParenthesizedExpression pt = (ParenthesizedExpression) st.getExpression(); ObjectLiteral lit = (ObjectLiteral) pt.getExpression(); ParenthesizedExpression parens = (ParenthesizedExpression) lit.getElements().get(0).getRight(); assertNotNull(parens.getJsDoc()); }
public void testJSDocAttachment9() { AstRoot root = parse("({/** attach me */ foo: 2});"); assertNotNull(root.getComments()); assertEquals(1, root.getComments().size()); ExpressionStatement st = (ExpressionStatement) root.getFirstChild(); ParenthesizedExpression pt = (ParenthesizedExpression) st.getExpression(); ObjectLiteral lit = (ObjectLiteral) pt.getExpression(); Name objLitKey = (Name) lit.getElements().get(0).getLeft(); assertNotNull(objLitKey.getJsDoc()); }
public void testJSDocAttachment6() { AstRoot root = parse("({1: /** don't attach me */ 2, 3: 4});"); assertNotNull(root.getComments()); assertEquals(1, root.getComments().size()); ExpressionStatement st = (ExpressionStatement) root.getFirstChild(); ParenthesizedExpression pt = (ParenthesizedExpression) st.getExpression(); ObjectLiteral lit = (ObjectLiteral) pt.getExpression(); for (ObjectProperty el : lit.getElements()) { assertNull(el.getLeft().getJsDoc()); assertNull(el.getRight().getJsDoc()); } }
public void testObjectLitLocation() { AstNode root = parse( "\nvar foo =\n" + "{ \n" + "'A' : 'A', \n" + "'B' : 'B', \n" + "'C' : \n" + " 'C' \n" + "};\n"); VariableDeclaration firstVarDecl = (VariableDeclaration) root.getFirstChild(); List<VariableInitializer> vars1 = firstVarDecl.getVariables(); VariableInitializer firstInitializer = vars1.get(0); Name firstVarName = (Name) firstInitializer.getTarget(); ObjectLiteral objectLiteral = (ObjectLiteral) firstInitializer.getInitializer(); List<ObjectProperty> props = objectLiteral.getElements(); ObjectProperty firstObjectLit = props.get(0); ObjectProperty secondObjectLit = props.get(1); ObjectProperty thirdObjectLit = props.get(2); AstNode firstKey = firstObjectLit.getLeft(); AstNode firstValue = firstObjectLit.getRight(); AstNode secondKey = secondObjectLit.getLeft(); AstNode secondValue = secondObjectLit.getRight(); AstNode thirdKey = thirdObjectLit.getLeft(); AstNode thirdValue = thirdObjectLit.getRight(); assertEquals(1, firstVarName.getLineno()); assertEquals(2, objectLiteral.getLineno()); assertEquals(3, firstObjectLit.getLineno()); assertEquals(3, firstKey.getLineno()); assertEquals(3, firstValue.getLineno()); assertEquals(4, secondKey.getLineno()); assertEquals(4, secondValue.getLineno()); assertEquals(5, thirdKey.getLineno()); assertEquals(6, thirdValue.getLineno()); }
/** * Visits this node, the target, and each argument. If there is a trailing initializer node, * visits that last. */ @Override public void visit(NodeVisitor v) { if (v.visit(this)) { target.visit(v); for (AstNode arg : getArguments()) { arg.visit(v); } if (initializer != null) { initializer.visit(v); } } }
@Override public String toSource(int depth) { StringBuilder sb = new StringBuilder(); sb.append(makeIndent(depth)); sb.append("new "); sb.append(target.toSource(0)); sb.append("("); if (arguments != null) { printList(arguments, sb); } sb.append(")"); if (initializer != null) { sb.append(" "); sb.append(initializer.toSource(0)); } return sb.toString(); }
/** * Sets initializer object. Rhino supports an experimental syntax of the form {@code new expr [ ( * arglist ) ] [initializer]}, in which initializer is an object literal that is used to set * additional properties on the newly-created {@code expr} object. * * @param initializer extra initializer object. Can be {@code null}. */ public void setInitializer(ObjectLiteral initializer) { this.initializer = initializer; if (initializer != null) initializer.setParent(this); }