/*
 * Universidade Federal de Pernambuco
 * Centro de Informática
 *
 * JaTS - Java JaTSTransformation System
 *
 * Tipo: JMethodDeclaration
 *
 * Esta classe guarda as informacoes a respeito da declaracao de metodo, a qual
 * é composta por uma lista de modificadores, o tipo de retorno do método , o
 * declarador do método e a lista de exceçoes
 *
 * @author Adeline de Sousa
 * @version   22/08/2002
 * @since JDK 1.3
 */
package cin.jats.engine.parser.nodes;

import cin.jats.engine.util.ResultSet;
import cin.jats.engine.util.Util;
import cin.jats.engine.visitors.JaTSVisitor;
import cin.jats.engine.parser.nodes.exceptions.InconsistentNodeException;
import cin.jats.engine.parser.nodes.exceptions.NodesNotMatchedException;

/**
 * Esta classe guarda as informacoes a respeito da declaracao de metodo, a qual
 * é composta por uma lista de modificadores, o tipo de retorno do método , o
 * identificador, a lista de parametros do método e a lista de exceçoes
 * <br>
 * Ex:
 *  <br>  <code>public double getValor() throws Exception {}</code>
 *
 *  <br>  <code>public void setValor(double v){}</code>
 *
 */
public class JMethodDeclaration
        extends SimpleNode
        implements Declaration, Cloneable, Commentable, InterfaceMember {

    //lista de modificadores do método
    private JModifierList modifiers;

    // tipo de retorno do método
    private JType returnType;

    // Identificador do método
    private JIdentifier name;

    // Lista de parametros formais
    private JParameterList parameters;

    // Se o tipo de retorno for um array, os colchetes podem vir no final
    // dimensions = 0 indicam que o retorno não é do tipo array
    private int dimensions;

    // lista de exceções levantadas pelo  método
    private JNameList exceptions;

    // Armazena o corpo do método
    private JBlock body;

}