/*******************************************************************************
 * Copyright (c) 2000, 2019 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 * IBM - Initial API and implementation
 * Jesper Steen Moller - 427089: [1.8] Change value in Variables view with lambda or method reference
 *******************************************************************************/
package org.eclipse.jdt.internal.debug.eval.ast.engine;

import org.eclipse.osgi.util.NLS;

public class EvaluationEngineMessages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.jdt.internal.debug.eval.ast.engine.EvaluationEngineMessages";//$NON-NLS-1$

	public static String ASTInstructionCompiler_Anonymous_type_declaration_cannot_be_used_in_an_evaluation_expression_2;
	public static String ASTInstructionCompiler_Assert_statement_cannot_be_used_in_an_evaluation_expression_3;
	public static String ASTInstructionCompiler_Unrecognized_assignment_operator____4;

	public static String ASTInstructionCompiler_Catch_clause_cannot_be_used_in_an_evaluation_expression_6;
	public static String ASTInstructionCompiler_Anonymous_type_declaration_cannot_be_used_in_an_evaluation_expression_7;
	public static String ASTInstructionCompiler_Constructor_of_a_local_type_cannot_be_used_in_an_evaluation_expression_8;
	public static String ASTInstructionCompiler_this_constructor_invocation_cannot_be_used_in_an_evaluation_expression_9;
	public static String ASTInstructionCompiler_Error_in_type_declaration_statement;
	public static String ASTInstructionCompiler_Unrecognized_infix_operator____13;

	public static String ASTInstructionCompiler_unrecognized_postfix_operator____15;
	public static String ASTInstructionCompiler_unrecognized_prefix_operator____16;

	public static String ASTInstructionCompiler_super_constructor_invocation_cannot_be_used_in_an_evaluation_expression_19;
	public static String ASTInstructionCompiler_Try_statement_cannot_be_used_in_an_evaluation_expression_23;
	public static String ASTInstructionCompiler_Type_declaration_cannot_be_used_in_an_evaluation_expression_24;
	public static String ASTInstructionCompiler_Type_declaration_statement_cannot_be_used_in_an_evaluation_expression_25;
	public static String ASTInstructionCompiler_Local_type_array_instance_creation_cannot_be_used_in_an_evaluation_expression_29;
	public static String ASTInstructionCompiler_Constructor_which_contains_a_local_type_as_parameter_cannot_be_used_in_an_evaluation_expression_30;
	public static String ASTInstructionCompiler_Qualified_local_type_field_access_cannot_be_used_in_an_evaluation_expression_31;
	public static String ASTInstructionCompiler_Method_which_contains_a_local_type_as_parameter_cannot_be_used_in_an_evaluation_expression_32;
	public static String ASTInstructionCompiler_Must_explicitly_qualify_the_allocation_with_an_instance_of_the_enclosing_type_33;
	public static String ASTEvaluationEngine_Evaluations_must_contain_either_an_expression_or_a_block_of_well_formed_statements_1;

	public static String InterpreterVariable_setValue_String__not_supported_for_interpreter_variable_1;
	public static String InterpreterVariable_verifyValue_IValue__not_supported_for_interpreter_variable_2;
	public static String InterpreterVariable_verifyValue_String__not_supported_for_interpreter_variable_3;

	public static String ASTEvaluationEngine_AST_evaluation_engine_cannot_evaluate_expression;
	public static String ASTEvaluationEngine_An_unknown_error_occurred_during_evaluation;
	public static String ASTEvaluationEngine_Cannot_perform_nested_evaluations;
	public static String ASTInstructionCompiler_3;
	public static String ASTInstructionCompiler_0;
	public static String ASTInstructionCompiler_1;
	public static String ASTInstructionCompiler_2;

	public static String ASTInstructionCompiler_4;
	public static String ASTInstructionCompiler_5;

	public static String ASTInstructionCompiler_Lambda_expressions_cannot_be_used_in_an_evaluation_expression;
	public static String ASTInstructionCompiler_Reference_expressions_cannot_be_used_in_an_evaluation_expression;
	public static String ASTInstructionCompiler_Switch_expressions_cannot_be_used_in_an_evaluation_expression;
	public static String ASTInstructionCompiler_Functional_expressions_cannot_be_evaluated_inside_local_and_or_anonymous_classes;

	static {
		// load message values from bundle file
		NLS.initializeMessages(BUNDLE_NAME, EvaluationEngineMessages.class);
	}

	public static String ASTEvaluationEngine_1;
	public static String ArrayRuntimeContext_0;
}
