diff options
author | Bojidar Marinov <bojidar.marinov.bg@gmail.com> | 2017-03-23 20:07:02 +0200 |
---|---|---|
committer | Bojidar Marinov <bojidar.marinov.bg@gmail.com> | 2017-03-23 20:07:02 +0200 |
commit | 18ab88b3f1000cbcab5704402e402e1cdf65862f (patch) | |
tree | c6632069b898567705eae300da17e8304764209e /modules/gdscript | |
parent | 33a2c5def0f55ef67196e35ac3309d3f9b70d967 (diff) |
Make inline blocks in GDScript more pythonic
Fixes #8001
Diffstat (limited to 'modules/gdscript')
-rw-r--r-- | modules/gdscript/gd_parser.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp index 86b97e27a9..b37181bf3f 100644 --- a/modules/gdscript/gd_parser.cpp +++ b/modules/gdscript/gd_parser.cpp @@ -76,7 +76,7 @@ bool GDParser::_enter_indent_block(BlockNode *p_block) { // be more python-like int current = tab_level.back()->get(); - tab_level.push_back(current + 1); + tab_level.push_back(current); return true; //_set_error("newline expected after ':'."); //return false; @@ -2258,7 +2258,15 @@ void GDParser::_parse_block(BlockNode *p_block, bool p_static) { p_block->statements.push_back(nl); #endif + bool is_first_line = true; + while (true) { + if (!is_first_line && tab_level.back()->prev() && tab_level.back()->prev()->get() == indent_level) { + // pythonic single-line expression, don't parse future lines + tab_level.pop_back(); + return; + } + is_first_line = false; GDTokenizer::Token token = tokenizer->get_token(); if (error_set) |