зеркало из https://github.com/microsoft/clang-1.git
Support floating point literals of the form "1e-16f" which specify an exponent but no decimal point.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44431 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
5656b78256
Коммит
016765e345
|
@ -261,7 +261,7 @@ NumericLiteralParser(const char *begin, const char *end,
|
||||||
s = SkipOctalDigits(s);
|
s = SkipOctalDigits(s);
|
||||||
if (s == ThisTokEnd) {
|
if (s == ThisTokEnd) {
|
||||||
// Done.
|
// Done.
|
||||||
} else if (isxdigit(*s)) {
|
} else if (isxdigit(*s) && !(*s == 'e' || *s == 'E')) {
|
||||||
TokLoc = PP.AdvanceToTokenCharacter(TokLoc, s-begin);
|
TokLoc = PP.AdvanceToTokenCharacter(TokLoc, s-begin);
|
||||||
Diag(TokLoc, diag::err_invalid_octal_digit, std::string(s, s+1));
|
Diag(TokLoc, diag::err_invalid_octal_digit, std::string(s, s+1));
|
||||||
return;
|
return;
|
||||||
|
@ -290,7 +290,7 @@ NumericLiteralParser(const char *begin, const char *end,
|
||||||
s = SkipDigits(s);
|
s = SkipDigits(s);
|
||||||
if (s == ThisTokEnd) {
|
if (s == ThisTokEnd) {
|
||||||
// Done.
|
// Done.
|
||||||
} else if (isxdigit(*s)) {
|
} else if (isxdigit(*s) && !(*s == 'e' || *s == 'E')) {
|
||||||
Diag(TokLoc, diag::err_invalid_decimal_digit, std::string(s, s+1));
|
Diag(TokLoc, diag::err_invalid_decimal_digit, std::string(s, s+1));
|
||||||
return;
|
return;
|
||||||
} else if (*s == '.') {
|
} else if (*s == '.') {
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
// RUN: clang %s -emit-llvm 2>&1 | grep 0x3BFD83C940000000 | count 2
|
||||||
|
// RUN: clang %s -emit-llvm 2>&1 | grep 0x46A3B8B5B5056E16 | count 2
|
||||||
|
|
||||||
|
float F = 1e-19f;
|
||||||
|
double D = 2e32;
|
||||||
|
float F2 = 01e-19f;
|
||||||
|
double D2 = 02e32;
|
Загрузка…
Ссылка в новой задаче