Browse Source

Strip semicolon if followed by a `}` or `)` on the same line

gingerBill 4 years ago
parent
commit
773a766b83
1 changed files with 12 additions and 0 deletions
  1. 12 0
      src/parser.cpp

+ 12 - 0
src/parser.cpp

@@ -1497,7 +1497,19 @@ void assign_removal_flag_to_semicolon(AstFile *f) {
 	Token *curr_token = &f->tokens[f->curr_token_index];
 	GB_ASSERT(prev_token->kind == Token_Semicolon);
 	if (prev_token->string == ";") {
+		bool ok = false;
 		if (curr_token->pos.line > prev_token->pos.line) {
+			ok = true;
+		} else if (curr_token->pos.line == prev_token->pos.line) {
+			switch (curr_token->kind) {
+			case Token_CloseBrace:
+			case Token_CloseParen:
+				ok = true;
+				break;
+			}
+		}
+			
+		if (ok) {
 			if (build_context.strict_style) {
 				syntax_error(*prev_token, "Found unneeded semicolon");
 			}