patch 9.1.0523: Vim9: cannot downcast an object

Problem:  Vim9: cannot downcast an object (Ernie Rael)
Solution: Fix class downcasting issue (LemonBoy).

When casting an object from one class to another the target type may be
a subclass (downcast) or superclass (upcast) of the source one.
Upcasts require a runtime type check to be emitted.

Add a disassembly test.

fixes: #13244
closes: #15079

Signed-off-by: LemonBoy <thatlemon@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/structs.h b/src/structs.h
index 7e21f0f..6309211 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -4902,7 +4902,8 @@
     WT_MEMBER,
     WT_METHOD,		// object method
     WT_METHOD_ARG,	// object method argument type
-    WT_METHOD_RETURN	// object method return type
+    WT_METHOD_RETURN,	// object method return type
+    WT_CAST,		// type cast
 } wherekind_T;
 
 // Struct used to pass the location of a type check.  Used in error messages to