Add support for C++17 hexadecimal floating literals

This commit is contained in:
Zackery Spytz 2019-02-13 15:16:40 -07:00
commit cf83adfcd1
7 changed files with 111 additions and 1 deletions

View file

@ -163,6 +163,7 @@ CPP_TEST_CASES += \
cpp_static \
cpp_typedef \
cpp14_binary_integer_literals \
cpp17_hex_floating_literals \
cpp17_nested_namespaces \
cpp17_nspace_nested_namespaces \
cpp17_u8_char_literals \

View file

@ -0,0 +1,43 @@
%module cpp17_hex_floating_literals
// Tests are designed so that code compiles with C++98 compilers
%{
#if __cplusplus >= 201703L
#define CPP17 1
#endif
%}
double f1 = 0x.0p1;
double f2 = 0x0.p1;
double f3 = 0x0.0p-1;
double f4 = 0xf.p-1;
double f5 = 0xA.0p1;
double f6 = 0x0.10P+10;
double f7 = 0xb2F.p2;
float f8 = 0x1234AP1F;
float f9 = 0x45A1.D1A2p+10f;
%{
#if defined(CPP17)
double f1 = 0x.0p1;
double f2 = 0x0.p1;
double f3 = 0x0.0p-1;
double f4 = 0xf.p-1;
double f5 = 0xA.0p1;
double f6 = 0x0.10P+10;
double f7 = 0xb2F.p2;
float f8 = 0x1234AP1F;
float f9 = 0x45A1.D1A2p+10f;
#else
double f1 = 0.;
double f2 = 0.;
double f3 = 0.;
double f4 = 7.5;
double f5 = 20.;
double f6 = 64.;
double f7 = 11452.;
float f8 = 149140.f;
float f9 = 18253638.f;
#endif
%}

View file

@ -0,0 +1,28 @@
from cpp17_hex_floating_literals import *
if cvar.f1 != 0.:
raise RuntimeError
if cvar.f2 != 0.:
raise RuntimeError
if cvar.f3 != 0.:
raise RuntimeError
if cvar.f4 != 7.5:
raise RuntimeError
if cvar.f5 != 20.:
raise RuntimeError
if cvar.f6 != 64.:
raise RuntimeError
if cvar.f7 != 11452.:
raise RuntimeError
if cvar.f8 != 149140.:
raise RuntimeError
if cvar.f9 != 18253638.:
raise RuntimeError