mirror of
https://github.com/godotengine/godot.git
synced 2024-11-27 09:16:35 +08:00
Make it a build error if a GetTypeInfo specialization cannot be resolved
Previously it was a runtime error message.
This commit is contained in:
parent
4379395892
commit
2c85439da0
@ -83,15 +83,13 @@ enum Metadata {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the compiler fails because it's trying to instantiate the primary 'GetTypeInfo' template
|
||||||
|
// instead of one of the specializations, it's most likely because the type 'T' is not supported.
|
||||||
|
// If 'T' is a class that inherits 'Object', make sure it can see the actual class declaration
|
||||||
|
// instead of a forward declaration. You can always forward declare 'T' in a header file, and then
|
||||||
|
// include the actual declaration of 'T' in the source file where 'GetTypeInfo<T>' is instantiated.
|
||||||
template <class T, typename = void>
|
template <class T, typename = void>
|
||||||
struct GetTypeInfo {
|
struct GetTypeInfo;
|
||||||
static const Variant::Type VARIANT_TYPE = Variant::NIL;
|
|
||||||
static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE;
|
|
||||||
static inline PropertyInfo get_class_info() {
|
|
||||||
ERR_PRINT("GetTypeInfo fallback. Bug!");
|
|
||||||
return PropertyInfo(); // Not "Nil", this is an error
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#define MAKE_TYPE_INFO(m_type, m_var_type) \
|
#define MAKE_TYPE_INFO(m_type, m_var_type) \
|
||||||
template <> \
|
template <> \
|
||||||
@ -283,10 +281,7 @@ inline StringName __constant_get_enum_name(T param, const String &p_constant) {
|
|||||||
return GetTypeInfo<T>::get_class_info().class_name;
|
return GetTypeInfo<T>::get_class_info().class_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CLASS_INFO(m_type) \
|
#define CLASS_INFO(m_type) (GetTypeInfo<m_type *>::get_class_info())
|
||||||
(GetTypeInfo<m_type *>::VARIANT_TYPE != Variant::NIL ? \
|
|
||||||
GetTypeInfo<m_type *>::get_class_info() : \
|
|
||||||
GetTypeInfo<m_type>::get_class_info())
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user