cprover
jsil_typecheckt Class Reference

#include <jsil_typecheck.h>

Inheritance diagram for jsil_typecheckt:
[legend]
Collaboration diagram for jsil_typecheckt:
[legend]

Public Member Functions

 jsil_typecheckt (symbol_tablet &_symbol_table, message_handlert &_message_handler)
 
virtual ~jsil_typecheckt ()
 
virtual void typecheck ()
 
virtual void typecheck_expr (exprt &expr)
 
- Public Member Functions inherited from typecheckt
 typecheckt (message_handlert &_message_handler)
 
virtual ~typecheckt ()
 
void err_location (const source_locationt &loc)
 
void err_location (const exprt &src)
 
void err_location (const typet &src)
 
virtual bool typecheck_main ()
 
- Public Member Functions inherited from messaget
virtual void set_message_handler (message_handlert &_message_handler)
 
message_handlertget_message_handler ()
 
 messaget ()
 
 messaget (const messaget &other)
 
messagetoperator= (const messaget &other)
 
 messaget (message_handlert &_message_handler)
 
virtual ~messaget ()
 
mstreamtget_mstream (unsigned message_level) const
 
mstreamterror () const
 
mstreamtwarning () const
 
mstreamtresult () const
 
mstreamtstatus () const
 
mstreamtstatistics () const
 
mstreamtprogress () const
 
mstreamtdebug () const
 
void conditional_output (mstreamt &mstream, const std::function< void(mstreamt &)> &output_generator) const
 Generate output to mstream using output_generator if the configured verbosity is at least as high as that of mstream. More...
 

Protected Member Functions

void update_expr_type (exprt &expr, const typet &type)
 
void make_type_compatible (exprt &expr, const typet &type, bool must)
 
void typecheck_type_symbol (symbolt &symbol)
 
void typecheck_non_type_symbol (symbolt &symbol)
 typechecking procedure declaration; any other symbols should have been typechecked during typechecking of procedure declaration More...
 
void typecheck_symbol_expr (symbol_exprt &symbol_expr)
 
void typecheck_expr_side_effect_throw (side_effect_expr_throwt &expr)
 
void typecheck_expr_delete (exprt &expr)
 
void typecheck_expr_index (exprt &expr)
 
void typecheck_expr_proto_field (exprt &expr)
 
void typecheck_expr_proto_obj (exprt &expr)
 
void typecheck_expr_has_field (exprt &expr)
 
void typecheck_expr_ref (exprt &expr)
 
void typecheck_expr_field (exprt &expr)
 
void typecheck_expr_base (exprt &expr)
 
void typecheck_expr_constant (exprt &expr)
 
void typecheck_expr_concatenation (exprt &expr)
 
void typecheck_expr_subtype (exprt &expr)
 
void typecheck_expr_binary_boolean (exprt &expr)
 
void typecheck_expr_binary_arith (exprt &expr)
 
void typecheck_exp_binary_equal (exprt &expr)
 
void typecheck_expr_binary_compare (exprt &expr)
 
void typecheck_expr_unary_boolean (exprt &expr)
 
void typecheck_expr_unary_string (exprt &expr)
 
void typecheck_expr_unary_num (exprt &expr)
 
void typecheck_expr_operands (exprt &expr)
 
void typecheck_expr_main (exprt &expr)
 
void typecheck_code (codet &code)
 
void typecheck_function_call (code_function_callt &function_call)
 
void typecheck_return (code_returnt &code)
 
void typecheck_block (codet &code)
 
void typecheck_ifthenelse (code_ifthenelset &code)
 
void typecheck_assign (code_assignt &code)
 
void typecheck_try_catch (code_try_catcht &code)
 
void typecheck_type (typet &type)
 
irep_idt add_prefix (const irep_idt &ds)
 Prefix parameters and variables with a procedure name. More...
 
virtual std::string to_string (const exprt &expr)
 
virtual std::string to_string (const typet &type)
 

Protected Attributes

symbol_tabletsymbol_table
 
const namespacet ns
 
irep_idt proc_name
 
std::unordered_set< irep_idtalready_typechecked
 
- Protected Attributes inherited from messaget
message_handlertmessage_handler
 
mstreamt mstream
 

Additional Inherited Members

- Public Types inherited from messaget
enum  message_levelt {
  M_ERROR =1, M_WARNING =2, M_RESULT =4, M_STATUS =6,
  M_STATISTICS =8, M_PROGRESS =9, M_DEBUG =10
}
 
- Static Public Member Functions inherited from messaget
static unsigned eval_verbosity (const std::string &user_input, const message_levelt default_verbosity, message_handlert &dest)
 Parse a (user-)provided string as a verbosity level and set it as the verbosity of dest. More...
 
static mstreamteom (mstreamt &m)
 
static mstreamtendl (mstreamt &m)
 

Detailed Description

Definition at line 33 of file jsil_typecheck.h.

Constructor & Destructor Documentation

◆ jsil_typecheckt()

jsil_typecheckt::jsil_typecheckt ( symbol_tablet _symbol_table,
message_handlert _message_handler 
)
inline

Definition at line 36 of file jsil_typecheck.h.

◆ ~jsil_typecheckt()

virtual jsil_typecheckt::~jsil_typecheckt ( )
inlinevirtual

Definition at line 46 of file jsil_typecheck.h.

Member Function Documentation

◆ add_prefix()

irep_idt jsil_typecheckt::add_prefix ( const irep_idt ds)
protected

Prefix parameters and variables with a procedure name.

Definition at line 32 of file jsil_typecheck.cpp.

References id2string(), and proc_name.

Referenced by typecheck_symbol_expr(), and typecheck_type().

