diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2017-11-16 09:04:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-16 09:04:31 +0100 |
commit | 3002130a6d3ab0a00d3e7538283d7f468becd8fa (patch) | |
tree | 09f7a95aa893c88ffe0102ac04c369b3dd2f7a17 | |
parent | dc463e1e42ac919d99d763c0127436877fc4efc5 (diff) | |
parent | 443ce6fef2ff2115b90d1929d33788fb2afe2636 (diff) |
Merge pull request #12957 from bojidar-bg/12928-numeric-underscores
Allow underscores in GDScript numeric literals
-rw-r--r-- | modules/gdscript/gd_tokenizer.cpp | 5 | ||||
-rw-r--r-- | scene/gui/text_edit.cpp | 7 |
2 files changed, 8 insertions, 4 deletions
diff --git a/modules/gdscript/gd_tokenizer.cpp b/modules/gdscript/gd_tokenizer.cpp index 98ac0f473d..e241eacd4f 100644 --- a/modules/gdscript/gd_tokenizer.cpp +++ b/modules/gdscript/gd_tokenizer.cpp @@ -885,6 +885,9 @@ void GDTokenizerText::_advance() { return; } sign_found = true; + } else if (GETCHAR(i) == '_') { + i++; + continue; // Included for readability, shouldn't be a part of the string } else break; @@ -897,7 +900,7 @@ void GDTokenizerText::_advance() { return; } - INCPOS(str.length()); + INCPOS(i); if (hexa_found) { int64_t val = str.hex_to_int64(); _make_constant(val); diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 5d429f9f91..6da34cd263 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -894,17 +894,18 @@ void TextEdit::_notification(int p_what) { is_hex_notation = false; } - // check for dot or 'x' for hex notation in floating point number - if ((str[j] == '.' || str[j] == 'x') && !in_word && prev_is_number && !is_number) { + // check for dot or underscore or 'x' for hex notation in floating point number + if ((str[j] == '.' || str[j] == 'x' || str[j] == '_') && !in_word && prev_is_number && !is_number) { is_number = true; is_symbol = false; + is_char = false; if (str[j] == 'x' && str[j - 1] == '0') { is_hex_notation = true; } } - if (!in_word && _is_char(str[j])) { + if (!in_word && _is_char(str[j]) && !is_number) { in_word = true; } |