about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorMark Simulacrum <mark.simulacrum@gmail.com>2017-05-13 20:55:11 -0600
committerGitHub <noreply@github.com>2017-05-13 20:55:11 -0600
commite71d4404bd6ad9e282d8efbb20eb8d8c2d13a9a8 (patch)
tree481940c9b748603a9390700349140200ce2a55d4 /src/libsyntax/parse
parentcfea5222268680114949777457237aae394bbfe7 (diff)
parent7b535e1096b8a1f0d076d4b6f6aac623adb7d23f (diff)
downloadrust-e71d4404bd6ad9e282d8efbb20eb8d8c2d13a9a8.tar.gz
rust-e71d4404bd6ad9e282d8efbb20eb8d8c2d13a9a8.zip
Rollup merge of #41946 - qnighy:disallow-dot-underscore-in-float, r=petrochenkov
Disallow ._ in float literal.

This patch makes lexer stop parsing number literals before `._`, as well as before `.a`. Underscore itself is still allowed like in `4_000_000.000_000_`.

Fixes a half part of #41723. The other is `""_`.
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/lexer/mod.rs4
1 files changed, 1 insertions, 3 deletions
diff --git a/src/libsyntax/parse/lexer/mod.rs b/src/libsyntax/parse/lexer/mod.rs
index ded1f0b599a..a83b19c7334 100644
--- a/src/libsyntax/parse/lexer/mod.rs
+++ b/src/libsyntax/parse/lexer/mod.rs
@@ -754,9 +754,7 @@ impl<'a> StringReader<'a> {
         // integer literal followed by field/method access or a range pattern
         // (`0..2` and `12.foo()`)
         if self.ch_is('.') && !self.nextch_is('.') &&
-           !self.nextch()
-                .unwrap_or('\0')
-                .is_xid_start() {
+           !ident_start(self.nextch()) {
             // might have stuff after the ., and if it does, it needs to start
             // with a number
             self.bump();