/* * Copyright (c) 2012, the Dart project authors. * * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.eclipse.org/legal/epl-v10.html * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.dart.engine.element; import com.google.dart.engine.ast.VariableDeclaration; import com.google.dart.engine.context.AnalysisException; import com.google.dart.engine.type.Type; /** * The interface {@code VariableElement} defines the behavior common to elements that represent a * variable. * * @coverage dart.engine.element */ public interface VariableElement extends Element { /** * Return a synthetic function representing this variable's initializer, or {@code null} if this * variable does not have an initializer. The function will have no parameters. The return type of * the function will be the compile-time type of the initialization expression. * * @return a synthetic function representing this variable's initializer */ public FunctionElement getInitializer(); /** * Return the resolved {@link VariableDeclaration} node that declares this {@link VariableElement} * . * <p> * This method is expensive, because resolved AST might be evicted from cache, so parsing and * resolving will be performed. * * @return the resolved {@link VariableDeclaration}, not {@code null}. */ @Override public VariableDeclaration getNode() throws AnalysisException; /** * Return the declared type of this variable, or {@code null} if the variable did not have a * declared type (such as if it was declared using the keyword 'var'). * * @return the declared type of this variable */ public Type getType(); /** * Return {@code true} if this variable was declared with the 'const' modifier. * * @return {@code true} if this variable was declared with the 'const' modifier */ public boolean isConst(); /** * Return {@code true} if this variable was declared with the 'final' modifier. Variables that are * declared with the 'const' modifier will return {@code false} even though they are implicitly * final. * * @return {@code true} if this variable was declared with the 'final' modifier */ public boolean isFinal(); }