patch 9.1.0385: Vim9: crash with null_class and null_object

Problem:  Vim9: crash with null_class and null_object
          (Aliaksei Budavei)
Solution: Handle null_class and null_object correctly
          (Yegappan Lakshmanan)

fixes: #14678
closes: #14681

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim
index ed3aac0..0a48b82 100644
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -545,6 +545,52 @@
     @_ = null_class.member
   END
   v9.CheckDefExecAndScriptFailure(lines, ['E715: Dictionary required', 'E1363: Incomplete type'])
+
+  # Test for using a null class as a value
+  lines =<< trim END
+    vim9script
+    echo empty(null_class)
+  END
+  v9.CheckSourceFailure(lines, 'E1405: Class "" cannot be used as a value', 2)
+
+  # Test for using a null class with string()
+  lines =<< trim END
+    vim9script
+    assert_equal('class [unknown]', string(null_class))
+  END
+  v9.CheckSourceSuccess(lines)
+
+  # Test for using a null class with string()
+  lines =<< trim END
+    vim9script
+    assert_equal(12, type(null_class))
+    assert_equal('class<Unknown>', typename(null_class))
+  END
+  v9.CheckSourceSuccess(lines)
+enddef
+
+def Test_using_null_object()
+  # Test for using a null object as a value
+  var lines =<< trim END
+    vim9script
+    assert_equal(1, empty(null_object))
+  END
+  v9.CheckSourceSuccess(lines)
+
+  # Test for using a null object with string()
+  lines =<< trim END
+    vim9script
+    assert_equal('object of [unknown]', string(null_object))
+  END
+  v9.CheckSourceSuccess(lines)
+
+  # Test for using a null object with string()
+  lines =<< trim END
+    vim9script
+    assert_equal(13, type(null_object))
+    assert_equal('object<Unknown>', typename(null_object))
+  END
+  v9.CheckSourceSuccess(lines)
 enddef
 
 def Test_class_interface_wrong_end()