cprover
cpp_typecheck_static_assert.cpp
Go to the documentation of this file.
1/*******************************************************************\
2
3Module: C++ Language Type Checking
4
5Author: Daniel Kroening, kroening@cs.cmu.edu
6
7\*******************************************************************/
8
11
12#include "cpp_typecheck.h"
13
15
17{
18 typecheck_expr(cpp_static_assert.op0());
19 typecheck_expr(cpp_static_assert.op1());
20
21 implicit_typecast_bool(cpp_static_assert.op0());
22 make_constant(cpp_static_assert.op0());
23
24 if(cpp_static_assert.op0().is_false())
25 {
26 // failed
27 error().source_location=cpp_static_assert.source_location();
28 error() << "static assertion failed";
29 if(cpp_static_assert.op1().id()==ID_string_constant)
30 error() << ": "
31 << to_string_constant(cpp_static_assert.op1()).get_value();
32 error() << eom;
33 throw 0;
34 }
35}
exprt & op0()
Definition: expr.h:99
exprt & op1()
Definition: expr.h:102
virtual void make_constant(exprt &expr)
virtual void implicit_typecast_bool(exprt &expr)
void convert(cpp_linkage_spect &)
void typecheck_expr(exprt &) override
bool is_false() const
Return whether the expression is a constant representing false.
Definition: expr.cpp:42
const source_locationt & source_location() const
Definition: expr.h:230
const irep_idt & id() const
Definition: irep.h:396
source_locationt source_location
Definition: message.h:247
mstreamt & error() const
Definition: message.h:399
static eomt eom
Definition: message.h:297
const irep_idt & get_value() const
C++ Language Type Checking.
const string_constantt & to_string_constant(const exprt &expr)