--- a/cmajor++/Cm/Cm.Core/ConversionTable.cpp
+++ b/cmajor++/Cm/Cm.Core/ConversionTable.cpp
@@ -37,7 +37,7 @@
 
 ConversionTablePtr ConversionTable::Instance()
 {
-    CM_CORE_ASSERT(instance);
+    CM_CORE_ASSERT(instance, nullptr);
     return instance;
 }
 
@@ -57,6 +57,9 @@
 
 void ConversionTable::AddConversion(const FunctionPtr& conversion)
 {
+#if !defined(NDEBUG) || defined(ASSERTIONS)
+    const char* fullName = GetFullNameFor(conversion);
+#endif
     std::string targetTypeName;
     std::string sourceTypeName;
     if (conversion->IsConversionFunction())
@@ -71,15 +74,15 @@
             targetType = targetType->GetBaseType();
         }
         targetTypeName = targetType->FullName();
-        CM_CORE_ASSERT(conversion->IsMemberFunction());
+        CM_CORE_ASSERT(conversion->IsMemberFunction(), fullName);
         MemberFunctionPtr memfun = std::static_pointer_cast<MemberFunction>(conversion);
         sourceTypeName = memfun->GetClassType()->FullName();
     }
     else
     {
-        CM_CORE_ASSERT(conversion->Parameters().size() == 2);
+        CM_CORE_ASSERT(conversion->Parameters().size() == 2, fullName);
         ObjectPtr targetTypeExpr = conversion->Parameters()[0]->TypeExpr();
-        CM_CORE_ASSERT(targetTypeExpr->IsPointerType());
+        CM_CORE_ASSERT(targetTypeExpr->IsPointerType(), fullName);
         PointerTypePtr targetPointerType = std::static_pointer_cast<PointerType>(targetTypeExpr);
         targetTypeName = targetPointerType->GetPointeeTypeExpr()->FullName(); 
         TypePtr targetType = targetPointerType->GetPointeeTypeExpr()->GetType();