Update lexer to not include `-` in numbers.
This CL removes the parsing of a `-` in front of numerics when lexed.
This will cause the number to become a UnaryOperator negation then the
number instead of a negative number.
Bug: tint:1679, tint:1141, tint:1570
Change-Id: I217c0ffcbe5be934c8d56bd83141b47ade83bc60
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/106463
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
diff --git a/src/tint/reader/wgsl/lexer_test.cc b/src/tint/reader/wgsl/lexer_test.cc
index 3268eaf..a7c13e6 100644
--- a/src/tint/reader/wgsl/lexer_test.cc
+++ b/src/tint/reader/wgsl/lexer_test.cc
@@ -426,57 +426,35 @@
// No decimal, with 'f' suffix
FloatData{"0f", 0.0},
FloatData{"1f", 1.0},
- FloatData{"-0f", 0.0},
- FloatData{"-1f", -1.0},
// No decimal, with 'h' suffix
FloatData{"0h", 0.0},
FloatData{"1h", 1.0},
- FloatData{"-0h", 0.0},
- FloatData{"-1h", -1.0},
// Zero, with decimal.
FloatData{"0.0", 0.0},
FloatData{"0.", 0.0},
FloatData{".0", 0.0},
- FloatData{"-0.0", 0.0},
- FloatData{"-0.", 0.0},
- FloatData{"-.0", 0.0},
// Zero, with decimal and 'f' suffix
FloatData{"0.0f", 0.0},
FloatData{"0.f", 0.0},
FloatData{".0f", 0.0},
- FloatData{"-0.0f", 0.0},
- FloatData{"-0.f", 0.0},
- FloatData{"-.0f", 0.0},
// Zero, with decimal and 'h' suffix
FloatData{"0.0h", 0.0},
FloatData{"0.h", 0.0},
FloatData{".0h", 0.0},
- FloatData{"-0.0h", 0.0},
- FloatData{"-0.h", 0.0},
- FloatData{"-.0h", 0.0},
// Non-zero with decimal
FloatData{"5.7", 5.7},
FloatData{"5.", 5.},
FloatData{".7", .7},
- FloatData{"-5.7", -5.7},
- FloatData{"-5.", -5.},
- FloatData{"-.7", -.7},
// Non-zero with decimal and 'f' suffix
FloatData{"5.7f", static_cast<double>(5.7f)},
FloatData{"5.f", static_cast<double>(5.f)},
FloatData{".7f", static_cast<double>(.7f)},
- FloatData{"-5.7f", static_cast<double>(-5.7f)},
- FloatData{"-5.f", static_cast<double>(-5.f)},
- FloatData{"-.7f", static_cast<double>(-.7f)},
// Non-zero with decimal and 'h' suffix
FloatData{"5.7h", static_cast<double>(f16::Quantize(5.7f))},
FloatData{"5.h", static_cast<double>(f16::Quantize(5.f))},
FloatData{".7h", static_cast<double>(f16::Quantize(.7f))},
- FloatData{"-5.7h", static_cast<double>(f16::Quantize(-5.7f))},
- FloatData{"-5.h", static_cast<double>(f16::Quantize(-5.f))},
- FloatData{"-.7h", static_cast<double>(f16::Quantize(-.7f))},
// No decimal, with exponent
FloatData{"1e5", 1e5},
@@ -532,7 +510,6 @@
INSTANTIATE_TEST_SUITE_P(LexerTest,
FloatTest_Invalid,
testing::Values(".",
- "-.",
// Need a mantissa digit
".e5",
".E5",
@@ -545,9 +522,7 @@
".e-",
// Overflow
"2.5e+256f",
- "-2.5e+127f",
"6.5520e+4h",
- "-6.5e+12h",
// Decimal exponent must immediately
// follow the 'e'.
"2.5e 12",
@@ -791,12 +766,9 @@
testing::Combine(testing::Values('\0'), // No suffix
testing::ValuesIn(std::vector<ParseIntegerCase>{
{"0", 0},
- {"-2", -2},
{"2", 2},
{"123", 123},
{"2147483647", 2147483647},
- {"-2147483648", -2147483648LL},
- {"-9223372036854775808", -9223372036854775807LL - 1},
})));
INSTANTIATE_TEST_SUITE_P(Dec_u32,
@@ -813,11 +785,8 @@
testing::Combine(testing::Values('i'), // Suffix
testing::ValuesIn(std::vector<ParseIntegerCase>{
{"0i", 0u},
- {"-0i", 0u},
{"123i", 123},
- {"-123i", -123},
{"2147483647i", 2147483647},
- {"-2147483647i", -2147483647ll},
})));
INSTANTIATE_TEST_SUITE_P(Hex_AInt,
@@ -828,16 +797,10 @@
{"0X0", 0},
{"0x42", 66},
{"0X42", 66},
- {"-0x42", -66},
- {"-0X42", -66},
{"0xeF1Abc9", 0xeF1Abc9},
{"0XeF1Abc9", 0xeF1Abc9},
- {"-0xeF1Abc9", -0xeF1Abc9},
- {"-0XeF1Abc9", -0xeF1Abc9},
{"0x80000000", 0x80000000},
{"0X80000000", 0X80000000},
- {"-0x80000000", -0x80000000ll},
- {"-0X80000000", -0X80000000ll},
{"0x7FFFFFFF", 0x7fffffff},
{"0X7FFFFFFF", 0x7fffffff},
{"0x7fffffff", 0x7fffffff},
@@ -845,7 +808,6 @@
{"0x7FfFfFfF", 0x7fffffff},
{"0X7FfFfFfF", 0x7fffffff},
{"0x7fffffffffffffff", 0x7fffffffffffffffll},
- {"-0x7fffffffffffffff", -0x7fffffffffffffffll},
})));
INSTANTIATE_TEST_SUITE_P(Hex_u32,
@@ -869,22 +831,13 @@
testing::ValuesIn(std::vector<ParseIntegerCase>{
{"0x0i", 0},
{"0x42i", 66},
- {"-0x0i", 0},
- {"-0x42i", -66},
{"0xeF1Abc9i", 250719177},
- {"-0xeF1Abc9i", -250719177},
{"0x7FFFFFFFi", 0x7fffffff},
- {"-0x7FFFFFFFi", -0x7fffffff},
{"0X7FFFFFFFi", 0x7fffffff},
- {"-0X7FFFFFFFi", -0x7fffffff},
{"0x7fffffffi", 0x7fffffff},
- {"-0x7fffffffi", -0x7fffffff},
{"0X7fffffffi", 0x7fffffff},
- {"-0X7fffffffi", -0x7fffffff},
{"0x7FfFfFfFi", 0x7fffffff},
- {"-0x7FfFfFfFi", -0x7fffffff},
{"0X7FfFfFfFi", 0x7fffffff},
- {"-0X7FfFfFfFi", -0x7fffffff},
})));
////////////////////////////////////////////////////////////////////////////////
// ParseIntegerTest_CannotBeRepresented
@@ -920,9 +873,8 @@
INSTANTIATE_TEST_SUITE_P(u32,
ParseIntegerTest_CannotBeRepresented,
- testing::Combine(testing::Values("u32"), // type
- testing::Values("4294967296u", //
- "-1u")));
+ testing::Combine(testing::Values("u32"), // type
+ testing::Values("4294967296u")));
////////////////////////////////////////////////////////////////////////////////
// ParseIntegerTest_LeadingZeros
@@ -942,7 +894,7 @@
INSTANTIATE_TEST_SUITE_P(LeadingZero,
ParseIntegerTest_LeadingZeros,
- testing::Values("01234", "0000", "-00", "00u"));
+ testing::Values("01234", "0000", "00u"));
////////////////////////////////////////////////////////////////////////////////
// ParseIntegerTest_NoSignificantDigits
@@ -962,18 +914,7 @@
INSTANTIATE_TEST_SUITE_P(LeadingZero,
ParseIntegerTest_NoSignificantDigits,
- testing::Values("0x",
- "0X",
- "-0x",
- "-0X",
- "0xu",
- "0Xu",
- "-0xu",
- "-0Xu",
- "0xi",
- "0Xi",
- "-0xi",
- "-0Xi"));
+ testing::Values("0x", "0X", "0xu", "0Xu", "0xi", "0Xi"));
struct TokenData {
const char* input;