diff --git a/src/embed_tests/TestPyObject.cs b/src/embed_tests/TestPyObject.cs index d0d8eab45..f7f07e6a4 100644 --- a/src/embed_tests/TestPyObject.cs +++ b/src/embed_tests/TestPyObject.cs @@ -71,5 +71,13 @@ public void AsManagedObjectInvalidCast() var list = PythonEngine.Eval("list"); Assert.Throws(() => list.AsManagedObject(typeof(int))); } + + [Test] + public void UnaryMinus_ThrowsOnBadType() + { + dynamic list = new PyList(); + var error = Assert.Throws(() => list = -list); + Assert.AreEqual("TypeError", error.Type.Name); + } } } diff --git a/src/runtime/pyobject.cs b/src/runtime/pyobject.cs index 55e76019b..4a61e65e8 100644 --- a/src/runtime/pyobject.cs +++ b/src/runtime/pyobject.cs @@ -1398,6 +1398,7 @@ public override bool TryBinaryOperation(BinaryOperationBinder binder, object arg result = null; return false; } + Exceptions.ErrorCheck(res); result = CheckNone(new PyObject(res)); return true; } @@ -1450,6 +1451,7 @@ public override bool TryUnaryOperation(UnaryOperationBinder binder, out object r result = null; return false; } + Exceptions.ErrorCheck(res); result = CheckNone(new PyObject(res)); return true; }