Browse Source

GDScript: Remove unused `switch`, `case` and `do` CF keywords

They had been reserved for future implementation, but we now have the
`match` CF keyword which does the same and more.

According to @reduz `do` was even added by mistake when copying from
the shader language parser, it was never intended to add support for
`do`... `while` loops, as the syntax would be awkward in GDScript,
and the added sugar is not worth it.

Fixes #25787.
Rémi Verschelde 6 years ago
parent
commit
d35003d92a

+ 0 - 3
main/tests/test_gdscript.cpp

@@ -359,9 +359,6 @@ static void _parser_show_block(const GDScriptParser::BlockNode *p_block, int p_i
 					} break;
 					case GDScriptParser::ControlFlowNode::CF_MATCH: {
 						// FIXME: Implement
-					} break;
-					case GDScriptParser::ControlFlowNode::CF_SWITCH: {
-
 					} break;
 					case GDScriptParser::ControlFlowNode::CF_CONTINUE: {
 

+ 0 - 3
modules/gdscript/gdscript_compiler.cpp

@@ -1507,9 +1507,6 @@ Error GDScriptCompiler::_parse_block(CodeGen &codegen, const GDScriptParser::Blo
 
 						codegen.opcodes.write[break_addr + 1] = codegen.opcodes.size();
 
-					} break;
-					case GDScriptParser::ControlFlowNode::CF_SWITCH: {
-
 					} break;
 					case GDScriptParser::ControlFlowNode::CF_BREAK: {
 

+ 0 - 1
modules/gdscript/gdscript_parser.h

@@ -445,7 +445,6 @@ public:
 			CF_IF,
 			CF_FOR,
 			CF_WHILE,
-			CF_SWITCH,
 			CF_BREAK,
 			CF_CONTINUE,
 			CF_RETURN,

+ 0 - 9
modules/gdscript/gdscript_tokenizer.cpp

@@ -80,10 +80,7 @@ const char *GDScriptTokenizer::token_names[TK_MAX] = {
 	"elif",
 	"else",
 	"for",
-	"do",
 	"while",
-	"switch (reserved)",
-	"case (reserved)",
 	"break",
 	"continue",
 	"pass",
@@ -224,9 +221,6 @@ static const _kws _keyword_list[] = {
 	{ GDScriptTokenizer::TK_CF_ELSE, "else" },
 	{ GDScriptTokenizer::TK_CF_FOR, "for" },
 	{ GDScriptTokenizer::TK_CF_WHILE, "while" },
-	{ GDScriptTokenizer::TK_CF_DO, "do" },
-	{ GDScriptTokenizer::TK_CF_SWITCH, "switch" },
-	{ GDScriptTokenizer::TK_CF_CASE, "case" },
 	{ GDScriptTokenizer::TK_CF_BREAK, "break" },
 	{ GDScriptTokenizer::TK_CF_CONTINUE, "continue" },
 	{ GDScriptTokenizer::TK_CF_RETURN, "return" },
@@ -291,9 +285,6 @@ bool GDScriptTokenizer::is_token_literal(int p_offset, bool variable_safe) const
 		case TK_CF_ELSE:
 		case TK_CF_FOR:
 		case TK_CF_WHILE:
-		case TK_CF_DO:
-		case TK_CF_SWITCH:
-		case TK_CF_CASE:
 		case TK_CF_BREAK:
 		case TK_CF_CONTINUE:
 		case TK_CF_RETURN:

+ 1 - 4
modules/gdscript/gdscript_tokenizer.h

@@ -86,10 +86,7 @@ public:
 		TK_CF_ELIF,
 		TK_CF_ELSE,
 		TK_CF_FOR,
-		TK_CF_DO,
 		TK_CF_WHILE,
-		TK_CF_SWITCH,
-		TK_CF_CASE,
 		TK_CF_BREAK,
 		TK_CF_CONTINUE,
 		TK_CF_PASS,
@@ -118,7 +115,7 @@ public:
 		TK_PR_REMOTE,
 		TK_PR_SYNC,
 		TK_PR_MASTER,
-		TK_PR_SLAVE,
+		TK_PR_SLAVE, // Deprecated by TK_PR_PUPPET, to remove in 4.0
 		TK_PR_PUPPET,
 		TK_PR_REMOTESYNC,
 		TK_PR_MASTERSYNC,