From d548073f68ae719933c328686df224f74a60d366 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sun, 7 Jul 2019 15:45:10 +0900 Subject: Enable indentation warning against `if` just after `else` ```ruby if false puts 'false' else if true puts 'true' end # -:5: warning: mismatched indentations at 'end' with 'if' at 3 end ``` [Feature #15990] --- parse.y | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'parse.y') diff --git a/parse.y b/parse.y index 88c02082ad..7823b4215d 100644 --- a/parse.y +++ b/parse.y @@ -3003,6 +3003,15 @@ k_begin : keyword_begin k_if : keyword_if { token_info_push(p, "if", &@$); + if (p->token_info && p->token_info->nonspc && + p->token_info->next && !strcmp(p->token_info->next->token, "if")) { + const char *tok = p->lex.ptok, *beg = p->lex.pbeg; + while (tok > beg && ISSPACE(*--tok)); + while (beg < tok && ISSPACE(*beg)) beg++; + if (tok - beg == 3 && !memcmp(beg, "else", 4)) { + p->token_info->nonspc = 0; + } + } } ; -- cgit v1.2.3