Browse Source

Allow comparing equality between builtin types and null

George Marques 3 years ago
parent
commit
455e142d37
42 changed files with 1164 additions and 6 deletions
  1. 136 0
      core/variant/variant_op.cpp
  2. 10 0
      doc/classes/AABB.xml
  3. 10 0
      doc/classes/Array.xml
  4. 10 0
      doc/classes/Basis.xml
  5. 10 0
      doc/classes/Callable.xml
  6. 10 0
      doc/classes/Color.xml
  7. 10 0
      doc/classes/Dictionary.xml
  8. 10 0
      doc/classes/NodePath.xml
  9. 10 0
      doc/classes/PackedByteArray.xml
  10. 10 0
      doc/classes/PackedColorArray.xml
  11. 10 0
      doc/classes/PackedFloat32Array.xml
  12. 10 0
      doc/classes/PackedFloat64Array.xml
  13. 10 0
      doc/classes/PackedInt32Array.xml
  14. 10 0
      doc/classes/PackedInt64Array.xml
  15. 10 0
      doc/classes/PackedStringArray.xml
  16. 10 0
      doc/classes/PackedVector2Array.xml
  17. 10 0
      doc/classes/PackedVector3Array.xml
  18. 10 0
      doc/classes/Plane.xml
  19. 10 0
      doc/classes/Quaternion.xml
  20. 10 0
      doc/classes/RID.xml
  21. 10 0
      doc/classes/Rect2.xml
  22. 10 0
      doc/classes/Rect2i.xml
  23. 10 0
      doc/classes/Signal.xml
  24. 10 0
      doc/classes/String.xml
  25. 10 0
      doc/classes/StringName.xml
  26. 10 0
      doc/classes/Transform2D.xml
  27. 10 0
      doc/classes/Transform3D.xml
  28. 10 0
      doc/classes/Vector2.xml
  29. 10 0
      doc/classes/Vector2i.xml
  30. 10 0
      doc/classes/Vector3.xml
  31. 10 0
      doc/classes/Vector3i.xml
  32. 10 0
      doc/classes/bool.xml
  33. 10 0
      doc/classes/float.xml
  34. 16 6
      doc/classes/int.xml
  35. 138 0
      modules/gdscript/tests/scripts/runtime/features/compare-builtin-equals-null.gd
  36. 35 0
      modules/gdscript/tests/scripts/runtime/features/compare-builtin-equals-null.out
  37. 138 0
      modules/gdscript/tests/scripts/runtime/features/compare-builtin-not-equals-null.gd
  38. 35 0
      modules/gdscript/tests/scripts/runtime/features/compare-builtin-not-equals-null.out
  39. 138 0
      modules/gdscript/tests/scripts/runtime/features/compare-null-equals-builtin.gd
  40. 35 0
      modules/gdscript/tests/scripts/runtime/features/compare-null-equals-builtin.out
  41. 138 0
      modules/gdscript/tests/scripts/runtime/features/compare-null-not-equals-builtin.gd
  42. 35 0
      modules/gdscript/tests/scripts/runtime/features/compare-null-not-equals-builtin.out

+ 136 - 0
core/variant/variant_op.cpp

