Remove WinAPI #undef hacks needed for mingw-std-threads

Instead, we rename the conflicting symbols.
This commit is contained in:
Rémi Verschelde
2025-04-29 12:00:50 +02:00
parent ce94b26de7
commit c019b76523
15 changed files with 46 additions and 73 deletions

View File

@@ -468,7 +468,7 @@ Dictionary GDScriptSyntaxHighlighter::_get_line_syntax_highlighting_impl(int p_l
if (prev_text == GDScriptTokenizer::get_token_name(GDScriptTokenizer::Token::FUNC)) {
in_function_declaration = true;
}
} else if (prev_text == GDScriptTokenizer::get_token_name(GDScriptTokenizer::Token::VAR) || prev_text == GDScriptTokenizer::get_token_name(GDScriptTokenizer::Token::FOR) || prev_text == GDScriptTokenizer::get_token_name(GDScriptTokenizer::Token::CONST)) {
} else if (prev_text == GDScriptTokenizer::get_token_name(GDScriptTokenizer::Token::VAR) || prev_text == GDScriptTokenizer::get_token_name(GDScriptTokenizer::Token::FOR) || prev_text == GDScriptTokenizer::get_token_name(GDScriptTokenizer::Token::TK_CONST)) {
in_var_const_declaration = true;
}

View File

