File: expr_undefined_casts.cpp

package info (click to toggle)
cbmc 6.6.0-4
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 153,852 kB
  • sloc: cpp: 386,459; ansic: 114,466; java: 28,405; python: 6,003; yacc: 4,552; makefile: 4,041; lex: 2,487; xml: 2,388; sh: 2,050; perl: 557; pascal: 184; javascript: 163; ada: 36
file content (40 lines) | stat: -rw-r--r-- 1,066 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*******************************************************************\

Module: Unit tests of expr_dynamic_cast

Author: Nathan Phillips <Nathan.Phillips@diffblue.com>

\*******************************************************************/

/// \file
/// expr_dynamic_cast for types that don't have a cast

// This could have a unit test that consisted of trying to compile the file
// and checking that the compiler gave the right error messages.

#include <testing-utils/use_catch.h>
#include <util/std_code.h>

SCENARIO("expr_dynamic_cast",
  "[core][utils][expr_cast][expr_dynamic_cast]")
{
  symbol_exprt symbol_expr;

  GIVEN("A const exprt reference to a symbolt")
  {
    const exprt &expr=symbol_expr;

    THEN(
      "Casting from exprt reference to non-reference should not compile")
    {
      // This shouldn't compile
      expr_dynamic_cast<symbol_exprt>(expr);
    }
    THEN(
      "Casting from const exprt reference to non-const symbol_exprt reference "
      "should not compile")
    {
      expr_dynamic_cast<symbol_exprt &>(expr);
    }
  }
}