summaryrefslogtreecommitdiffstats
path: root/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators.Sample/MustBeVariantSamples.cs
diff options
context:
space:
mode:
Diffstat (limited to 'modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators.Sample/MustBeVariantSamples.cs')
-rw-r--r--modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators.Sample/MustBeVariantSamples.cs654
1 files changed, 654 insertions, 0 deletions
diff --git a/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators.Sample/MustBeVariantSamples.cs b/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators.Sample/MustBeVariantSamples.cs
new file mode 100644
index 0000000000..f19da77be6
--- /dev/null
+++ b/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators.Sample/MustBeVariantSamples.cs
@@ -0,0 +1,654 @@
+using System;
+using Godot.Collections;
+using Array = Godot.Collections.Array;
+
+namespace Godot.SourceGenerators.Sample;
+
+public class MustBeVariantMethods
+{
+ public void MustBeVariantMethodCalls()
+ {
+ Method<bool>();
+ Method<char>();
+ Method<sbyte>();
+ Method<byte>();
+ Method<short>();
+ Method<ushort>();
+ Method<int>();
+ Method<uint>();
+ Method<long>();
+ Method<ulong>();
+ Method<float>();
+ Method<double>();
+ Method<string>();
+ Method<Vector2>();
+ Method<Vector2I>();
+ Method<Rect2>();
+ Method<Rect2I>();
+ Method<Transform2D>();
+ Method<Vector3>();
+ Method<Vector3I>();
+ Method<Vector4>();
+ Method<Vector4I>();
+ Method<Basis>();
+ Method<Quaternion>();
+ Method<Transform3D>();
+ Method<Projection>();
+ Method<Aabb>();
+ Method<Color>();
+ Method<Plane>();
+ Method<Callable>();
+ Method<Signal>();
+ Method<GodotObject>();
+ Method<StringName>();
+ Method<NodePath>();
+ Method<Rid>();
+ Method<Dictionary>();
+ Method<Array>();
+ Method<byte[]>();
+ Method<int[]>();
+ Method<long[]>();
+ Method<float[]>();
+ Method<double[]>();
+ Method<string[]>();
+ Method<Vector2[]>();
+ Method<Vector3[]>();
+ Method<Color[]>();
+ Method<GodotObject[]>();
+ Method<StringName[]>();
+ Method<NodePath[]>();
+ Method<Rid[]>();
+
+ // This call fails because generic type is not Variant-compatible.
+ //Method<object>();
+ }
+
+ public void Method<[MustBeVariant] T>()
+ {
+ }
+
+ public void MustBeVariantClasses()
+ {
+ new ClassWithGenericVariant<bool>();
+ new ClassWithGenericVariant<char>();
+ new ClassWithGenericVariant<sbyte>();
+ new ClassWithGenericVariant<byte>();
+ new ClassWithGenericVariant<short>();
+ new ClassWithGenericVariant<ushort>();
+ new ClassWithGenericVariant<int>();
+ new ClassWithGenericVariant<uint>();
+ new ClassWithGenericVariant<long>();
+ new ClassWithGenericVariant<ulong>();
+ new ClassWithGenericVariant<float>();
+ new ClassWithGenericVariant<double>();
+ new ClassWithGenericVariant<string>();
+ new ClassWithGenericVariant<Vector2>();
+ new ClassWithGenericVariant<Vector2I>();
+ new ClassWithGenericVariant<Rect2>();
+ new ClassWithGenericVariant<Rect2I>();
+ new ClassWithGenericVariant<Transform2D>();
+ new ClassWithGenericVariant<Vector3>();
+ new ClassWithGenericVariant<Vector3I>();
+ new ClassWithGenericVariant<Vector4>();
+ new ClassWithGenericVariant<Vector4I>();
+ new ClassWithGenericVariant<Basis>();
+ new ClassWithGenericVariant<Quaternion>();
+ new ClassWithGenericVariant<Transform3D>();
+ new ClassWithGenericVariant<Projection>();
+ new ClassWithGenericVariant<Aabb>();
+ new ClassWithGenericVariant<Color>();
+ new ClassWithGenericVariant<Plane>();
+ new ClassWithGenericVariant<Callable>();
+ new ClassWithGenericVariant<Signal>();
+ new ClassWithGenericVariant<GodotObject>();
+ new ClassWithGenericVariant<StringName>();
+ new ClassWithGenericVariant<NodePath>();
+ new ClassWithGenericVariant<Rid>();
+ new ClassWithGenericVariant<Dictionary>();
+ new ClassWithGenericVariant<Array>();
+ new ClassWithGenericVariant<byte[]>();
+ new ClassWithGenericVariant<int[]>();
+ new ClassWithGenericVariant<long[]>();
+ new ClassWithGenericVariant<float[]>();
+ new ClassWithGenericVariant<double[]>();
+ new ClassWithGenericVariant<string[]>();
+ new ClassWithGenericVariant<Vector2[]>();
+ new ClassWithGenericVariant<Vector3[]>();
+ new ClassWithGenericVariant<Color[]>();
+ new ClassWithGenericVariant<GodotObject[]>();
+ new ClassWithGenericVariant<StringName[]>();
+ new ClassWithGenericVariant<NodePath[]>();
+ new ClassWithGenericVariant<Rid[]>();
+
+ // This class fails because generic type is not Variant-compatible.
+ //new ClassWithGenericVariant<object>();
+ }
+}
+
+public class ClassWithGenericVariant<[MustBeVariant] T>
+{
+}
+
+public class MustBeVariantAnnotatedMethods
+{
+ [GenericTypeAttribute<bool>()]
+ public void MethodWithAttributeBool()
+ {
+ }
+
+ [GenericTypeAttribute<char>()]
+ public void MethodWithAttributeChar()
+ {
+ }
+
+ [GenericTypeAttribute<sbyte>()]
+ public void MethodWithAttributeSByte()
+ {
+ }
+
+ [GenericTypeAttribute<byte>()]
+ public void MethodWithAttributeByte()
+ {
+ }
+
+ [GenericTypeAttribute<short>()]
+ public void MethodWithAttributeInt16()
+ {
+ }
+
+ [GenericTypeAttribute<ushort>()]
+ public void MethodWithAttributeUInt16()
+ {
+ }
+
+ [GenericTypeAttribute<int>()]
+ public void MethodWithAttributeInt32()
+ {
+ }
+
+ [GenericTypeAttribute<uint>()]
+ public void MethodWithAttributeUInt32()
+ {
+ }
+
+ [GenericTypeAttribute<long>()]
+ public void MethodWithAttributeInt64()
+ {
+ }
+
+ [GenericTypeAttribute<ulong>()]
+ public void MethodWithAttributeUInt64()
+ {
+ }
+
+ [GenericTypeAttribute<float>()]
+ public void MethodWithAttributeSingle()
+ {
+ }
+
+ [GenericTypeAttribute<double>()]
+ public void MethodWithAttributeDouble()
+ {
+ }
+
+ [GenericTypeAttribute<string>()]
+ public void MethodWithAttributeString()
+ {
+ }
+
+ [GenericTypeAttribute<Vector2>()]
+ public void MethodWithAttributeVector2()
+ {
+ }
+
+ [GenericTypeAttribute<Vector2I>()]
+ public void MethodWithAttributeVector2I()
+ {
+ }
+
+ [GenericTypeAttribute<Rect2>()]
+ public void MethodWithAttributeRect2()
+ {
+ }
+
+ [GenericTypeAttribute<Rect2I>()]
+ public void MethodWithAttributeRect2I()
+ {
+ }
+
+ [GenericTypeAttribute<Transform2D>()]
+ public void MethodWithAttributeTransform2D()
+ {
+ }
+
+ [GenericTypeAttribute<Vector3>()]
+ public void MethodWithAttributeVector3()
+ {
+ }
+
+ [GenericTypeAttribute<Vector3I>()]
+ public void MethodWithAttributeVector3I()
+ {
+ }
+
+ [GenericTypeAttribute<Vector4>()]
+ public void MethodWithAttributeVector4()
+ {
+ }
+
+ [GenericTypeAttribute<Vector4I>()]
+ public void MethodWithAttributeVector4I()
+ {
+ }
+
+ [GenericTypeAttribute<Basis>()]
+ public void MethodWithAttributeBasis()
+ {
+ }
+
+ [GenericTypeAttribute<Quaternion>()]
+ public void MethodWithAttributeQuaternion()
+ {
+ }
+
+ [GenericTypeAttribute<Transform3D>()]
+ public void MethodWithAttributeTransform3D()
+ {
+ }
+
+ [GenericTypeAttribute<Projection>()]
+ public void MethodWithAttributeProjection()
+ {
+ }
+
+ [GenericTypeAttribute<Aabb>()]
+ public void MethodWithAttributeAabb()
+ {
+ }
+
+ [GenericTypeAttribute<Color>()]
+ public void MethodWithAttributeColor()
+ {
+ }
+
+ [GenericTypeAttribute<Plane>()]
+ public void MethodWithAttributePlane()
+ {
+ }
+
+ [GenericTypeAttribute<Callable>()]
+ public void MethodWithAttributeCallable()
+ {
+ }
+
+ [GenericTypeAttribute<Signal>()]
+ public void MethodWithAttributeSignal()
+ {
+ }
+
+ [GenericTypeAttribute<GodotObject>()]
+ public void MethodWithAttributeGodotObject()
+ {
+ }
+
+ [GenericTypeAttribute<StringName>()]
+ public void MethodWithAttributeStringName()
+ {
+ }
+
+ [GenericTypeAttribute<NodePath>()]
+ public void MethodWithAttributeNodePath()
+ {
+ }
+
+ [GenericTypeAttribute<Rid>()]
+ public void MethodWithAttributeRid()
+ {
+ }
+
+ [GenericTypeAttribute<Dictionary>()]
+ public void MethodWithAttributeDictionary()
+ {
+ }
+
+ [GenericTypeAttribute<Array>()]
+ public void MethodWithAttributeArray()
+ {
+ }
+
+ [GenericTypeAttribute<byte[]>()]
+ public void MethodWithAttributeByteArray()
+ {
+ }
+
+ [GenericTypeAttribute<int[]>()]
+ public void MethodWithAttributeInt32Array()
+ {
+ }
+
+ [GenericTypeAttribute<long[]>()]
+ public void MethodWithAttributeInt64Array()
+ {
+ }
+
+ [GenericTypeAttribute<float[]>()]
+ public void MethodWithAttributeSingleArray()
+ {
+ }
+
+ [GenericTypeAttribute<double[]>()]
+ public void MethodWithAttributeDoubleArray()
+ {
+ }
+
+ [GenericTypeAttribute<string[]>()]
+ public void MethodWithAttributeStringArray()
+ {
+ }
+
+ [GenericTypeAttribute<Vector2[]>()]
+ public void MethodWithAttributeVector2Array()
+ {
+ }
+
+ [GenericTypeAttribute<Vector3[]>()]
+ public void MethodWithAttributeVector3Array()
+ {
+ }
+
+ [GenericTypeAttribute<Color[]>()]
+ public void MethodWithAttributeColorArray()
+ {
+ }
+
+ [GenericTypeAttribute<GodotObject[]>()]
+ public void MethodWithAttributeGodotObjectArray()
+ {
+ }
+
+ [GenericTypeAttribute<StringName[]>()]
+ public void MethodWithAttributeStringNameArray()
+ {
+ }
+
+ [GenericTypeAttribute<NodePath[]>()]
+ public void MethodWithAttributeNodePathArray()
+ {
+ }
+
+ [GenericTypeAttribute<Rid[]>()]
+ public void MethodWithAttributeRidArray()
+ {
+ }
+
+ // This method definition fails because generic type is not Variant-compatible.
+ /*
+ [GenericTypeAttribute<object>()]
+ public void MethodWithWrongAttribute()
+ {
+ }
+ */
+}
+
+[GenericTypeAttribute<bool>()]
+public class ClassVariantAnnotatedBool
+{
+}
+
+[GenericTypeAttribute<char>()]
+public class ClassVariantAnnotatedChar
+{
+}
+
+[GenericTypeAttribute<sbyte>()]
+public class ClassVariantAnnotatedSByte
+{
+}
+
+[GenericTypeAttribute<byte>()]
+public class ClassVariantAnnotatedByte
+{
+}
+
+[GenericTypeAttribute<short>()]
+public class ClassVariantAnnotatedInt16
+{
+}
+
+[GenericTypeAttribute<ushort>()]
+public class ClassVariantAnnotatedUInt16
+{
+}
+
+[GenericTypeAttribute<int>()]
+public class ClassVariantAnnotatedInt32
+{
+}
+
+[GenericTypeAttribute<uint>()]
+public class ClassVariantAnnotatedUInt32
+{
+}
+
+[GenericTypeAttribute<long>()]
+public class ClassVariantAnnotatedInt64
+{
+}
+
+[GenericTypeAttribute<ulong>()]
+public class ClassVariantAnnotatedUInt64
+{
+}
+
+[GenericTypeAttribute<float>()]
+public class ClassVariantAnnotatedSingle
+{
+}
+
+[GenericTypeAttribute<double>()]
+public class ClassVariantAnnotatedDouble
+{
+}
+
+[GenericTypeAttribute<string>()]
+public class ClassVariantAnnotatedString
+{
+}
+
+[GenericTypeAttribute<Vector2>()]
+public class ClassVariantAnnotatedVector2
+{
+}
+
+[GenericTypeAttribute<Vector2I>()]
+public class ClassVariantAnnotatedVector2I
+{
+}
+
+[GenericTypeAttribute<Rect2>()]
+public class ClassVariantAnnotatedRect2
+{
+}
+
+[GenericTypeAttribute<Rect2I>()]
+public class ClassVariantAnnotatedRect2I
+{
+}
+
+[GenericTypeAttribute<Transform2D>()]
+public class ClassVariantAnnotatedTransform2D
+{
+}
+
+[GenericTypeAttribute<Vector3>()]
+public class ClassVariantAnnotatedVector3
+{
+}
+
+[GenericTypeAttribute<Vector3I>()]
+public class ClassVariantAnnotatedVector3I
+{
+}
+
+[GenericTypeAttribute<Vector4>()]
+public class ClassVariantAnnotatedVector4
+{
+}
+
+[GenericTypeAttribute<Vector4I>()]
+public class ClassVariantAnnotatedVector4I
+{
+}
+
+[GenericTypeAttribute<Basis>()]
+public class ClassVariantAnnotatedBasis
+{
+}
+
+[GenericTypeAttribute<Quaternion>()]
+public class ClassVariantAnnotatedQuaternion
+{
+}
+
+[GenericTypeAttribute<Transform3D>()]
+public class ClassVariantAnnotatedTransform3D
+{
+}
+
+[GenericTypeAttribute<Projection>()]
+public class ClassVariantAnnotatedProjection
+{
+}
+
+[GenericTypeAttribute<Aabb>()]
+public class ClassVariantAnnotatedAabb
+{
+}
+
+[GenericTypeAttribute<Color>()]
+public class ClassVariantAnnotatedColor
+{
+}
+
+[GenericTypeAttribute<Plane>()]
+public class ClassVariantAnnotatedPlane
+{
+}
+
+[GenericTypeAttribute<Callable>()]
+public class ClassVariantAnnotatedCallable
+{
+}
+
+[GenericTypeAttribute<Signal>()]
+public class ClassVariantAnnotatedSignal
+{
+}
+
+[GenericTypeAttribute<GodotObject>()]
+public class ClassVariantAnnotatedGodotObject
+{
+}
+
+[GenericTypeAttribute<StringName>()]
+public class ClassVariantAnnotatedStringName
+{
+}
+
+[GenericTypeAttribute<NodePath>()]
+public class ClassVariantAnnotatedNodePath
+{
+}
+
+[GenericTypeAttribute<Rid>()]
+public class ClassVariantAnnotatedRid
+{
+}
+
+[GenericTypeAttribute<Dictionary>()]
+public class ClassVariantAnnotatedDictionary
+{
+}
+
+[GenericTypeAttribute<Array>()]
+public class ClassVariantAnnotatedArray
+{
+}
+
+[GenericTypeAttribute<byte[]>()]
+public class ClassVariantAnnotatedByteArray
+{
+}
+
+[GenericTypeAttribute<int[]>()]
+public class ClassVariantAnnotatedInt32Array
+{
+}
+
+[GenericTypeAttribute<long[]>()]
+public class ClassVariantAnnotatedInt64Array
+{
+}
+
+[GenericTypeAttribute<float[]>()]
+public class ClassVariantAnnotatedSingleArray
+{
+}
+
+[GenericTypeAttribute<double[]>()]
+public class ClassVariantAnnotatedDoubleArray
+{
+}
+
+[GenericTypeAttribute<string[]>()]
+public class ClassVariantAnnotatedStringArray
+{
+}
+
+[GenericTypeAttribute<Vector2[]>()]
+public class ClassVariantAnnotatedVector2Array
+{
+}
+
+[GenericTypeAttribute<Vector3[]>()]
+public class ClassVariantAnnotatedVector3Array
+{
+}
+
+[GenericTypeAttribute<Color[]>()]
+public class ClassVariantAnnotatedColorArray
+{
+}
+
+[GenericTypeAttribute<GodotObject[]>()]
+public class ClassVariantAnnotatedGodotObjectArray
+{
+}
+
+[GenericTypeAttribute<StringName[]>()]
+public class ClassVariantAnnotatedStringNameArray
+{
+}
+
+[GenericTypeAttribute<NodePath[]>()]
+public class ClassVariantAnnotatedNodePathArray
+{
+}
+
+[GenericTypeAttribute<Rid[]>()]
+public class ClassVariantAnnotatedRidArray
+{
+}
+
+// This class definition fails because generic type is not Variant-compatible.
+/*
+[GenericTypeAttribute<object>()]
+public class ClassNonVariantAnnotated
+{
+}
+*/
+
+[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
+public class GenericTypeAttribute<[MustBeVariant] T> : Attribute
+{
+}