summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/gdscript/gdscript_parser.cpp3
-rw-r--r--modules/gdscript/tests/scripts/parser/features/reserved_keywords_as_attribute.gd36
-rw-r--r--modules/gdscript/tests/scripts/parser/features/reserved_keywords_as_attribute.out1
3 files changed, 40 insertions, 0 deletions
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp
index e2a37ab6e9..e37a40c2ab 100644
--- a/modules/gdscript/gdscript_parser.cpp
+++ b/modules/gdscript/gdscript_parser.cpp
@@ -2820,6 +2820,9 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_attribute(ExpressionNode *
attribute->base = p_previous_operand;
+ if (current.is_node_name()) {
+ current.type = GDScriptTokenizer::Token::IDENTIFIER;
+ }
if (!consume(GDScriptTokenizer::Token::IDENTIFIER, R"(Expected identifier after "." for attribute access.)")) {
complete_extents(attribute);
return attribute;
diff --git a/modules/gdscript/tests/scripts/parser/features/reserved_keywords_as_attribute.gd b/modules/gdscript/tests/scripts/parser/features/reserved_keywords_as_attribute.gd
new file mode 100644
index 0000000000..87f9479812
--- /dev/null
+++ b/modules/gdscript/tests/scripts/parser/features/reserved_keywords_as_attribute.gd
@@ -0,0 +1,36 @@
+var dict = {}
+
+func test():
+ dict.if = 1
+ dict.elif = 1
+ dict.else = 1
+ dict.for = 1
+ dict.while = 1
+ dict.match = 1
+ dict.break = 1
+ dict.continue = 1
+ dict.pass = 1
+ dict.return = 1
+ dict.class = 1
+ dict.class_name = 1
+ dict.extends = 1
+ dict.is = 1
+ dict.in = 1
+ dict.as = 1
+ dict.self = 1
+ dict.signal = 1
+ dict.func = 1
+ dict.static = 1
+ dict.const = 1
+ dict.enum = 1
+ dict.var = 1
+ dict.breakpoint = 1
+ dict.preload = 1
+ dict.await = 1
+ dict.yield = 1
+ dict.assert = 1
+ dict.void = 1
+ dict.PI = 1
+ dict.TAU = 1
+ dict.INF = 1
+ dict.NAN = 1
diff --git a/modules/gdscript/tests/scripts/parser/features/reserved_keywords_as_attribute.out b/modules/gdscript/tests/scripts/parser/features/reserved_keywords_as_attribute.out
new file mode 100644
index 0000000000..d73c5eb7cd
--- /dev/null
+++ b/modules/gdscript/tests/scripts/parser/features/reserved_keywords_as_attribute.out
@@ -0,0 +1 @@
+GDTEST_OK