Sfoglia il codice sorgente

Throw error when trying to emit a non-existing signal.

closes #6017

(cherry picked from commit 276087e92dd707d990565a373ab9f51a3a52ef2d)
Andreas Haas 9 anni fa
parent
commit
5adb75c2e7
1 ha cambiato i file con 9 aggiunte e 0 eliminazioni
  1. 9 0
      core/object.cpp

+ 9 - 0
core/object.cpp

@@ -1152,6 +1152,15 @@ void Object::emit_signal(const StringName& p_name,const Variant** p_args,int p_a
 
 	Signal *s = signal_map.getptr(p_name);
 	if (!s) {
+#ifdef DEBUG_ENABLED
+		bool signal_is_valid = ObjectTypeDB::has_signal(get_type_name(),p_name);
+		//check in script
+		if (!signal_is_valid && !script.is_null() && !Ref<Script>(script)->has_script_signal(p_name)) {
+			ERR_EXPLAIN("Can't emit non-existing signal " + String("\"")+p_name+"\".");
+			ERR_FAIL();
+		}
+#endif
+		//not connected? just return
 		return;
 	}