###############################################################################
# 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
#
# This is an implementation of an early-draft specification developed under the Java
# Community Process (JCP) and is made available for testing and evaluation purposes
# only. The code is not compatible with any specification of the JCP.
 
# Contributors:
#     IBM Corporation - initial API and implementation
# Jesper Steen Moller - 427089: [1.8] Change value in Variables view with lambda or method reference
###############################################################################

ASTInstructionCompiler_Anonymous_type_declaration_cannot_be_used_in_an_evaluation_expression_2=Anonymous type declaration cannot be used in an evaluation expression
ASTInstructionCompiler_Assert_statement_cannot_be_used_in_an_evaluation_expression_3=Assert statement cannot be used in an evaluation expression
ASTInstructionCompiler_Unrecognized_assignment_operator____4=Unrecognized assignment operator :

ASTInstructionCompiler_Catch_clause_cannot_be_used_in_an_evaluation_expression_6=Catch clause cannot be used in an evaluation expression
ASTInstructionCompiler_Anonymous_type_declaration_cannot_be_used_in_an_evaluation_expression_7=Anonymous type declaration cannot be used in an evaluation expression
ASTInstructionCompiler_Constructor_of_a_local_type_cannot_be_used_in_an_evaluation_expression_8=Constructor of a local type cannot be used in an evaluation expression
ASTInstructionCompiler_this_constructor_invocation_cannot_be_used_in_an_evaluation_expression_9=this constructor invocation cannot be used in an evaluation expression
ASTInstructionCompiler_Error_in_type_declaration_statement= Error in declaration statement.
ASTInstructionCompiler_Unrecognized_infix_operator____13=Unrecognized infix operator :

ASTInstructionCompiler_unrecognized_postfix_operator____15=unrecognized postfix operator :
ASTInstructionCompiler_unrecognized_prefix_operator____16=unrecognized prefix operator :

ASTInstructionCompiler_super_constructor_invocation_cannot_be_used_in_an_evaluation_expression_19=super constructor invocation cannot be used in an evaluation expression
ASTInstructionCompiler_Try_statement_cannot_be_used_in_an_evaluation_expression_23=Try statement cannot be used in an evaluation expression
ASTInstructionCompiler_Type_declaration_cannot_be_used_in_an_evaluation_expression_24=Type declaration cannot be used in an evaluation expression
ASTInstructionCompiler_Type_declaration_statement_cannot_be_used_in_an_evaluation_expression_25=Type declaration statement cannot be used in an evaluation expression
ASTInstructionCompiler_Local_type_array_instance_creation_cannot_be_used_in_an_evaluation_expression_29=Local type array instance creation cannot be used in an evaluation expression
ASTInstructionCompiler_Constructor_which_contains_a_local_type_as_parameter_cannot_be_used_in_an_evaluation_expression_30=Constructor which contains a local type as parameter cannot be used in an evaluation expression
ASTInstructionCompiler_Qualified_local_type_field_access_cannot_be_used_in_an_evaluation_expression_31=Qualified local type field access cannot be used in an evaluation expression
ASTInstructionCompiler_Method_which_contains_a_local_type_as_parameter_cannot_be_used_in_an_evaluation_expression_32=Method which contains a local type as parameter cannot be used in an evaluation expression
ASTInstructionCompiler_Must_explicitly_qualify_the_allocation_with_an_instance_of_the_enclosing_type_33=Must explicitly qualify the allocation with an instance of the enclosing type
ASTEvaluationEngine_Evaluations_must_contain_either_an_expression_or_a_block_of_well_formed_statements_1=Evaluations must contain either an expression or a block of well-formed statements

InterpreterVariable_setValue_String__not_supported_for_interpreter_variable_1=setValue(String) not supported for interpreter variable
InterpreterVariable_verifyValue_IValue__not_supported_for_interpreter_variable_2=verifyValue(IValue) not supported for interpreter variable
InterpreterVariable_verifyValue_String__not_supported_for_interpreter_variable_3=verifyValue(String) not supported for interpreter variable

ASTEvaluationEngine_AST_evaluation_engine_cannot_evaluate_expression=The AST evaluation engine cannot evaluate this expression.
ASTEvaluationEngine_An_unknown_error_occurred_during_evaluation=An unknown error occurred during evaluation
ASTEvaluationEngine_Cannot_perform_nested_evaluations=Cannot perform nested evaluations.

ASTInstructionCompiler_3=Unable to resolve type binding for: {0}
ASTInstructionCompiler_0=Enum declaration cannot be used in an evaluation expression
ASTInstructionCompiler_1=Unable to resolve type binding of constructor: {0}
ASTInstructionCompiler_2=Unable to resolve type binding of declaring type of: {0}
ASTInstructionCompiler_4=The ASTInstruction compiler failed to store instruction at counter: {0}
ASTInstructionCompiler_5=Unable to resolve binding for: {0}
ASTEvaluationEngine_1=Unable to retrieve type for java.lang.Object
ArrayRuntimeContext_0=Unable to retrieve type for java.lang.Object

ASTInstructionCompiler_Lambda_expressions_cannot_be_used_in_an_evaluation_expression=Lambda expressions cannot be used in an evaluation expression
ASTInstructionCompiler_Reference_expressions_cannot_be_used_in_an_evaluation_expression=Reference expressions cannot be used in an evaluation expression
ASTInstructionCompiler_Switch_expressions_cannot_be_used_in_an_evaluation_expression=Switch expressions cannot be used in an evaluation expression