Skip to content

Commit

Permalink
fix: throw weaver error when trying to use GameObject param (#395)
Browse files Browse the repository at this point in the history
* fix: throw weaver error when trying to use GameObject param

* add tests

* fix test
  • Loading branch information
Lymdun committed Oct 14, 2020
1 parent c176790 commit 2726b9e
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 0 deletions.
5 changes: 5 additions & 0 deletions Assets/Mirror/Editor/Weaver/Readers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,11 @@ public static MethodReference GetReadFunc(TypeReference variableReference)
Weaver.Error($"Cannot generate reader for {variableReference.Name}. Use a supported type or provide a custom reader", variableReference);
return null;
}
if (variableReference.Is<UnityEngine.GameObject>())
{
Weaver.Error($"Cannot generate reader for {variableReference.Name}. Use a supported type or provide a custom reader", variableReference);
return null;
}
if (variableReference.IsByReference)
{
// error??
Expand Down
4 changes: 4 additions & 0 deletions Assets/Mirror/Editor/Weaver/Writers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,10 @@ static MethodDefinition GenerateWriter(TypeReference variableReference)
{
throw new GenerateWriterException($"Cannot generate writer for {variableReference.Name}. Use a supported type or provide a custom writer", variableReference);
}
if (variableReference.Is<UnityEngine.GameObject>())
{
throw new GenerateWriterException($"Cannot generate writer for {variableReference.Name}. Use a supported type or provide a custom writer", variableReference);
}
if (variableDefinition.HasGenericParameters)
{
throw new GenerateWriterException($"Cannot generate writer for generic type {variableReference.Name}. Use a supported type or provide a custom writer", variableReference);
Expand Down
13 changes: 13 additions & 0 deletions Assets/Tests/Editor/Weaver/WeaverNetworkBehaviourTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,19 @@ public void NetworkBehaviourCmdParamComponent()
"System.Void WeaverNetworkBehaviourTests.NetworkBehaviourCmdParamComponent.NetworkBehaviourCmdParamComponent::CmdCantHaveParamComponent(WeaverNetworkBehaviourTests.NetworkBehaviourCmdParamComponent.NetworkBehaviourCmdParamComponent/ComponentClass)");
}

[Test]
public void NetworkBehaviourCmdParamGameObject()
{
HasError("Cannot generate writer for GameObject. Use a supported type or provide a custom writer",
"UnityEngine.GameObject");
HasError("CmdCantHaveGameObjectComponent has invalid parameter monkeyComp",
"System.Void WeaverNetworkBehaviourTests.NetworkBehaviourCmdParamGameObject.NetworkBehaviourCmdParamGameObject::CmdCantHaveGameObjectComponent(UnityEngine.GameObject)");
HasError("Cannot generate reader for GameObject. Use a supported type or provide a custom reader",
"UnityEngine.GameObject");
HasError("CmdCantHaveGameObjectComponent has invalid parameter monkeyComp. Unsupported type UnityEngine.GameObject, use a supported Mirror type instead",
"System.Void WeaverNetworkBehaviourTests.NetworkBehaviourCmdParamGameObject.NetworkBehaviourCmdParamGameObject::CmdCantHaveGameObjectComponent(UnityEngine.GameObject)");
}

[Test]
public void NetworkBehaviourCmdDuplicateName()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using Mirror;
using UnityEngine;

namespace WeaverNetworkBehaviourTests.NetworkBehaviourCmdParamGameObject
{
class NetworkBehaviourCmdParamGameObject : NetworkBehaviour
{
[ServerRpc]
public void CmdCantHaveGameObjectComponent(GameObject monkeyComp) { }
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 2726b9e

Please sign in to comment.