Skip to content

Commit 8f6cf99

Browse files
committed
GDTrait
1 parent 9e02194 commit 8f6cf99

28 files changed

+1172
-64
lines changed

doc/classes/ProjectSettings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,9 @@
659659
<member name="debug/gdscript/warnings/unused_signal" type="int" setter="" getter="" default="1">
660660
When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a signal is declared but never explicitly used in the class.
661661
</member>
662+
<member name="debug/gdscript/warnings/unused_static_overriding_trait" type="int" setter="" getter="" default="1">
663+
When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when an overridden static member from a trait is not declared with the [code]static[/code] keyword.
664+
</member>
662665
<member name="debug/gdscript/warnings/unused_variable" type="int" setter="" getter="" default="1">
663666
When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a local variable is unused.
664667
</member>

modules/gdscript/editor/gdscript_docgen.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ void GDScriptDocGen::_doctype_from_gdtype(const GDType &p_gdtype, String &r_type
124124
}
125125
r_type = "Object";
126126
return;
127+
case GDType::TRAIT:
127128
case GDType::CLASS:
128129
if (p_gdtype.is_meta_type) {
129130
r_type = GDScript::get_class_static();
@@ -365,6 +366,10 @@ void GDScriptDocGen::_generate_docs(GDScript *p_script, const GDP::ClassNode *p_
365366
for (const GDP::ClassNode::Member &member : p_class->members) {
366367
switch (member.type) {
367368
case GDP::ClassNode::Member::CLASS: {
369+
if (p_class->type == GDP::Node::TRAIT) {
370+
// Trait do not have scripts for there inner classes.
371+
continue;
372+
}
368373
const GDP::ClassNode *inner_class = member.m_class;
369374
const StringName &class_name = inner_class->identifier->name;
370375

modules/gdscript/editor/gdscript_translation_parser_plugin.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ void GDScriptEditorTranslationParserPlugin::_traverse_class(const GDScriptParser
144144
const GDScriptParser::ClassNode::Member &m = p_class->members[i];
145145
// Other member types can't contain translatable strings.
146146
switch (m.type) {
147+
case GDScriptParser::ClassNode::Member::TRAIT:
147148
case GDScriptParser::ClassNode::Member::CLASS:
148149
_traverse_class(m.m_class);
149150
break;

modules/gdscript/gdscript.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2757,7 +2757,8 @@ Vector<String> GDScriptLanguage::get_reserved_words() const {
27572757
"namespace", // Reserved for potential future use.
27582758
"signal",
27592759
"static",
2760-
"trait", // Reserved for potential future use.
2760+
"trait",
2761+
"uses",
27612762
"var",
27622763
// Other keywords.
27632764
"await",

0 commit comments

Comments
 (0)