@@ -536,7 +536,7 @@ void GDScriptParser::synchronize() {
case GDScriptTokenizer::Token::FUNC:
case GDScriptTokenizer::Token::STATIC:
case GDScriptTokenizer::Token::VAR:
case GDScriptTokenizer::Token::CONST:
case GDScriptTokenizer::Token::TK_CONST:
case GDScriptTokenizer::Token::SIGNAL:
//case GDScriptTokenizer::Token::IF: // Can also be inside expressions.
case GDScriptTokenizer::Token::FOR:
@@ -1020,7 +1020,7 @@ void GDScriptParser::parse_class_body(bool p_is_multiline) {
current_class->has_static_data = true;
}
break;
case GDScriptTokenizer::Token::CONST:
case GDScriptTokenizer::Token::TK_CONST:
parse_class_member(&GDScriptParser::parse_constant, AnnotationInfo::CONSTANT, "constant");
break;
case GDScriptTokenizer::Token::SIGNAL:
@@ -1895,7 +1895,7 @@ GDScriptParser::Node *GDScriptParser::parse_statement() {
advance();
result = parse_variable(false, false);
break;
case GDScriptTokenizer::Token::CONST:
case GDScriptTokenizer::Token::TK_CONST:
advance();
result = parse_constant(false);
break;
@@ -2155,9 +2155,9 @@ GDScriptParser::ForNode *GDScriptParser::parse_for() {
}
if (n_for->datatype_specifier == nullptr) {
consume(GDScriptTokenizer::Token::IN, R"(Expected "in" or ":" after "for" variable name.)");
consume(GDScriptTokenizer::Token::TK_IN, R"(Expected "in" or ":" after "for" variable name.)");
} else {
consume(GDScriptTokenizer::Token::IN, R"(Expected "in" after "for" variable type specifier.)");
consume(GDScriptTokenizer::Token::TK_IN, R"(Expected "in" after "for" variable type specifier.)");
}
n_for->list = parse_expression(false);
@@ -2810,7 +2810,7 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_binary_not_in_operator(Exp
UnaryOpNode *operation = alloc_node<UnaryOpNode>();
reset_extents(operation, p_previous_operand);
update_extents(operation);
consume(GDScriptTokenizer::Token::IN, R"(Expected "in" after "not" in content-test operator.)");
consume(GDScriptTokenizer::Token::TK_IN, R"(Expected "in" after "not" in content-test operator.)");
ExpressionNode *in_operation = parse_binary_operator(p_previous_operand, p_can_assign);
operation->operation = UnaryOpNode::OP_LOGIC_NOT;
operation->variant_op = Variant::OP_NOT;
@@ -2890,7 +2890,7 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_binary_operator(Expression
operation->operation = BinaryOpNode::OP_LOGIC_OR;
operation->variant_op = Variant::OP_OR;
break;
case GDScriptTokenizer::Token::IN:
case GDScriptTokenizer::Token::TK_IN:
operation->operation = BinaryOpNode::OP_CONTENT_TEST;
operation->variant_op = Variant::OP_IN;
break;
@@ -3685,7 +3685,7 @@ GDScriptParser::TypeNode *GDScriptParser::parse_type(bool p_allow_void) {
TypeNode *type = alloc_node<TypeNode>();
make_completion_context(p_allow_void ? COMPLETION_TYPE_NAME_OR_VOID : COMPLETION_TYPE_NAME, type);
if (!match(GDScriptTokenizer::Token::IDENTIFIER)) {
if (match(GDScriptTokenizer::Token::VOID)) {
if (match(GDScriptTokenizer::Token::TK_VOID)) {
if (p_allow_void) {
complete_extents(type);
TypeNode *void_type = type;
@@ -4116,11 +4116,11 @@ GDScriptParser::ParseRule *GDScriptParser::get_rule(GDScriptTokenizer::Token::Ty
{ nullptr, nullptr, PREC_NONE }, // BREAKPOINT,
{ nullptr, nullptr, PREC_NONE }, // CLASS,
{ nullptr, nullptr, PREC_NONE }, // CLASS_NAME,
{ nullptr, nullptr, PREC_NONE }, // CONST,
{ nullptr, nullptr, PREC_NONE }, // TK_CONST,
{ nullptr, nullptr, PREC_NONE }, // ENUM,
{ nullptr, nullptr, PREC_NONE }, // EXTENDS,
{ &GDScriptParser::parse_lambda, nullptr, PREC_NONE }, // FUNC,
{ nullptr, &GDScriptParser::parse_binary_operator, PREC_CONTENT_TEST }, // IN,
{ nullptr, &GDScriptParser::parse_binary_operator, PREC_CONTENT_TEST }, // TK_IN,
{ nullptr, &GDScriptParser::parse_type_test, PREC_TYPE_TEST }, // IS,
{ nullptr, nullptr, PREC_NONE }, // NAMESPACE,
{ &GDScriptParser::parse_preload, nullptr, PREC_NONE }, // PRELOAD,
@@ -4130,7 +4130,7 @@ GDScriptParser::ParseRule *GDScriptParser::get_rule(GDScriptTokenizer::Token::Ty
{ &GDScriptParser::parse_call, nullptr, PREC_NONE }, // SUPER,
{ nullptr, nullptr, PREC_NONE }, // TRAIT,
{ nullptr, nullptr, PREC_NONE }, // VAR,
{ nullptr, nullptr, PREC_NONE }, // VOID,
{ nullptr, nullptr, PREC_NONE }, // TK_VOID,
{ &GDScriptParser::parse_yield, nullptr, PREC_NONE }, // YIELD,
// Punctuation
{ &GDScriptParser::parse_array, &GDScriptParser::parse_subscript, PREC_SUBSCRIPT }, // BRACKET_OPEN,

View File

@@ -107,11 +107,11 @@ static const char *token_names[] = {
"breakpoint", // BREAKPOINT,
"class", // CLASS,
"class_name", // CLASS_NAME,
"const", // CONST,
"const", // TK_CONST,
"enum", // ENUM,
"extends", // EXTENDS,
"func", // FUNC,
"in", // IN,
"in", // TK_IN,
"is", // IS,
"namespace", // NAMESPACE
"preload", // PRELOAD,
@@ -121,7 +121,7 @@ static const char *token_names[] = {
"super", // SUPER,
"trait", // TRAIT,
"var", // VAR,
"void", // VOID,
"void", // TK_VOID,
"yield", // YIELD,
// Punctuation
"[", // BRACKET_OPEN,
@@ -221,7 +221,7 @@ bool GDScriptTokenizer::Token::is_node_name() const {
case BREAKPOINT:
case CLASS_NAME:
case CLASS:
case CONST:
case TK_CONST:
case CONST_PI:
case CONST_INF:
case CONST_NAN:
@@ -234,7 +234,7 @@ bool GDScriptTokenizer::Token::is_node_name() const {
case FOR:
case FUNC:
case IF:
case IN:
case TK_IN:
case IS:
case MATCH:
case NAMESPACE:
@@ -250,7 +250,7 @@ bool GDScriptTokenizer::Token::is_node_name() const {
case TRAIT:
case UNDERSCORE:
case VAR:
case VOID:
case TK_VOID:
case WHILE:
case WHEN:
case YIELD:
@@ -505,7 +505,7 @@ GDScriptTokenizer::Token GDScriptTokenizerText::annotation() {
KEYWORD_GROUP('c') \
KEYWORD("class", Token::CLASS) \
KEYWORD("class_name", Token::CLASS_NAME) \
KEYWORD("const", Token::CONST) \
KEYWORD("const", Token::TK_CONST) \
KEYWORD("continue", Token::CONTINUE) \
KEYWORD_GROUP('e') \
KEYWORD("elif", Token::ELIF) \
@@ -517,7 +517,7 @@ GDScriptTokenizer::Token GDScriptTokenizerText::annotation() {
KEYWORD("func", Token::FUNC) \
KEYWORD_GROUP('i') \
KEYWORD("if", Token::IF) \
KEYWORD("in", Token::IN) \
KEYWORD("in", Token::TK_IN) \
KEYWORD("is", Token::IS) \
KEYWORD_GROUP('m') \
KEYWORD("match", Token::MATCH) \
@@ -540,7 +540,7 @@ GDScriptTokenizer::Token GDScriptTokenizerText::annotation() {
KEYWORD("trait", Token::TRAIT) \
KEYWORD_GROUP('v') \
KEYWORD("var", Token::VAR) \
KEYWORD("void", Token::VOID) \
KEYWORD("void", Token::TK_VOID) \
KEYWORD_GROUP('w') \
KEYWORD("while", Token::WHILE) \
KEYWORD("when", Token::WHEN) \

View File

@@ -35,12 +35,6 @@
#include "core/templates/vector.h"
#include "core/variant/variant.h"
#ifdef MINGW_ENABLED
#undef CONST
#undef IN
#undef VOID
#endif
class GDScriptTokenizer {
public:
enum CursorPlace {
@@ -117,11 +111,11 @@ public:
BREAKPOINT,
CLASS,
CLASS_NAME,
CONST,
TK_CONST, // Conflict with WinAPI.
ENUM,
EXTENDS,
FUNC,
IN,
TK_IN, // Conflict with WinAPI.
IS,
NAMESPACE,
PRELOAD,
@@ -131,7 +125,7 @@ public:
SUPER,
TRAIT,
VAR,
VOID,
TK_VOID, // Conflict with WinAPI.
YIELD,
// Punctuation
BRACKET_OPEN,