/*******************************************************************************
 * Copyright (c) 2000, 2011 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 org.eclipse.jdt.debug.eval;

import org.eclipse.jdt.core.dom.Message;

/**
 * A compiled expression can be compiled once and evaluated multiple times in a
 * runtime context.
 * 
 * @see org.eclipse.jdt.debug.eval.IAstEvaluationEngine
 * @since 2.0
 * @noimplement This interface is not intended to be implemented by clients.
 * @noextend This interface is not intended to be extended by clients.
 */

public interface ICompiledExpression {

	/**
	 * Returns the source snippet from which this compiled expression was
	 * created.
	 * 
	 * @return the source snippet from which this compiled expression was
	 *         created
	 */
	public String getSnippet();

	/**
	 * Returns whether this compiled expression has any compilation errors.
	 * 
	 * @return whether this compiled expression has any compilation errors
	 */
	public boolean hasErrors();

	/**
	 * Returns any errors which occurred while creating this compiled
	 * expression.
	 * 
	 * @return any errors which occurred while creating this compiled expression
	 * @deprecated use getErrorMessages()
	 */
	@Deprecated
	public Message[] getErrors();

	/**
	 * Returns an array of problem messages. Each message describes a problem
	 * that occurred while while creating this compiled expression.
	 * 
	 * @return error messages, or an empty array if no errors occurred
	 * @since 2.1
	 */
	public String[] getErrorMessages();

}
