/******************************************************************************* * Copyright (c) 2000, 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package net.sourceforge.phpdt.core.dom; /** * Abstract base class of all AST node types that declare a single local * variable. *
*
* VariableDeclaration: * SingleVariableDeclaration * VariableDeclarationFragment ** * * @see SingleVariableDeclaration * @see VariableDeclarationFragment * @since 2.0 */ public abstract class VariableDeclaration extends ASTNode { /** * Returns structural property descriptor for the "extraDimensions" property * of this node. * * @return the property descriptor * @since 3.1 */ abstract SimplePropertyDescriptor internalExtraDimensionsProperty(); /** * Returns structural property descriptor for the "extraDimensions" property * of this node. * * @return the property descriptor * @since 3.1 */ public final SimplePropertyDescriptor getExtraDimensionsProperty() { return internalExtraDimensionsProperty(); } /** * Returns structural property descriptor for the "initializer" property * of this node. * * @return the property descriptor * @since 3.1 */ abstract ChildPropertyDescriptor internalInitializerProperty(); /** * Returns structural property descriptor for the "initializer" property * of this node. * * @return the property descriptor * @since 3.1 */ public final ChildPropertyDescriptor getInitializerProperty() { return internalInitializerProperty(); } /** * Returns structural property descriptor for the "name" property * of this node. * * @return the property descriptor * @since 3.1 */ abstract ChildPropertyDescriptor internalNameProperty(); /** * Returns structural property descriptor for the "name" property * of this node. * * @return the property descriptor * @since 3.1 */ public final ChildPropertyDescriptor getNameProperty() { return internalNameProperty(); } /** * Creates a new AST node for a variable declaration owned by the given AST. *
* N.B. This constructor is package-private. *
* * @param ast the AST that is to own this node */ VariableDeclaration(AST ast) { super(ast); } /** * Returns the name of the variable declared in this variable declaration. * * @return the variable name node */ public abstract SimpleName getName(); /** * Sets the name of the variable declared in this variable declaration * to the given name. * * @param variableName the new variable name * @exception IllegalArgumentException if: *
* For example, int x[][]
has a type of
* int
and two extra array dimensions;
* int[][] x
has a type of int[][]
* and zero extra array dimensions. The two constructs have different
* ASTs, even though there are really syntactic variants of the same
* variable declaration.
*
* For example, int x[][]
has a type of
* int
and two extra array dimensions;
* int[][] x
has a type of int[][]
* and zero extra array dimensions. The two constructs have different
* ASTs, even though there are really syntactic variants of the same
* variable declaration.
*
null
if there is none.
*
* @return the initializer expression node, or null
if
* there is none
*/
public abstract Expression getInitializer();
/**
* Sets or clears the initializer of this variable declaration.
*
* @param initializer the initializer expression node, or null
* if there is none
* @exception IllegalArgumentException if:
* * Note that bindings are generally unavailable unless requested when the * AST is being built. *
* * @return the binding, ornull
if the binding cannot be
* resolved
*/
public IVariableBinding resolveBinding() {
return this.ast.getBindingResolver().resolveVariable(this);
}
}