diff options
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.cs | 654 |
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 +{ +} |