cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
java_bytecode_typecheck.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: JAVA Bytecode Language Type Checking
4
5
Author: Daniel Kroening, kroening@kroening.com
6
7
\*******************************************************************/
8
11
12
#ifndef CPROVER_JAVA_BYTECODE_JAVA_BYTECODE_TYPECHECK_H
13
#define CPROVER_JAVA_BYTECODE_JAVA_BYTECODE_TYPECHECK_H
14
15
#include <set>
16
17
#include <
util/journalling_symbol_table.h
>
18
#include <
util/typecheck.h
>
19
#include <
util/namespace.h
>
20
21
class
codet
;
22
class
side_effect_exprt
;
23
24
bool
java_bytecode_typecheck
(
25
symbol_table_baset
&symbol_table,
26
message_handlert
&message_handler,
27
bool
string_refinement_enabled);
28
29
void
java_bytecode_typecheck_updated_symbols
(
30
journalling_symbol_tablet
&symbol_table,
31
message_handlert
&message_handler,
32
bool
string_refinement_enabled);
33
34
bool
java_bytecode_typecheck
(
35
exprt
&expr,
36
message_handlert
&message_handler,
37
const
namespacet
&ns);
38
39
class
java_bytecode_typecheckt
:
public
typecheckt
40
{
41
public
:
42
java_bytecode_typecheckt
(
43
symbol_table_baset
&_symbol_table,
44
message_handlert
&_message_handler,
45
bool
_string_refinement_enabled):
46
typecheckt
(_message_handler),
47
symbol_table
(_symbol_table),
48
ns
(
symbol_table
),
49
string_refinement_enabled
(_string_refinement_enabled)
50
{
51
}
52
53
virtual
~java_bytecode_typecheckt
() { }
54
55
virtual
void
typecheck
();
56
void
typecheck
(
const
journalling_symbol_tablet::changesett
&identifiers);
57
virtual
void
typecheck_expr
(
exprt
&expr);
58
59
protected
:
60
symbol_table_baset
&
symbol_table
;
61
const
namespacet
ns
;
62
bool
string_refinement_enabled
;
63
64
void
typecheck_type_symbol
(
symbolt
&);
65
void
typecheck_non_type_symbol
(
symbolt
&);
66
void
typecheck_code
(
codet
&);
67
void
typecheck_type
(
typet
&);
68
void
typecheck_expr_symbol
(
symbol_exprt
&);
69
void
typecheck_expr_java_new
(
side_effect_exprt
&);
70
void
typecheck_expr_java_new_array
(
side_effect_exprt
&);
71
72
// overload to use language-specific syntax
73
virtual
std::string
to_string
(
const
exprt
&expr);
74
virtual
std::string
to_string
(
const
typet
&type);
75
76
std::set<irep_idt>
already_typechecked
;
77
};
78
79
#endif
// CPROVER_JAVA_BYTECODE_JAVA_BYTECODE_TYPECHECK_H
codet
Data structure for representing an arbitrary statement in a program.
Definition
std_code_base.h:29
exprt
Base class for all expressions.
Definition
expr.h:57
java_bytecode_typecheckt::~java_bytecode_typecheckt
virtual ~java_bytecode_typecheckt()
Definition
java_bytecode_typecheck.h:53
java_bytecode_typecheckt::already_typechecked
std::set< irep_idt > already_typechecked
Definition
java_bytecode_typecheck.h:76
java_bytecode_typecheckt::typecheck_type_symbol
void typecheck_type_symbol(symbolt &)
Definition
java_bytecode_typecheck_type.cpp:55
java_bytecode_typecheckt::typecheck_type
void typecheck_type(typet &)
Definition
java_bytecode_typecheck_type.cpp:19
java_bytecode_typecheckt::to_string
virtual std::string to_string(const exprt &expr)
Definition
java_bytecode_typecheck.cpp:16
java_bytecode_typecheckt::typecheck_expr_symbol
void typecheck_expr_symbol(symbol_exprt &)
Definition
java_bytecode_typecheck_expr.cpp:68
java_bytecode_typecheckt::java_bytecode_typecheckt
java_bytecode_typecheckt(symbol_table_baset &_symbol_table, message_handlert &_message_handler, bool _string_refinement_enabled)
Definition
java_bytecode_typecheck.h:42
java_bytecode_typecheckt::typecheck_expr_java_new
void typecheck_expr_java_new(side_effect_exprt &)
Definition
java_bytecode_typecheck_expr.cpp:53
java_bytecode_typecheckt::string_refinement_enabled
bool string_refinement_enabled
Definition
java_bytecode_typecheck.h:62
java_bytecode_typecheckt::typecheck_code
void typecheck_code(codet &)
Definition
java_bytecode_typecheck_code.cpp:18
java_bytecode_typecheckt::typecheck_expr
virtual void typecheck_expr(exprt &expr)
Definition
java_bytecode_typecheck_expr.cpp:20
java_bytecode_typecheckt::typecheck_non_type_symbol
void typecheck_non_type_symbol(symbolt &)
Definition
java_bytecode_typecheck.cpp:26
java_bytecode_typecheckt::typecheck
virtual void typecheck()
Definition
java_bytecode_typecheck.cpp:33
java_bytecode_typecheckt::typecheck_expr_java_new_array
void typecheck_expr_java_new_array(side_effect_exprt &)
Definition
java_bytecode_typecheck_expr.cpp:60
java_bytecode_typecheckt::ns
const namespacet ns
Definition
java_bytecode_typecheck.h:61
java_bytecode_typecheckt::symbol_table
symbol_table_baset & symbol_table
Definition
java_bytecode_typecheck.h:60
journalling_symbol_tablet
A symbol table wrapper that records which entries have been updated/removedA caller can pass a journa...
Definition
journalling_symbol_table.h:37
journalling_symbol_tablet::changesett
std::unordered_set< irep_idt > changesett
Definition
journalling_symbol_table.h:39
message_handlert
Definition
message.h:27
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition
namespace.h:91
side_effect_exprt
An expression containing a side effect.
Definition
std_code.h:1450
symbol_exprt
Expression to hold a symbol (variable).
Definition
std_expr.h:132
symbol_table_baset
The symbol table base class interface.
Definition
symbol_table_base.h:23
symbolt
Symbol table entry.
Definition
symbol.h:28
typecheckt::typecheckt
typecheckt(message_handlert &_message_handler)
Definition
typecheck.h:18
typet
The type of an expression, extends irept.
Definition
type.h:29
java_bytecode_typecheck
bool java_bytecode_typecheck(symbol_table_baset &symbol_table, message_handlert &message_handler, bool string_refinement_enabled)
Definition
java_bytecode_typecheck.cpp:64
java_bytecode_typecheck_updated_symbols
void java_bytecode_typecheck_updated_symbols(journalling_symbol_tablet &symbol_table, message_handlert &message_handler, bool string_refinement_enabled)
Definition
java_bytecode_typecheck.cpp:74
journalling_symbol_table.h
Author: Diffblue Ltd.
namespace.h
typecheck.h
jbmc
src
java_bytecode
java_bytecode_typecheck.h
Generated by
1.17.0