10b495cdb1939f8b9e8a470e138dba5204872c38cBenjamin Kramer// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s 246717308883538841da7059e72bc898abe0c8724Douglas Gregor// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -pedantic %s 346717308883538841da7059e72bc898abe0c8724Douglas Gregorfloat f = 0x1p+1; // expected-warning{{hexadecimal floating constants are a C99 feature}} 4b534a9ed04b343534e5f277b81d1170de3204164Aaron Ballmandouble e = 0x.p0; //expected-error{{hexadecimal floating constants require a significand}} 566b0ebac276353f3ff7d41eaba3e6d24d48663b7Aaron Ballmandouble d = 0x.2p2; // expected-warning{{hexadecimal floating constants are a C99 feature}} 666b0ebac276353f3ff7d41eaba3e6d24d48663b7Aaron Ballmanfloat g = 0x1.2p2; // expected-warning{{hexadecimal floating constants are a C99 feature}} 766b0ebac276353f3ff7d41eaba3e6d24d48663b7Aaron Ballmandouble h = 0x1.p2; // expected-warning{{hexadecimal floating constants are a C99 feature}} 8d2e95d1538ff91fe902464f02f83429f96117af5Richard Smith 9d2e95d1538ff91fe902464f02f83429f96117af5Richard Smith// PR12717: In order to minimally diverge from the C++ standard, we do not lex 10d2e95d1538ff91fe902464f02f83429f96117af5Richard Smith// 'p[+-]' as part of a pp-number unless the token starts 0x and doesn't contain 11d2e95d1538ff91fe902464f02f83429f96117af5Richard Smith// an underscore. 12d2e95d1538ff91fe902464f02f83429f96117af5Richard Smithdouble i = 0p+3; // expected-error{{invalid suffix 'p' on integer constant}} 13d2e95d1538ff91fe902464f02f83429f96117af5Richard Smith#define PREFIX(x) foo ## x 14d2e95d1538ff91fe902464f02f83429f96117af5Richard Smithdouble foo0p = 1, j = PREFIX(0p+3); // ok 15d2e95d1538ff91fe902464f02f83429f96117af5Richard Smithdouble k = 0x42_amp+3; // expected-error-re{{invalid suffix '_amp' on integer constant|no matching literal operator for call to 'operator "" _amp'}} 16