@@ -1998,22 +1998,34 @@ void GDScriptAnalyzer::resolve_assignable(GDScriptParser::AssignableNode *p_assi
19981998 }
19991999
20002000#if DEBUG_ENABLED
2001- // TODO: Determine if specified type is deprecated, and emit warning if so
20022001 auto dd = EditorHelp::get_doc_data ();
20032002 bool is_deprecated = false ;
2003+ String new_value_type = " value" ;
2004+ String value_name = type.native_type ;
20042005 switch (type.kind ) {
20052006 case GDScriptParser::DataType::Kind::BUILTIN: // No built-in datatypes are deprecated.
20062007 break ;
20072008 case GDScriptParser::DataType::Kind::NATIVE:
20082009 is_deprecated = dd && dd->class_list .has (type.native_type ) && dd->class_list [type.native_type ].is_deprecated ;
2010+ new_value_type = " class" ;
20092011 break ;
20102012 case GDScriptParser::DataType::Kind::SCRIPT: {
20112013 StringName class_name = type.script_type ->get_doc_class_name ();
20122014 is_deprecated = dd && dd->class_list .has (class_name) && dd->class_list [class_name].is_deprecated ;
2015+ new_value_type = " class" ;
20132016 break ;
20142017 }
20152018 case GDScriptParser::DataType::Kind::CLASS:
20162019 is_deprecated = type.class_type ->doc_data .is_deprecated ;
2020+ new_value_type = " class" ;
2021+
2022+ // TODO: Not recognizing the autoload name as a class type
2023+ // var my_var: MyAutoload # <--- not getting this name
2024+ if (type.class_type && type.class_type ->identifier ) {
2025+ value_name = type.class_type ->identifier ->name ;
2026+ } else {
2027+ value_name = " " ;
2028+ }
20172029 break ;
20182030 case GDScriptParser::DataType::Kind::ENUM: {
20192031 StringName enum_type = type.enum_type ; // Something like MyEnum.
@@ -2026,13 +2038,14 @@ void GDScriptAnalyzer::resolve_assignable(GDScriptParser::AssignableNode *p_assi
20262038 is_deprecated = class_doc.enums [enum_type].is_deprecated ;
20272039 }
20282040 }
2041+ new_value_type = " enum" ;
20292042 break ;
20302043 }
20312044 default :
20322045 break ;
20332046 }
20342047 if (is_deprecated) {
2035- parser->push_warning (p_assignable, GDScriptWarning::DEPRECATED_IDENTIFIER);
2048+ parser->push_warning (p_assignable, GDScriptWarning::DEPRECATED_IDENTIFIER, new_value_type, value_name );
20362049 }
20372050#endif
20382051
@@ -4066,7 +4079,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
40664079 for (const DocData::ConstantDoc &doc : dd->class_list [class_name].constants ) {
40674080 if (doc.enumeration == base.enum_type && doc.name == name) {
40684081 if (doc.is_deprecated ) {
4069- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4082+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " enum value " , vformat ( " %s.%s " , base. enum_type , doc. name ) );
40704083 }
40714084 break ;
40724085 }
@@ -4220,7 +4233,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
42204233 p_identifier->constant_source = member.constant ;
42214234#if DEBUG_ENABLED
42224235 if (member.constant ->doc_data .is_deprecated ) {
4223- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4236+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " constant " , name );
42244237 }
42254238#endif
42264239 return ;
@@ -4233,7 +4246,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
42334246 p_identifier->source = GDScriptParser::IdentifierNode::MEMBER_CONSTANT;
42344247#if DEBUG_ENABLED
42354248 if (member.enum_value .doc_data .is_deprecated ) {
4236- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4249+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " enum value " , name );
42374250 }
42384251#endif
42394252 return ;
@@ -4246,7 +4259,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
42464259 p_identifier->source = GDScriptParser::IdentifierNode::MEMBER_CONSTANT;
42474260#if DEBUG_ENABLED
42484261 if (member.m_enum ->doc_data .is_deprecated ) {
4249- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4262+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " enum " , name );
42504263 }
42514264#endif
42524265 return ;
@@ -4260,7 +4273,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
42604273 member.variable ->usages += 1 ;
42614274#if DEBUG_ENABLED
42624275 if (member.variable ->doc_data .is_deprecated ) {
4263- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4276+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " property or variable " , name );
42644277 }
42654278#endif
42664279 return ;
@@ -4276,7 +4289,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
42764289
42774290#if DEBUG_ENABLED
42784291 if (member.signal ->doc_data .is_deprecated ) {
4279- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4292+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " signal " , name );
42804293 }
42814294#endif
42824295 return ;
@@ -4298,7 +4311,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
42984311 p_identifier->source = GDScriptParser::IdentifierNode::MEMBER_CLASS;
42994312#ifdef DEBUG_ENABLED
43004313 if (script_class->get_member (name).m_class ->doc_data .is_deprecated ) {
4301- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4314+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " class " , name );
43024315 }
43034316#endif
43044317 return ;
@@ -4396,7 +4409,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
43964409 for (const DocData::PropertyDoc &doc : dd->class_list [native].properties ) {
43974410 if (doc.name == name) {
43984411 if (doc.is_deprecated ) {
4399- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4412+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " property " , name );
44004413 }
44014414 break ;
44024415 }
@@ -4421,7 +4434,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
44214434 for (const DocData::MethodDoc &doc : dd->class_list [native].signals ) {
44224435 if (doc.name == name) {
44234436 if (doc.is_deprecated ) {
4424- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4437+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " signal " , name );
44254438 }
44264439 break ;
44274440 }
@@ -4438,7 +4451,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
44384451 if (dd && dd->class_list .has (native) && dd->class_list [native].enums .has (name)) {
44394452 DocData::EnumDoc doc = dd->class_list [native].enums [name];
44404453 if (doc.is_deprecated ) {
4441- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4454+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " enum " , name );
44424455 }
44434456 }
44444457#endif
@@ -4458,7 +4471,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
44584471 for (const DocData::ConstantDoc &doc : dd->class_list [native].constants ) {
44594472 if (doc.name == name) {
44604473 if (doc.is_deprecated ) {
4461- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4474+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " constant " , name );
44624475 }
44634476 break ;
44644477 }
@@ -4521,7 +4534,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
45214534
45224535#ifdef DEBUG_ENABLED
45234536 if (p_identifier->constant_source ->doc_data .is_deprecated ) {
4524- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4537+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " constant " , p_identifier-> name );
45254538 }
45264539#endif
45274540 break ;
@@ -4545,7 +4558,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
45454558 }
45464559
45474560 if (p_identifier->variable_source ->doc_data .is_deprecated ) {
4548- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4561+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " property or variable " , p_identifier-> name );
45494562 }
45504563#endif
45514564 break ;
@@ -4668,7 +4681,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
46684681 DocTools *dd = EditorHelp::get_doc_data ();
46694682 if (dd && dd->class_list .has (name)) {
46704683 if (dd->class_list [name].is_deprecated ) {
4671- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4684+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " class " , name );
46724685 }
46734686 }
46744687#endif
@@ -4682,7 +4695,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
46824695 DocTools *dd = EditorHelp::get_doc_data ();
46834696 if (dd && dd->class_list .has (name)) {
46844697 if (dd->class_list [name].is_deprecated ) {
4685- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4698+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " class " , name );
46864699 }
46874700 }
46884701#endif
@@ -4730,7 +4743,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
47304743 DocTools *dd = EditorHelp::get_doc_data ();
47314744 if (dd && dd->class_list .has (name)) {
47324745 if (dd->class_list [name].is_deprecated ) {
4733- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4746+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " class " , name );
47344747 }
47354748 }
47364749#endif
@@ -4757,7 +4770,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
47574770 if (dd && dd->class_list .has (" @GlobalScope" )) {
47584771 for (const DocData::ConstantDoc &cd : dd->class_list [" @GlobalScope" ].constants ) {
47594772 if (cd.name == name && cd.is_deprecated ) {
4760- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4773+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " constant " , name );
47614774 }
47624775 }
47634776 }
@@ -5958,7 +5971,7 @@ bool GDScriptAnalyzer::get_function_signature(GDScriptParser::Node *p_source, bo
59585971 // For user-defined methods.
59595972#ifdef DEBUG_ENABLED
59605973 if (found_function->doc_data .is_deprecated ) {
5961- parser->push_warning (p_source, GDScriptWarning::DEPRECATED_IDENTIFIER);
5974+ parser->push_warning (p_source, GDScriptWarning::DEPRECATED_IDENTIFIER, " function " , found_function-> identifier -> name );
59625975 }
59635976#endif
59645977 return true ;
@@ -6010,7 +6023,7 @@ bool GDScriptAnalyzer::get_function_signature(GDScriptParser::Node *p_source, bo
60106023 auto method_list = dd->class_list [base_native].methods ;
60116024 for (int i = 0 ; i < method_list.size (); i++) {
60126025 if (method_list[i].name == function_name && method_list[i].is_deprecated ) {
6013- parser->push_warning (p_source, GDScriptWarning::DEPRECATED_IDENTIFIER);
6026+ parser->push_warning (p_source, GDScriptWarning::DEPRECATED_IDENTIFIER, " function " , function_name );
60146027 break ;
60156028 }
60166029 }
0 commit comments