src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/VarNode.java

Print this page

        

*** 43,52 **** --- 43,59 ---- private final Expression init; /** Is this a var statement (as opposed to a "var" in a for loop statement) */ private final int flags; + /** + * source order id to be used for this node. If this is -1, then we + * the default which is start position of this node. See also the + * method Node::getSourceOrder. + */ + private final int sourceOrder; + /** Flag for ES6 LET declaration */ public static final int IS_LET = 1 << 0; /** Flag for ES6 CONST declaration */ public static final int IS_CONST = 1 << 1;
*** 69,78 **** --- 76,86 ---- this(lineNumber, token, finish, name, init, 0); } private VarNode(final VarNode varNode, final IdentNode name, final Expression init, final int flags) { super(varNode); + this.sourceOrder = -1; this.name = init == null ? name : name.setIsInitializedHere(); this.init = init; this.flags = flags; }
*** 85,102 **** * @param name name of variable * @param init init node or null if just a declaration * @param flags flags */ public VarNode(final int lineNumber, final long token, final int finish, final IdentNode name, final Expression init, final int flags) { ! super(lineNumber, token, finish); this.name = init == null ? name : name.setIsInitializedHere(); this.init = init; this.flags = flags; } @Override public boolean isAssignment() { return hasInit(); } @Override --- 93,130 ---- * @param name name of variable * @param init init node or null if just a declaration * @param flags flags */ public VarNode(final int lineNumber, final long token, final int finish, final IdentNode name, final Expression init, final int flags) { ! this(lineNumber, token, -1, finish, name, init, flags); ! } + /** + * Constructor + * + * @param lineNumber line number + * @param token token + * @param sourceOrder source order + * @param finish finish + * @param name name of variable + * @param init init node or null if just a declaration + * @param flags flags + */ + public VarNode(final int lineNumber, final long token, final int sourceOrder, final int finish, final IdentNode name, final Expression init, final int flags) { + super(lineNumber, token, finish); + this.sourceOrder = sourceOrder; this.name = init == null ? name : name.setIsInitializedHere(); this.init = init; this.flags = flags; } @Override + public int getSourceOrder() { + return sourceOrder == -1? super.getSourceOrder() : sourceOrder; + } + + @Override public boolean isAssignment() { return hasInit(); } @Override