@@ -314,6 +314,74 @@ void Variant::_register_variant_operators() {
 	register_op<OperatorEvaluatorEqual<PackedVector3Array, PackedVector3Array>>(Variant::OP_EQUAL, Variant::PACKED_VECTOR3_ARRAY, Variant::PACKED_VECTOR3_ARRAY);
 	register_op<OperatorEvaluatorEqual<PackedVector3Array, PackedVector3Array>>(Variant::OP_EQUAL, Variant::PACKED_VECTOR3_ARRAY, Variant::PACKED_VECTOR3_ARRAY);
 	register_op<OperatorEvaluatorEqual<PackedColorArray, PackedColorArray>>(Variant::OP_EQUAL, Variant::PACKED_COLOR_ARRAY, Variant::PACKED_COLOR_ARRAY);
 	register_op<OperatorEvaluatorEqual<PackedColorArray, PackedColorArray>>(Variant::OP_EQUAL, Variant::PACKED_COLOR_ARRAY, Variant::PACKED_COLOR_ARRAY);
 
 
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::BOOL, Variant::NIL>>(Variant::OP_EQUAL, Variant::BOOL, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::INT, Variant::NIL>>(Variant::OP_EQUAL, Variant::INT, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::FLOAT, Variant::NIL>>(Variant::OP_EQUAL, Variant::FLOAT, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::STRING, Variant::NIL>>(Variant::OP_EQUAL, Variant::STRING, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::VECTOR2, Variant::NIL>>(Variant::OP_EQUAL, Variant::VECTOR2, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::VECTOR2I, Variant::NIL>>(Variant::OP_EQUAL, Variant::VECTOR2I, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::RECT2, Variant::NIL>>(Variant::OP_EQUAL, Variant::RECT2, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::RECT2I, Variant::NIL>>(Variant::OP_EQUAL, Variant::RECT2I, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::VECTOR3, Variant::NIL>>(Variant::OP_EQUAL, Variant::VECTOR3, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::VECTOR3I, Variant::NIL>>(Variant::OP_EQUAL, Variant::VECTOR3I, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::TRANSFORM2D, Variant::NIL>>(Variant::OP_EQUAL, Variant::TRANSFORM2D, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::PLANE, Variant::NIL>>(Variant::OP_EQUAL, Variant::PLANE, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::QUATERNION, Variant::NIL>>(Variant::OP_EQUAL, Variant::QUATERNION, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::AABB, Variant::NIL>>(Variant::OP_EQUAL, Variant::AABB, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::BASIS, Variant::NIL>>(Variant::OP_EQUAL, Variant::BASIS, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::TRANSFORM3D, Variant::NIL>>(Variant::OP_EQUAL, Variant::TRANSFORM3D, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::COLOR, Variant::NIL>>(Variant::OP_EQUAL, Variant::COLOR, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::STRING_NAME, Variant::NIL>>(Variant::OP_EQUAL, Variant::STRING_NAME, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NODE_PATH, Variant::NIL>>(Variant::OP_EQUAL, Variant::NODE_PATH, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::RID, Variant::NIL>>(Variant::OP_EQUAL, Variant::RID, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::CALLABLE, Variant::NIL>>(Variant::OP_EQUAL, Variant::CALLABLE, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::SIGNAL, Variant::NIL>>(Variant::OP_EQUAL, Variant::SIGNAL, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::DICTIONARY, Variant::NIL>>(Variant::OP_EQUAL, Variant::DICTIONARY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::ARRAY, Variant::NIL>>(Variant::OP_EQUAL, Variant::ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::PACKED_BYTE_ARRAY, Variant::NIL>>(Variant::OP_EQUAL, Variant::PACKED_BYTE_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::PACKED_INT32_ARRAY, Variant::NIL>>(Variant::OP_EQUAL, Variant::PACKED_INT32_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::PACKED_INT64_ARRAY, Variant::NIL>>(Variant::OP_EQUAL, Variant::PACKED_INT64_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::PACKED_FLOAT32_ARRAY, Variant::NIL>>(Variant::OP_EQUAL, Variant::PACKED_FLOAT32_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::PACKED_FLOAT64_ARRAY, Variant::NIL>>(Variant::OP_EQUAL, Variant::PACKED_FLOAT64_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::PACKED_STRING_ARRAY, Variant::NIL>>(Variant::OP_EQUAL, Variant::PACKED_STRING_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::PACKED_VECTOR2_ARRAY, Variant::NIL>>(Variant::OP_EQUAL, Variant::PACKED_VECTOR2_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::PACKED_VECTOR3_ARRAY, Variant::NIL>>(Variant::OP_EQUAL, Variant::PACKED_VECTOR3_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::PACKED_COLOR_ARRAY, Variant::NIL>>(Variant::OP_EQUAL, Variant::PACKED_COLOR_ARRAY, Variant::NIL);
+
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::BOOL>>(Variant::OP_EQUAL, Variant::NIL, Variant::BOOL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::INT>>(Variant::OP_EQUAL, Variant::NIL, Variant::INT);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::FLOAT>>(Variant::OP_EQUAL, Variant::NIL, Variant::FLOAT);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::STRING>>(Variant::OP_EQUAL, Variant::NIL, Variant::STRING);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::VECTOR2>>(Variant::OP_EQUAL, Variant::NIL, Variant::VECTOR2);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::VECTOR2I>>(Variant::OP_EQUAL, Variant::NIL, Variant::VECTOR2I);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::RECT2>>(Variant::OP_EQUAL, Variant::NIL, Variant::RECT2);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::RECT2I>>(Variant::OP_EQUAL, Variant::NIL, Variant::RECT2I);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::VECTOR3>>(Variant::OP_EQUAL, Variant::NIL, Variant::VECTOR3);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::VECTOR3I>>(Variant::OP_EQUAL, Variant::NIL, Variant::VECTOR3I);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::TRANSFORM2D>>(Variant::OP_EQUAL, Variant::NIL, Variant::TRANSFORM2D);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::PLANE>>(Variant::OP_EQUAL, Variant::NIL, Variant::PLANE);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::QUATERNION>>(Variant::OP_EQUAL, Variant::NIL, Variant::QUATERNION);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::AABB>>(Variant::OP_EQUAL, Variant::NIL, Variant::AABB);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::BASIS>>(Variant::OP_EQUAL, Variant::NIL, Variant::BASIS);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::TRANSFORM3D>>(Variant::OP_EQUAL, Variant::NIL, Variant::TRANSFORM3D);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::COLOR>>(Variant::OP_EQUAL, Variant::NIL, Variant::COLOR);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::STRING_NAME>>(Variant::OP_EQUAL, Variant::NIL, Variant::STRING_NAME);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::NODE_PATH>>(Variant::OP_EQUAL, Variant::NIL, Variant::NODE_PATH);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::RID>>(Variant::OP_EQUAL, Variant::NIL, Variant::RID);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::CALLABLE>>(Variant::OP_EQUAL, Variant::NIL, Variant::CALLABLE);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::SIGNAL>>(Variant::OP_EQUAL, Variant::NIL, Variant::SIGNAL);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::DICTIONARY>>(Variant::OP_EQUAL, Variant::NIL, Variant::DICTIONARY);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::ARRAY>>(Variant::OP_EQUAL, Variant::NIL, Variant::ARRAY);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_BYTE_ARRAY>>(Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_BYTE_ARRAY);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_INT32_ARRAY>>(Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_INT32_ARRAY);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_INT64_ARRAY>>(Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_INT64_ARRAY);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_FLOAT32_ARRAY>>(Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_FLOAT32_ARRAY);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_FLOAT64_ARRAY>>(Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_FLOAT64_ARRAY);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_STRING_ARRAY>>(Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_STRING_ARRAY);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_VECTOR2_ARRAY>>(Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_VECTOR2_ARRAY);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_VECTOR3_ARRAY>>(Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_VECTOR3_ARRAY);
+	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_COLOR_ARRAY>>(Variant::OP_EQUAL, Variant::NIL, Variant::PACKED_COLOR_ARRAY);
+
 	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::NIL);
 	register_op<OperatorEvaluatorAlwaysFalse<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::NIL);
 	register_op<OperatorEvaluatorNotEqual<bool, bool>>(Variant::OP_NOT_EQUAL, Variant::BOOL, Variant::BOOL);
 	register_op<OperatorEvaluatorNotEqual<bool, bool>>(Variant::OP_NOT_EQUAL, Variant::BOOL, Variant::BOOL);
 	register_op<OperatorEvaluatorNotEqual<int64_t, int64_t>>(Variant::OP_NOT_EQUAL, Variant::INT, Variant::INT);
 	register_op<OperatorEvaluatorNotEqual<int64_t, int64_t>>(Variant::OP_NOT_EQUAL, Variant::INT, Variant::INT);
@@ -360,6 +428,74 @@ void Variant::_register_variant_operators() {
 	register_op<OperatorEvaluatorNotEqual<PackedVector3Array, PackedVector3Array>>(Variant::OP_NOT_EQUAL, Variant::PACKED_VECTOR3_ARRAY, Variant::PACKED_VECTOR3_ARRAY);
 	register_op<OperatorEvaluatorNotEqual<PackedVector3Array, PackedVector3Array>>(Variant::OP_NOT_EQUAL, Variant::PACKED_VECTOR3_ARRAY, Variant::PACKED_VECTOR3_ARRAY);
 	register_op<OperatorEvaluatorNotEqual<PackedColorArray, PackedColorArray>>(Variant::OP_NOT_EQUAL, Variant::PACKED_COLOR_ARRAY, Variant::PACKED_COLOR_ARRAY);
 	register_op<OperatorEvaluatorNotEqual<PackedColorArray, PackedColorArray>>(Variant::OP_NOT_EQUAL, Variant::PACKED_COLOR_ARRAY, Variant::PACKED_COLOR_ARRAY);
 
 
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::BOOL, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::BOOL, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::INT, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::INT, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::FLOAT, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::FLOAT, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::STRING, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::STRING, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::VECTOR2, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::VECTOR2, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::VECTOR2I, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::VECTOR2I, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::RECT2, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::RECT2, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::RECT2I, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::RECT2I, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::VECTOR3, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::VECTOR3, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::VECTOR3I, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::VECTOR3I, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::TRANSFORM2D, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::TRANSFORM2D, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::PLANE, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::PLANE, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::QUATERNION, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::QUATERNION, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::AABB, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::AABB, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::BASIS, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::BASIS, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::TRANSFORM3D, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::TRANSFORM3D, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::COLOR, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::COLOR, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::STRING_NAME, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::STRING_NAME, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NODE_PATH, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::NODE_PATH, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::RID, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::RID, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::CALLABLE, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::CALLABLE, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::SIGNAL, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::SIGNAL, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::DICTIONARY, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::DICTIONARY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::ARRAY, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::PACKED_BYTE_ARRAY, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::PACKED_BYTE_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::PACKED_INT32_ARRAY, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::PACKED_INT32_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::PACKED_INT64_ARRAY, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::PACKED_INT64_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::PACKED_FLOAT32_ARRAY, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::PACKED_FLOAT32_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::PACKED_FLOAT64_ARRAY, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::PACKED_FLOAT64_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::PACKED_STRING_ARRAY, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::PACKED_STRING_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::PACKED_VECTOR2_ARRAY, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::PACKED_VECTOR2_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::PACKED_VECTOR3_ARRAY, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::PACKED_VECTOR3_ARRAY, Variant::NIL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::PACKED_COLOR_ARRAY, Variant::NIL>>(Variant::OP_NOT_EQUAL, Variant::PACKED_COLOR_ARRAY, Variant::NIL);
+
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::BOOL>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::BOOL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::INT>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::INT);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::FLOAT>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::FLOAT);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::STRING>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::STRING);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::VECTOR2>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::VECTOR2);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::VECTOR2I>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::VECTOR2I);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::RECT2>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::RECT2);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::RECT2I>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::RECT2I);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::VECTOR3>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::VECTOR3);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::VECTOR3I>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::VECTOR3I);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::TRANSFORM2D>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::TRANSFORM2D);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PLANE>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PLANE);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::QUATERNION>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::QUATERNION);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::AABB>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::AABB);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::BASIS>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::BASIS);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::TRANSFORM3D>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::TRANSFORM3D);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::COLOR>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::COLOR);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::STRING_NAME>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::STRING_NAME);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::NODE_PATH>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::NODE_PATH);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::RID>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::RID);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::CALLABLE>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::CALLABLE);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::SIGNAL>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::SIGNAL);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::DICTIONARY>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::DICTIONARY);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::ARRAY>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::ARRAY);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_BYTE_ARRAY>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_BYTE_ARRAY);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_INT32_ARRAY>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_INT32_ARRAY);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_INT64_ARRAY>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_INT64_ARRAY);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_FLOAT32_ARRAY>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_FLOAT32_ARRAY);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_FLOAT64_ARRAY>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_FLOAT64_ARRAY);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_STRING_ARRAY>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_STRING_ARRAY);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_VECTOR2_ARRAY>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_VECTOR2_ARRAY);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_VECTOR3_ARRAY>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_VECTOR3_ARRAY);
+	register_op<OperatorEvaluatorAlwaysTrue<Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_COLOR_ARRAY>>(Variant::OP_NOT_EQUAL, Variant::NIL, Variant::PACKED_COLOR_ARRAY);
+
 	register_op<OperatorEvaluatorLess<bool, bool>>(Variant::OP_LESS, Variant::BOOL, Variant::BOOL);
 	register_op<OperatorEvaluatorLess<bool, bool>>(Variant::OP_LESS, Variant::BOOL, Variant::BOOL);
 	register_op<OperatorEvaluatorLess<int64_t, int64_t>>(Variant::OP_LESS, Variant::INT, Variant::INT);
 	register_op<OperatorEvaluatorLess<int64_t, int64_t>>(Variant::OP_LESS, Variant::INT, Variant::INT);
 	register_op<OperatorEvaluatorLess<int64_t, double>>(Variant::OP_LESS, Variant::INT, Variant::FLOAT);
 	register_op<OperatorEvaluatorLess<int64_t, double>>(Variant::OP_LESS, Variant::INT, Variant::FLOAT);

+ 10 - 0
doc/classes/AABB.xml

@@ -187,6 +187,11 @@
 				Returns a larger [AABB] that contains both this [AABB] and [code]with[/code].
 				Returns a larger [AABB] that contains both this [AABB] and [code]with[/code].
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="AABB" />
 			<argument index="0" name="right" type="AABB" />
@@ -199,6 +204,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="AABB" />
 			<argument index="0" name="right" type="AABB" />

+ 10 - 0
doc/classes/Array.xml

@@ -345,6 +345,11 @@
 				Returns the minimum value contained in the array if all elements are of comparable types. If the elements can't be compared, [code]null[/code] is returned.
 				Returns the minimum value contained in the array if all elements are of comparable types. If the elements can't be compared, [code]null[/code] is returned.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Array" />
 			<argument index="0" name="right" type="Array" />
@@ -369,6 +374,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Array" />
 			<argument index="0" name="right" type="Array" />

+ 10 - 0
doc/classes/Basis.xml

@@ -118,6 +118,11 @@
 				The up axis (+Y) points as close to the [code]up[/code] vector as possible while staying perpendicular to the forward axis. The resulting Basis is orthonormalized. The [code]target[/code] and [code]up[/code] vectors cannot be zero, and cannot be parallel to each other.
 				The up axis (+Y) points as close to the [code]up[/code] vector as possible while staying perpendicular to the forward axis. The resulting Basis is orthonormalized. The [code]target[/code] and [code]up[/code] vectors cannot be zero, and cannot be parallel to each other.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Basis" />
 			<argument index="0" name="right" type="Basis" />
@@ -150,6 +155,11 @@
 				This operator multiplies all components of the [Basis], which scales it uniformly.
 				This operator multiplies all components of the [Basis], which scales it uniformly.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Basis" />
 			<argument index="0" name="right" type="Basis" />

+ 10 - 0
doc/classes/Callable.xml

@@ -123,6 +123,11 @@
 				Returns [code]true[/code] if the object exists and has a valid function assigned, or is a custom callable.
 				Returns [code]true[/code] if the object exists and has a valid function assigned, or is a custom callable.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Callable" />
 			<argument index="0" name="right" type="Callable" />
@@ -130,6 +135,11 @@
 				Returns [code]true[/code] if both [Callable]s invoke different targets.
 				Returns [code]true[/code] if both [Callable]s invoke different targets.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Callable" />
 			<argument index="0" name="right" type="Callable" />

+ 10 - 0
doc/classes/Color.xml

@@ -259,6 +259,11 @@
 				[/codeblocks]
 				[/codeblocks]
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Color" />
 			<argument index="0" name="right" type="Color" />
@@ -313,6 +318,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Color" />
 			<argument index="0" name="right" type="Color" />

+ 10 - 0
doc/classes/Dictionary.xml

@@ -288,12 +288,22 @@
 				Returns the list of keys in the [Dictionary].
 				Returns the list of keys in the [Dictionary].
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Dictionary" />
 			<argument index="0" name="right" type="Dictionary" />
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Dictionary" />
 			<argument index="0" name="right" type="Dictionary" />

+ 10 - 0
doc/classes/NodePath.xml

@@ -166,12 +166,22 @@
 				Returns [code]true[/code] if the node path is empty.
 				Returns [code]true[/code] if the node path is empty.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="NodePath" />
 			<argument index="0" name="right" type="NodePath" />
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="NodePath" />
 			<argument index="0" name="right" type="NodePath" />

+ 10 - 0
doc/classes/PackedByteArray.xml

@@ -314,6 +314,11 @@
 				Returns [code]true[/code] if the array is empty.
 				Returns [code]true[/code] if the array is empty.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedByteArray" />
 			<argument index="0" name="right" type="PackedByteArray" />
@@ -326,6 +331,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedByteArray" />
 			<argument index="0" name="right" type="PackedByteArray" />

+ 10 - 0
doc/classes/PackedColorArray.xml

@@ -77,6 +77,11 @@
 				Returns [code]true[/code] if the array is empty.
 				Returns [code]true[/code] if the array is empty.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedColorArray" />
 			<argument index="0" name="right" type="PackedColorArray" />
@@ -89,6 +94,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedColorArray" />
 			<argument index="0" name="right" type="PackedColorArray" />

+ 10 - 0
doc/classes/PackedFloat32Array.xml

@@ -78,6 +78,11 @@
 				Returns [code]true[/code] if the array is empty.
 				Returns [code]true[/code] if the array is empty.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedFloat32Array" />
 			<argument index="0" name="right" type="PackedFloat32Array" />
@@ -90,6 +95,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedFloat32Array" />
 			<argument index="0" name="right" type="PackedFloat32Array" />

+ 10 - 0
doc/classes/PackedFloat64Array.xml

@@ -78,6 +78,11 @@
 				Returns [code]true[/code] if the array is empty.
 				Returns [code]true[/code] if the array is empty.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedFloat64Array" />
 			<argument index="0" name="right" type="PackedFloat64Array" />
@@ -90,6 +95,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedFloat64Array" />
 			<argument index="0" name="right" type="PackedFloat64Array" />

+ 10 - 0
doc/classes/PackedInt32Array.xml

@@ -78,6 +78,11 @@
 				Returns [code]true[/code] if the array is empty.
 				Returns [code]true[/code] if the array is empty.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedInt32Array" />
 			<argument index="0" name="right" type="PackedInt32Array" />
@@ -90,6 +95,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedInt32Array" />
 			<argument index="0" name="right" type="PackedInt32Array" />

+ 10 - 0
doc/classes/PackedInt64Array.xml

@@ -78,6 +78,11 @@
 				Returns [code]true[/code] if the array is empty.
 				Returns [code]true[/code] if the array is empty.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedInt64Array" />
 			<argument index="0" name="right" type="PackedInt64Array" />
@@ -90,6 +95,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedInt64Array" />
 			<argument index="0" name="right" type="PackedInt64Array" />

+ 10 - 0
doc/classes/PackedStringArray.xml

@@ -78,6 +78,11 @@
 				Returns [code]true[/code] if the array is empty.
 				Returns [code]true[/code] if the array is empty.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedStringArray" />
 			<argument index="0" name="right" type="PackedStringArray" />
@@ -90,6 +95,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedStringArray" />
 			<argument index="0" name="right" type="PackedStringArray" />

+ 10 - 0
doc/classes/PackedVector2Array.xml

@@ -78,6 +78,11 @@
 				Returns [code]true[/code] if the array is empty.
 				Returns [code]true[/code] if the array is empty.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedVector2Array" />
 			<argument index="0" name="right" type="PackedVector2Array" />
@@ -96,6 +101,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedVector2Array" />
 			<argument index="0" name="right" type="PackedVector2Array" />

+ 10 - 0
doc/classes/PackedVector3Array.xml

@@ -77,6 +77,11 @@
 				Returns [code]true[/code] if the array is empty.
 				Returns [code]true[/code] if the array is empty.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedVector3Array" />
 			<argument index="0" name="right" type="PackedVector3Array" />
@@ -95,6 +100,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="PackedVector3Array" />
 			<argument index="0" name="right" type="PackedVector3Array" />

+ 10 - 0
doc/classes/Plane.xml

@@ -123,12 +123,22 @@
 				Returns a copy of the plane, normalized.
 				Returns a copy of the plane, normalized.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Plane" />
 			<argument index="0" name="right" type="Plane" />
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Plane" />
 			<argument index="0" name="right" type="Plane" />

+ 10 - 0
doc/classes/Quaternion.xml

@@ -133,6 +133,11 @@
 				Returns a copy of the quaternion, normalized to unit length.
 				Returns a copy of the quaternion, normalized to unit length.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Quaternion" />
 			<argument index="0" name="right" type="Quaternion" />
@@ -187,6 +192,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Quaternion" />
 			<argument index="0" name="right" type="Quaternion" />

+ 10 - 0
doc/classes/RID.xml

@@ -28,6 +28,11 @@
 				Returns the ID of the referenced resource.
 				Returns the ID of the referenced resource.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="RID" />
 			<argument index="0" name="right" type="RID" />
@@ -46,6 +51,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="RID" />
 			<argument index="0" name="right" type="RID" />

+ 10 - 0
doc/classes/Rect2.xml

@@ -147,6 +147,11 @@
 				Returns a larger [Rect2] that contains this [Rect2] and [code]b[/code].
 				Returns a larger [Rect2] that contains this [Rect2] and [code]b[/code].
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Rect2" />
 			<argument index="0" name="right" type="Rect2" />
@@ -159,6 +164,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Rect2" />
 			<argument index="0" name="right" type="Rect2" />

+ 10 - 0
doc/classes/Rect2i.xml

@@ -137,12 +137,22 @@
 				Returns a larger [Rect2i] that contains this [Rect2i] and [code]b[/code].
 				Returns a larger [Rect2i] that contains this [Rect2i] and [code]b[/code].
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Rect2i" />
 			<argument index="0" name="right" type="Rect2i" />
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Rect2i" />
 			<argument index="0" name="right" type="Rect2i" />

+ 10 - 0
doc/classes/Signal.xml

@@ -87,12 +87,22 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Signal" />
 			<argument index="0" name="right" type="Signal" />
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Signal" />
 			<argument index="0" name="right" type="Signal" />

+ 10 - 0
doc/classes/String.xml

@@ -443,6 +443,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="String" />
 			<argument index="0" name="right" type="String" />
@@ -479,6 +484,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="String" />
 			<argument index="0" name="right" type="String" />

+ 10 - 0
doc/classes/StringName.xml

@@ -29,6 +29,11 @@
 				Creates a new [StringName] from the given [String].
 				Creates a new [StringName] from the given [String].
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="String" />
 			<argument index="0" name="right" type="String" />
@@ -41,6 +46,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="String" />
 			<argument index="0" name="right" type="String" />

+ 10 - 0
doc/classes/Transform2D.xml

@@ -113,6 +113,11 @@
 				Operations take place in global space.
 				Operations take place in global space.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Transform2D" />
 			<argument index="0" name="right" type="Transform2D" />
@@ -157,6 +162,11 @@
 				This operator multiplies all components of the [Transform2D], including the origin vector, which scales it uniformly.
 				This operator multiplies all components of the [Transform2D], including the origin vector, which scales it uniformly.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Transform2D" />
 			<argument index="0" name="right" type="Transform2D" />

+ 10 - 0
doc/classes/Transform3D.xml

@@ -83,6 +83,11 @@
 				The up axis (+Y) points as close to the [code]up[/code] vector as possible while staying perpendicular to the forward axis. The resulting transform is orthonormalized. The existing rotation, scale, and skew information from the original transform is discarded. The [code]target[/code] and [code]up[/code] vectors cannot be zero, cannot be parallel to each other, and are defined in global/parent space.
 				The up axis (+Y) points as close to the [code]up[/code] vector as possible while staying perpendicular to the forward axis. The resulting transform is orthonormalized. The existing rotation, scale, and skew information from the original transform is discarded. The [code]target[/code] and [code]up[/code] vectors cannot be zero, cannot be parallel to each other, and are defined in global/parent space.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Transform3D" />
 			<argument index="0" name="right" type="Transform3D" />
@@ -127,6 +132,11 @@
 				This operator multiplies all components of the [Transform3D], including the origin vector, which scales it uniformly.
 				This operator multiplies all components of the [Transform3D], including the origin vector, which scales it uniformly.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Transform3D" />
 			<argument index="0" name="right" type="Transform3D" />

+ 10 - 0
doc/classes/Vector2.xml

@@ -225,6 +225,11 @@
 				Returns the vector scaled to unit length. Equivalent to [code]v / v.length()[/code].
 				Returns the vector scaled to unit length. Equivalent to [code]v / v.length()[/code].
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Vector2" />
 			<argument index="0" name="right" type="Vector2" />
@@ -297,6 +302,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Vector2" />
 			<argument index="0" name="right" type="Vector2" />

+ 10 - 0
doc/classes/Vector2i.xml

@@ -62,6 +62,11 @@
 				Returns a new vector with all components clamped between the components of [code]min[/code] and [code]max[/code], by running [method @GlobalScope.clamp] on each component.
 				Returns a new vector with all components clamped between the components of [code]min[/code] and [code]max[/code], by running [method @GlobalScope.clamp] on each component.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Vector2i" />
 			<argument index="0" name="right" type="Vector2i" />
@@ -140,6 +145,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Vector2i" />
 			<argument index="0" name="right" type="Vector2i" />

+ 10 - 0
doc/classes/Vector3.xml

@@ -208,6 +208,11 @@
 				Returns the vector scaled to unit length. Equivalent to [code]v / v.length()[/code].
 				Returns the vector scaled to unit length. Equivalent to [code]v / v.length()[/code].
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Vector3" />
 			<argument index="0" name="right" type="Vector3" />
@@ -292,6 +297,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Vector3" />
 			<argument index="0" name="right" type="Vector3" />

+ 10 - 0
doc/classes/Vector3i.xml

@@ -68,6 +68,11 @@
 				Returns the axis of the vector's smallest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_Z].
 				Returns the axis of the vector's smallest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_Z].
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Vector3i" />
 			<argument index="0" name="right" type="Vector3i" />
@@ -146,6 +151,11 @@
 			<description>
 			<description>
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="Vector3i" />
 			<argument index="0" name="right" type="Vector3i" />

+ 10 - 0
doc/classes/bool.xml

@@ -119,6 +119,11 @@
 				Cast an [int] value to a boolean value, this method will return [code]false[/code] if [code]0[/code] is passed in, and [code]true[/code] for all other ints.
 				Cast an [int] value to a boolean value, this method will return [code]false[/code] if [code]0[/code] is passed in, and [code]true[/code] for all other ints.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="bool" />
 			<argument index="0" name="right" type="bool" />
@@ -133,6 +138,11 @@
 				Returns [code]true[/code] if left operand is [code]false[/code] and right operand is [code]true[/code].
 				Returns [code]true[/code] if left operand is [code]false[/code] and right operand is [code]true[/code].
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="bool" />
 			<argument index="0" name="right" type="bool" />

+ 10 - 0
doc/classes/float.xml

@@ -40,6 +40,11 @@
 				Cast an [int] value to a floating-point value, [code]float(1)[/code] will be equal to [code]1.0[/code].
 				Cast an [int] value to a floating-point value, [code]float(1)[/code] will be equal to [code]1.0[/code].
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="float" />
 			<argument index="0" name="right" type="float" />
@@ -189,6 +194,11 @@
 				Returns [code]true[/code] if this [float] is less than or equal to the given [int].
 				Returns [code]true[/code] if this [float] is less than or equal to the given [int].
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="float" />
 			<argument index="0" name="right" type="float" />

+ 16 - 6
doc/classes/int.xml

@@ -66,6 +66,11 @@
 				Cast a float value to an integer value, this method simply removes the number fractions (i.e. rounds [code]from[/code] towards zero), so for example [code]int(2.7)[/code] will be equals to 2, [code]int(0.1)[/code] will be equals to 0 and [code]int(-2.7)[/code] will be equals to -2. This operation is also called truncation.
 				Cast a float value to an integer value, this method simply removes the number fractions (i.e. rounds [code]from[/code] towards zero), so for example [code]int(2.7)[/code] will be equals to 2, [code]int(0.1)[/code] will be equals to 0 and [code]int(-2.7)[/code] will be equals to -2. This operation is also called truncation.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator !=" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator !=" qualifiers="operator">
 		<method name="operator !=" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="float" />
 			<argument index="0" name="right" type="float" />
@@ -173,17 +178,17 @@
 			</description>
 			</description>
 		</method>
 		</method>
 		<method name="operator +" qualifiers="operator">
 		<method name="operator +" qualifiers="operator">
-			<return type="float" />
-			<argument index="0" name="right" type="float" />
+			<return type="int" />
+			<argument index="0" name="right" type="int" />
 			<description>
 			<description>
-				Adds an [int] to a [float]. The result is a [float].
+				Adds two integers.
 			</description>
 			</description>
 		</method>
 		</method>
 		<method name="operator +" qualifiers="operator">
 		<method name="operator +" qualifiers="operator">
-			<return type="int" />
-			<argument index="0" name="right" type="int" />
+			<return type="float" />
+			<argument index="0" name="right" type="float" />
 			<description>
 			<description>
-				Adds two integers.
+				Adds an [int] to a [float]. The result is a [float].
 			</description>
 			</description>
 		</method>
 		</method>
 		<method name="operator -" qualifiers="operator">
 		<method name="operator -" qualifiers="operator">
@@ -260,6 +265,11 @@
 				Returns [code]true[/code] the left integer is less than or equal to the right one.
 				Returns [code]true[/code] the left integer is less than or equal to the right one.
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="operator ==" qualifiers="operator">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="operator ==" qualifiers="operator">
 		<method name="operator ==" qualifiers="operator">
 			<return type="bool" />
 			<return type="bool" />
 			<argument index="0" name="right" type="float" />
 			<argument index="0" name="right" type="float" />

+ 138 - 0
modules/gdscript/tests/scripts/runtime/features/compare-builtin-equals-null.gd

@@ -0,0 +1,138 @@
+func test():
+	var value
+
+	# null
+	value = null
+	print(value == null)
+
+	# bool
+	value = false
+	print(value == null)
+
+	# int
+	value = 0
+	print(value == null)
+
+	# float
+	value = 0.0
+	print(value == null)
+
+	# String
+	value = ""
+	print(value == null)
+
+	# Vector2
+	value = Vector2()
+	print(value == null)
+
+	# Vector2i
+	value = Vector2i()
+	print(value == null)
+
+	# Rect2
+	value = Rect2()
+	print(value == null)
+
+	# Rect2i
+	value = Rect2i()
+	print(value == null)
+
+	# Vector3
+	value = Vector3()
+	print(value == null)
+
+	# Vector3i
+	value = Vector3i()
+	print(value == null)
+
+	# Transform2D
+	value = Transform2D()
+	print(value == null)
+
+	# Plane
+	value = Plane()
+	print(value == null)
+
+	# Quaternion
+	value = Quaternion()
+	print(value == null)
+
+	# AABB
+	value = AABB()
+	print(value == null)
+
+	# Basis
+	value = Basis()
+	print(value == null)
+
+	# Transform3D
+	value = Transform3D()
+	print(value == null)
+
+	# Color
+	value = Color()
+	print(value == null)
+
+	# StringName
+	value = &""
+	print(value == null)
+
+	# NodePath
+	value = ^""
+	print(value == null)
+
+	# RID
+	value = RID()
+	print(value == null)
+
+	# Callable
+	value = Callable()
+	print(value == null)
+
+	# Signal
+	value = Signal()
+	print(value == null)
+
+	# Dictionary
+	value = {}
+	print(value == null)
+
+	# Array
+	value = []
+	print(value == null)
+
+	# PackedByteArray
+	value = PackedByteArray()
+	print(value == null)
+
+	# PackedInt32Array
+	value = PackedInt32Array()
+	print(value == null)
+
+	# PackedInt64Array
+	value = PackedInt64Array()
+	print(value == null)
+
+	# PackedFloat32Array
+	value = PackedFloat32Array()
+	print(value == null)
+
+	# PackedFloat64Array
+	value = PackedFloat64Array()
+	print(value == null)
+
+	# PackedStringArray
+	value = PackedStringArray()
+	print(value == null)
+
+	# PackedVector2Array
+	value = PackedVector2Array()
+	print(value == null)
+
+	# PackedVector3Array
+	value = PackedVector3Array()
+	print(value == null)
+
+	# PackedColorArray
+	value = PackedColorArray()
+	print(value == null)

+ 35 - 0
modules/gdscript/tests/scripts/runtime/features/compare-builtin-equals-null.out

@@ -0,0 +1,35 @@
+GDTEST_OK
+true
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false

+ 138 - 0
modules/gdscript/tests/scripts/runtime/features/compare-builtin-not-equals-null.gd

@@ -0,0 +1,138 @@
+func test():
+	var value
+
+	# null
+	value = null
+	print(value != null)
+
+	# bool
+	value = false
+	print(value != null)
+
+	# int
+	value = 0
+	print(value != null)
+
+	# float
+	value = 0.0
+	print(value != null)
+
+	# String
+	value = ""
+	print(value != null)
+
+	# Vector2
+	value = Vector2()
+	print(value != null)
+
+	# Vector2i
+	value = Vector2i()
+	print(value != null)
+
+	# Rect2
+	value = Rect2()
+	print(value != null)
+
+	# Rect2i
+	value = Rect2i()
+	print(value != null)
+
+	# Vector3
+	value = Vector3()
+	print(value != null)
+
+	# Vector3i
+	value = Vector3i()
+	print(value != null)
+
+	# Transform2D
+	value = Transform2D()
+	print(value != null)
+
+	# Plane
+	value = Plane()
+	print(value != null)
+
+	# Quaternion
+	value = Quaternion()
+	print(value != null)
+
+	# AABB
+	value = AABB()
+	print(value != null)
+
+	# Basis
+	value = Basis()
+	print(value != null)
+
+	# Transform3D
+	value = Transform3D()
+	print(value != null)
+
+	# Color
+	value = Color()
+	print(value != null)
+
+	# StringName
+	value = &""
+	print(value != null)
+
+	# NodePath
+	value = ^""
+	print(value != null)
+
+	# RID
+	value = RID()
+	print(value != null)
+
+	# Callable
+	value = Callable()
+	print(value != null)
+
+	# Signal
+	value = Signal()
+	print(value != null)
+
+	# Dictionary
+	value = {}
+	print(value != null)
+
+	# Array
+	value = []
+	print(value != null)
+
+	# PackedByteArray
+	value = PackedByteArray()
+	print(value != null)
+
+	# PackedInt32Array
+	value = PackedInt32Array()
+	print(value != null)
+
+	# PackedInt64Array
+	value = PackedInt64Array()
+	print(value != null)
+
+	# PackedFloat32Array
+	value = PackedFloat32Array()
+	print(value != null)
+
+	# PackedFloat64Array
+	value = PackedFloat64Array()
+	print(value != null)
+
+	# PackedStringArray
+	value = PackedStringArray()
+	print(value != null)
+
+	# PackedVector2Array
+	value = PackedVector2Array()
+	print(value != null)
+
+	# PackedVector3Array
+	value = PackedVector3Array()
+	print(value != null)
+
+	# PackedColorArray
+	value = PackedColorArray()
+	print(value != null)

+ 35 - 0
modules/gdscript/tests/scripts/runtime/features/compare-builtin-not-equals-null.out

@@ -0,0 +1,35 @@
+GDTEST_OK
+false
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true

+ 138 - 0
modules/gdscript/tests/scripts/runtime/features/compare-null-equals-builtin.gd

@@ -0,0 +1,138 @@
+func test():
+	var value
+
+	# null
+	value = null
+	print(null == value)
+
+	# bool
+	value = false
+	print(null == value)
+
+	# int
+	value = 0
+	print(null == value)
+
+	# float
+	value = 0.0
+	print(null == value)
+
+	# String
+	value = ""
+	print(null == value)
+
+	# Vector2
+	value = Vector2()
+	print(null == value)
+
+	# Vector2i
+	value = Vector2i()
+	print(null == value)
+
+	# Rect2
+	value = Rect2()
+	print(null == value)
+
+	# Rect2i
+	value = Rect2i()
+	print(null == value)
+
+	# Vector3
+	value = Vector3()
+	print(null == value)
+
+	# Vector3i
+	value = Vector3i()
+	print(null == value)
+
+	# Transform2D
+	value = Transform2D()
+	print(null == value)
+
+	# Plane
+	value = Plane()
+	print(null == value)
+
+	# Quaternion
+	value = Quaternion()
+	print(null == value)
+
+	# AABB
+	value = AABB()
+	print(null == value)
+
+	# Basis
+	value = Basis()
+	print(null == value)
+
+	# Transform3D
+	value = Transform3D()
+	print(null == value)
+
+	# Color
+	value = Color()
+	print(null == value)
+
+	# StringName
+	value = &""
+	print(null == value)
+
+	# NodePath
+	value = ^""
+	print(null == value)
+
+	# RID
+	value = RID()
+	print(null == value)
+
+	# Callable
+	value = Callable()
+	print(null == value)
+
+	# Signal
+	value = Signal()
+	print(null == value)
+
+	# Dictionary
+	value = {}
+	print(null == value)
+
+	# Array
+	value = []
+	print(null == value)
+
+	# PackedByteArray
+	value = PackedByteArray()
+	print(null == value)
+
+	# PackedInt32Array
+	value = PackedInt32Array()
+	print(null == value)
+
+	# PackedInt64Array
+	value = PackedInt64Array()
+	print(null == value)
+
+	# PackedFloat32Array
+	value = PackedFloat32Array()
+	print(null == value)
+
+	# PackedFloat64Array
+	value = PackedFloat64Array()
+	print(null == value)
+
+	# PackedStringArray
+	value = PackedStringArray()
+	print(null == value)
+
+	# PackedVector2Array
+	value = PackedVector2Array()
+	print(null == value)
+
+	# PackedVector3Array
+	value = PackedVector3Array()
+	print(null == value)
+
+	# PackedColorArray
+	value = PackedColorArray()
+	print(null == value)

+ 35 - 0
modules/gdscript/tests/scripts/runtime/features/compare-null-equals-builtin.out

@@ -0,0 +1,35 @@
+GDTEST_OK
+true
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false

+ 138 - 0
modules/gdscript/tests/scripts/runtime/features/compare-null-not-equals-builtin.gd

@@ -0,0 +1,138 @@
+func test():
+	var value
+
+	# null
+	value = null
+	print(null != value)
+
+	# bool
+	value = false
+	print(null != value)
+
+	# int
+	value = 0
+	print(null != value)
+
+	# float
+	value = 0.0
+	print(null != value)
+
+	# String
+	value = ""
+	print(null != value)
+
+	# Vector2
+	value = Vector2()
+	print(null != value)
+
+	# Vector2i
+	value = Vector2i()
+	print(null != value)
+
+	# Rect2
+	value = Rect2()
+	print(null != value)
+
+	# Rect2i
+	value = Rect2i()
+	print(null != value)
+
+	# Vector3
+	value = Vector3()
+	print(null != value)
+
+	# Vector3i
+	value = Vector3i()
+	print(null != value)
+
+	# Transform2D
+	value = Transform2D()
+	print(null != value)
+
+	# Plane
+	value = Plane()
+	print(null != value)
+
+	# Quaternion
+	value = Quaternion()
+	print(null != value)
+
+	# AABB
+	value = AABB()
+	print(null != value)
+
+	# Basis
+	value = Basis()
+	print(null != value)
+
+	# Transform3D
+	value = Transform3D()
+	print(null != value)
+
+	# Color
+	value = Color()
+	print(null != value)
+
+	# StringName
+	value = &""
+	print(null != value)
+
+	# NodePath
+	value = ^""
+	print(null != value)
+
+	# RID
+	value = RID()
+	print(null != value)
+
+	# Callable
+	value = Callable()
+	print(null != value)
+
+	# Signal
+	value = Signal()
+	print(null != value)
+
+	# Dictionary
+	value = {}
+	print(null != value)
+
+	# Array
+	value = []
+	print(null != value)
+
+	# PackedByteArray
+	value = PackedByteArray()
+	print(null != value)
+
+	# PackedInt32Array
+	value = PackedInt32Array()
+	print(null != value)
+
+	# PackedInt64Array
+	value = PackedInt64Array()
+	print(null != value)
+
+	# PackedFloat32Array
+	value = PackedFloat32Array()
+	print(null != value)
+
+	# PackedFloat64Array
+	value = PackedFloat64Array()
+	print(null != value)
+
+	# PackedStringArray
+	value = PackedStringArray()
+	print(null != value)
+
+	# PackedVector2Array
+	value = PackedVector2Array()
+	print(null != value)
+
+	# PackedVector3Array
+	value = PackedVector3Array()
+	print(null != value)
+
+	# PackedColorArray
+	value = PackedColorArray()
+	print(null != value)

+ 35 - 0
modules/gdscript/tests/scripts/runtime/features/compare-null-not-equals-builtin.out

@@ -0,0 +1,35 @@
+GDTEST_OK
+false
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true