@@ -1987,22 +1987,34 @@ void GDScriptAnalyzer::resolve_assignable(GDScriptParser::AssignableNode *p_assi
19871987 }
19881988
19891989#if DEBUG_ENABLED
1990- // TODO: Determine if specified type is deprecated, and emit warning if so
19911990 auto dd = EditorHelp::get_doc_data ();
19921991 bool is_deprecated = false ;
1992+ String new_value_type = " value" ;
1993+ String value_name = type.native_type ;
19931994 switch (type.kind ) {
19941995 case GDScriptParser::DataType::Kind::BUILTIN: // No built-in datatypes are deprecated.
19951996 break ;
19961997 case GDScriptParser::DataType::Kind::NATIVE:
19971998 is_deprecated = dd && dd->class_list .has (type.native_type ) && dd->class_list [type.native_type ].is_deprecated ;
1999+ new_value_type = " class" ;
19982000 break ;
19992001 case GDScriptParser::DataType::Kind::SCRIPT: {
20002002 StringName class_name = type.script_type ->get_doc_class_name ();
20012003 is_deprecated = dd && dd->class_list .has (class_name) && dd->class_list [class_name].is_deprecated ;
2004+ new_value_type = " class" ;
20022005 break ;
20032006 }
20042007 case GDScriptParser::DataType::Kind::CLASS:
20052008 is_deprecated = type.class_type ->doc_data .is_deprecated ;
2009+ new_value_type = " class" ;
2010+
2011+ // TODO: Not recognizing the autoload name as a class type
2012+ // var my_var: MyAutoload # <--- not getting this name
2013+ if (type.class_type && type.class_type ->identifier ) {
2014+ value_name = type.class_type ->identifier ->name ;
2015+ } else {
2016+ value_name = " " ;
2017+ }
20062018 break ;
20072019 case GDScriptParser::DataType::Kind::ENUM: {
20082020 StringName enum_type = type.enum_type ; // Something like MyEnum.
@@ -2015,13 +2027,14 @@ void GDScriptAnalyzer::resolve_assignable(GDScriptParser::AssignableNode *p_assi
20152027 is_deprecated = class_doc.enums [enum_type].is_deprecated ;
20162028 }
20172029 }
2030+ new_value_type = " enum" ;
20182031 break ;
20192032 }
20202033 default :
20212034 break ;
20222035 }
20232036 if (is_deprecated) {
2024- parser->push_warning (p_assignable, GDScriptWarning::DEPRECATED_IDENTIFIER);
2037+ parser->push_warning (p_assignable, GDScriptWarning::DEPRECATED_IDENTIFIER, new_value_type, value_name );
20252038 }
20262039#endif
20272040
@@ -4055,7 +4068,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
40554068 for (const DocData::ConstantDoc &doc : dd->class_list [class_name].constants ) {
40564069 if (doc.enumeration == base.enum_type && doc.name == name) {
40574070 if (doc.is_deprecated ) {
4058- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4071+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " enum value " , vformat ( " %s.%s " , base. enum_type , doc. name ) );
40594072 }
40604073 break ;
40614074 }
@@ -4209,7 +4222,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
42094222 p_identifier->constant_source = member.constant ;
42104223#if DEBUG_ENABLED
42114224 if (member.constant ->doc_data .is_deprecated ) {
4212- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4225+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " constant " , name );
42134226 }
42144227#endif
42154228 return ;
@@ -4222,7 +4235,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
42224235 p_identifier->source = GDScriptParser::IdentifierNode::MEMBER_CONSTANT;
42234236#if DEBUG_ENABLED
42244237 if (member.enum_value .doc_data .is_deprecated ) {
4225- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4238+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " enum value " , name );
42264239 }
42274240#endif
42284241 return ;
@@ -4235,7 +4248,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
42354248 p_identifier->source = GDScriptParser::IdentifierNode::MEMBER_CONSTANT;
42364249#if DEBUG_ENABLED
42374250 if (member.m_enum ->doc_data .is_deprecated ) {
4238- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4251+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " enum " , name );
42394252 }
42404253#endif
42414254 return ;
@@ -4249,7 +4262,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
42494262 member.variable ->usages += 1 ;
42504263#if DEBUG_ENABLED
42514264 if (member.variable ->doc_data .is_deprecated ) {
4252- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4265+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " property or variable " , name );
42534266 }
42544267#endif
42554268 return ;
@@ -4265,7 +4278,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
42654278
42664279#if DEBUG_ENABLED
42674280 if (member.signal ->doc_data .is_deprecated ) {
4268- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4281+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " signal " , name );
42694282 }
42704283#endif
42714284 return ;
@@ -4287,7 +4300,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
42874300 p_identifier->source = GDScriptParser::IdentifierNode::MEMBER_CLASS;
42884301#ifdef DEBUG_ENABLED
42894302 if (script_class->get_member (name).m_class ->doc_data .is_deprecated ) {
4290- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4303+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " class " , name );
42914304 }
42924305#endif
42934306 return ;
@@ -4385,7 +4398,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
43854398 for (const DocData::PropertyDoc &doc : dd->class_list [native].properties ) {
43864399 if (doc.name == name) {
43874400 if (doc.is_deprecated ) {
4388- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4401+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " property " , name );
43894402 }
43904403 break ;
43914404 }
@@ -4410,7 +4423,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
44104423 for (const DocData::MethodDoc &doc : dd->class_list [native].signals ) {
44114424 if (doc.name == name) {
44124425 if (doc.is_deprecated ) {
4413- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4426+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " signal " , name );
44144427 }
44154428 break ;
44164429 }
@@ -4427,7 +4440,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
44274440 if (dd && dd->class_list .has (native) && dd->class_list [native].enums .has (name)) {
44284441 DocData::EnumDoc doc = dd->class_list [native].enums [name];
44294442 if (doc.is_deprecated ) {
4430- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4443+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " enum " , name );
44314444 }
44324445 }
44334446#endif
@@ -4447,7 +4460,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
44474460 for (const DocData::ConstantDoc &doc : dd->class_list [native].constants ) {
44484461 if (doc.name == name) {
44494462 if (doc.is_deprecated ) {
4450- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4463+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " constant " , name );
44514464 }
44524465 break ;
44534466 }
@@ -4510,7 +4523,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
45104523
45114524#ifdef DEBUG_ENABLED
45124525 if (p_identifier->constant_source ->doc_data .is_deprecated ) {
4513- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4526+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " constant " , p_identifier-> name );
45144527 }
45154528#endif
45164529 break ;
@@ -4534,7 +4547,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
45344547 }
45354548
45364549 if (p_identifier->variable_source ->doc_data .is_deprecated ) {
4537- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4550+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " property or variable " , p_identifier-> name );
45384551 }
45394552#endif
45404553 break ;
@@ -4657,7 +4670,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
46574670 DocTools *dd = EditorHelp::get_doc_data ();
46584671 if (dd && dd->class_list .has (name)) {
46594672 if (dd->class_list [name].is_deprecated ) {
4660- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4673+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " class " , name );
46614674 }
46624675 }
46634676#endif
@@ -4671,7 +4684,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
46714684 DocTools *dd = EditorHelp::get_doc_data ();
46724685 if (dd && dd->class_list .has (name)) {
46734686 if (dd->class_list [name].is_deprecated ) {
4674- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4687+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " class " , name );
46754688 }
46764689 }
46774690#endif
@@ -4719,7 +4732,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
47194732 DocTools *dd = EditorHelp::get_doc_data ();
47204733 if (dd && dd->class_list .has (name)) {
47214734 if (dd->class_list [name].is_deprecated ) {
4722- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4735+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " class " , name );
47234736 }
47244737 }
47254738#endif
@@ -4746,7 +4759,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
47464759 if (dd && dd->class_list .has (" @GlobalScope" )) {
47474760 for (const DocData::ConstantDoc &cd : dd->class_list [" @GlobalScope" ].constants ) {
47484761 if (cd.name == name && cd.is_deprecated ) {
4749- parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER);
4762+ parser->push_warning (p_identifier, GDScriptWarning::DEPRECATED_IDENTIFIER, " constant " , name );
47504763 }
47514764 }
47524765 }
@@ -5947,7 +5960,7 @@ bool GDScriptAnalyzer::get_function_signature(GDScriptParser::Node *p_source, bo
59475960 // For user-defined methods.
59485961#ifdef DEBUG_ENABLED
59495962 if (found_function->doc_data .is_deprecated ) {
5950- parser->push_warning (p_source, GDScriptWarning::DEPRECATED_IDENTIFIER);
5963+ parser->push_warning (p_source, GDScriptWarning::DEPRECATED_IDENTIFIER, " function " , found_function-> identifier -> name );
59515964 }
59525965#endif
59535966 return true ;
@@ -5999,7 +6012,7 @@ bool GDScriptAnalyzer::get_function_signature(GDScriptParser::Node *p_source, bo
59996012 auto method_list = dd->class_list [base_native].methods ;
60006013 for (int i = 0 ; i < method_list.size (); i++) {
60016014 if (method_list[i].name == function_name && method_list[i].is_deprecated ) {
6002- parser->push_warning (p_source, GDScriptWarning::DEPRECATED_IDENTIFIER);
6015+ parser->push_warning (p_source, GDScriptWarning::DEPRECATED_IDENTIFIER, " function " , function_name );
60036016 break ;
60046017 }
60056018 }
0 commit comments