◆ make_type_compatible()

◆ to_string() [1/2]

std::string jsil_typecheckt::to_string ( const exprt expr)
protectedvirtual

Definition at line 21 of file jsil_typecheck.cpp.

References expr2jsil(), and ns.

◆ to_string() [2/2]

std::string jsil_typecheckt::to_string ( const typet type)
protectedvirtual

Definition at line 26 of file jsil_typecheck.cpp.

References ns, and type2jsil().

◆ typecheck()

void jsil_typecheckt::typecheck ( )
virtual

◆ typecheck_assign()

void jsil_typecheckt::typecheck_assign ( code_assignt code)
protected

◆ typecheck_block()

void jsil_typecheckt::typecheck_block ( codet code)
protected

Definition at line 703 of file jsil_typecheck.cpp.

References Forall_operands, to_code(), and typecheck_code().

Referenced by typecheck_code().

◆ typecheck_code()

◆ typecheck_exp_binary_equal()

void jsil_typecheckt::typecheck_exp_binary_equal ( exprt expr)
protected

◆ typecheck_expr()

void jsil_typecheckt::typecheck_expr ( exprt expr)
virtual

◆ typecheck_expr_base()

void jsil_typecheckt::typecheck_expr_base ( exprt expr)
protected

◆ typecheck_expr_binary_arith()

void jsil_typecheckt::typecheck_expr_binary_arith ( exprt expr)
protected

◆ typecheck_expr_binary_boolean()

void jsil_typecheckt::typecheck_expr_binary_boolean ( exprt expr)
protected

◆ typecheck_expr_binary_compare()

void jsil_typecheckt::typecheck_expr_binary_compare ( exprt expr)
protected

◆ typecheck_expr_concatenation()

void jsil_typecheckt::typecheck_expr_concatenation ( exprt expr)
protected

◆ typecheck_expr_constant()

void jsil_typecheckt::typecheck_expr_constant ( exprt expr)
protected

◆ typecheck_expr_delete()

void jsil_typecheckt::typecheck_expr_delete ( exprt expr)
protected

◆ typecheck_expr_field()

void jsil_typecheckt::typecheck_expr_field ( exprt expr)
protected

◆ typecheck_expr_has_field()

void jsil_typecheckt::typecheck_expr_has_field ( exprt expr)
protected

◆ typecheck_expr_index()

◆ typecheck_expr_main()

◆ typecheck_expr_operands()

void jsil_typecheckt::typecheck_expr_operands ( exprt expr)
protected

Definition at line 146 of file jsil_typecheck.cpp.

References Forall_operands, and typecheck_expr().

Referenced by typecheck_expr().

◆ typecheck_expr_proto_field()

◆ typecheck_expr_proto_obj()

void jsil_typecheckt::typecheck_expr_proto_obj ( exprt expr)
protected

◆ typecheck_expr_ref()

◆ typecheck_expr_side_effect_throw()

void jsil_typecheckt::typecheck_expr_side_effect_throw ( side_effect_expr_throwt expr)
protected

Definition at line 269 of file jsil_typecheck.cpp.

References irept::add(), irept::id(), and typecheck_symbol_expr().

Referenced by typecheck_expr_main().

◆ typecheck_expr_subtype()

void jsil_typecheckt::typecheck_expr_subtype ( exprt expr)
protected

◆ typecheck_expr_unary_boolean()

void jsil_typecheckt::typecheck_expr_unary_boolean ( exprt expr)
protected

◆ typecheck_expr_unary_num()

void jsil_typecheckt::typecheck_expr_unary_num ( exprt expr)
protected

◆ typecheck_expr_unary_string()

void jsil_typecheckt::typecheck_expr_unary_string ( exprt expr)
protected

◆ typecheck_function_call()

◆ typecheck_ifthenelse()

void jsil_typecheckt::typecheck_ifthenelse ( code_ifthenelset code)
protected

◆ typecheck_non_type_symbol()

void jsil_typecheckt::typecheck_non_type_symbol ( symbolt symbol)
protected

typechecking procedure declaration; any other symbols should have been typechecked during typechecking of procedure declaration

parameters: any symbol

Definition at line 852 of file jsil_typecheck.cpp.

References messaget::eom(), messaget::error(), irept::id(), symbolt::is_extern, symbolt::is_type, symbolt::location, symbolt::name, irept::pretty(), proc_name, messaget::mstreamt::source_location, to_code(), symbolt::type, typecheck_code(), typecheck_type(), and symbolt::value.

Referenced by typecheck().

◆ typecheck_return()

void jsil_typecheckt::typecheck_return ( code_returnt code)
protected

◆ typecheck_symbol_expr()

◆ typecheck_try_catch()

◆ typecheck_type()

◆ typecheck_type_symbol()

void jsil_typecheckt::typecheck_type_symbol ( symbolt symbol)
inlineprotected

Definition at line 59 of file jsil_typecheck.h.

Referenced by typecheck().

◆ update_expr_type()

Member Data Documentation

◆ already_typechecked

std::unordered_set<irep_idt> jsil_typecheckt::already_typechecked
protected

Definition at line 97 of file jsil_typecheck.h.

◆ ns

const namespacet jsil_typecheckt::ns
protected

Definition at line 53 of file jsil_typecheck.h.

Referenced by to_string().

◆ proc_name

irep_idt jsil_typecheckt::proc_name
protected

Definition at line 55 of file jsil_typecheck.h.

Referenced by add_prefix(), typecheck_non_type_symbol(), and typecheck_symbol_expr().

◆ symbol_table

symbol_tablet& jsil_typecheckt::symbol_table
protected

The documentation for this class was generated from the following files: