patch 8.2.1647: Vim9: result of expression with && and || is not a bool

Problem:    Vim9: result of expression with && and || cannot be assigned to a
            bool variable.
Solution:   Add the TTFLAG_BOOL_OK flag and convert the value if needed.
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index 1582f12..78d0a62 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -1199,6 +1199,29 @@
   assert_equal(true, InvertBool())
 enddef
 
+def ReturnBool(): bool
+  let var: bool = "no" && [] || 123
+  return var
+enddef
+
+def Test_disassemble_return_bool()
+  let instr = execute('disassemble ReturnBool')
+  assert_match('ReturnBool\_s*' ..
+        'let var: bool = "no" && \[\] || 123\_s*' ..
+        '0 PUSHS "no"\_s*' ..
+        '1 JUMP_AND_KEEP_IF_FALSE -> 3\_s*' ..
+        '2 NEWLIST size 0\_s*' ..
+        '3 JUMP_AND_KEEP_IF_TRUE -> 5\_s*' ..
+        '4 PUSHNR 123\_s*' ..
+        '5 2BOOL (!!val)\_s*' ..
+        '\d STORE $0\_s*' ..
+        'return var\_s*' ..
+        '\d LOAD $0\_s*' ..   
+        '\d RETURN',
+        instr)
+  assert_equal(true, InvertBool())
+enddef
+
 def Test_disassemble_compare()
   let cases = [
         ['true == isFalse', 'COMPAREBOOL =='],