mirror of
https://github.com/godotengine/godot.git
synced 2024-11-25 21:52:51 +00:00
Merge pull request #73226 from AThousandShips/gdscript_tok_improvement
Improve GDScript identifier tokenization
This commit is contained in:
commit
62b4643d85
@ -579,6 +579,24 @@ GDScriptTokenizer::Token GDScriptTokenizer::potential_identifier() {
|
||||
return make_identifier(name);
|
||||
}
|
||||
|
||||
if (!only_ascii) {
|
||||
// Kept here in case the order with push_error matters.
|
||||
Token id = make_identifier(name);
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
// Additional checks for identifiers but only in debug and if it's available in TextServer.
|
||||
if (TS->has_feature(TextServer::FEATURE_UNICODE_SECURITY)) {
|
||||
int64_t confusable = TS->is_confusable(name, keyword_list);
|
||||
if (confusable >= 0) {
|
||||
push_error(vformat(R"(Identifier "%s" is visually similar to the GDScript keyword "%s" and thus not allowed.)", name, keyword_list[confusable]));
|
||||
}
|
||||
}
|
||||
#endif // DEBUG_ENABLED
|
||||
|
||||
// Cannot be a keyword, as keywords are ASCII only.
|
||||
return id;
|
||||
}
|
||||
|
||||
// Define some helper macros for the switch case.
|
||||
#define KEYWORD_GROUP_CASE(char) \
|
||||
break; \
|
||||
@ -614,19 +632,7 @@ GDScriptTokenizer::Token GDScriptTokenizer::potential_identifier() {
|
||||
}
|
||||
|
||||
// Not a keyword, so must be an identifier.
|
||||
Token id = make_identifier(name);
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
// Additional checks for identifiers but only in debug and if it's available in TextServer.
|
||||
if (!only_ascii && TS->has_feature(TextServer::FEATURE_UNICODE_SECURITY)) {
|
||||
int64_t confusable = TS->is_confusable(name, keyword_list);
|
||||
if (confusable >= 0) {
|
||||
push_error(vformat(R"(Identifier "%s" is visually similar to the GDScript keyword "%s" and thus not allowed.)", name, keyword_list[confusable]));
|
||||
}
|
||||
}
|
||||
#endif // DEBUG_ENABLED
|
||||
|
||||
return id;
|
||||
return make_identifier(name);
|
||||
|
||||
#undef KEYWORD_GROUP_CASE
|
||||
#undef KEYWORD
|
||||
|
Loading…
Reference in New Issue
Block a user