AddComponent() now throws a crash message when the comp type arg is not a component. (#76221)

## About The Pull Request
HEY! Did you know that the AddComponent() proc can complete without
throwing errors when the component type argument is actually not a type
or instance of a component? Me neither (until now), but I've recently
discovered that while working on #76219 (Make sure to merge that one
first).

Also adds early return checks to the AddElement and RemoveElement procs.

## Why It's Good For The Game
Silent bugs are awful.

## Changelog
N/A
This commit is contained in:
Ghom
2023-07-01 20:21:07 +02:00
committed by GitHub
parent 920ba8edf6
commit b82567ebd3
2 changed files with 15 additions and 8 deletions
+11 -8
View File
@@ -317,6 +317,17 @@
if(QDELING(src))
CRASH("Attempted to add a new component of type \[[component_type]\] to a qdeleting parent of type \[[type]\]!")
var/datum/component/new_component
if(!ispath(component_type, /datum/component))
if(!istype(component_type, /datum/component))
CRASH("Attempted to instantiate \[[component_type]\] as a component added to parent of type \[[type]\]!")
else
new_component = component_type
component_type = new_component.type
else if(component_type == /datum/component)
CRASH("[component_type] attempted instantiation!")
var/dupe_mode = initial(component_type.dupe_mode)
var/dupe_type = initial(component_type.dupe_type)
var/uses_sources = (dupe_mode == COMPONENT_DUPE_SOURCES)
@@ -326,14 +337,6 @@
CRASH("Attempted to add a normal component of type '[component_type]' to '[type]' with a source!")
var/datum/component/old_component
var/datum/component/new_component
if(ispath(component_type))
if(component_type == /datum/component)
CRASH("[component_type] attempted instantiation!")
else
new_component = component_type
component_type = new_component.type
raw_args[1] = src
if(dupe_mode != COMPONENT_DUPE_ALLOWED && dupe_mode != COMPONENT_DUPE_SELECTIVE)