comparison src/vim9class.c @ 31815:64f03e860c91 v9.0.1240

patch 9.0.1240: cannot access a private object member in a lambda Commit: https://github.com/vim/vim/commit/62a6923470827acbf124df41134ae6df52f334e6 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jan 24 15:07:04 2023 +0000 patch 9.0.1240: cannot access a private object member in a lambda Problem: Cannot access a private object member in a lambda defined inside the class. Solution: Go up the context stack to find the class. (closes #11866)
author Bram Moolenaar <Bram@vim.org>
date Tue, 24 Jan 2023 16:15:07 +0100
parents 48431422f766
children 3516e35f409f
comparison
equal deleted inserted replaced
31814:19d470f5723f 31815:64f03e860c91
1386 } 1386 }
1387 return -1; 1387 return -1;
1388 } 1388 }
1389 1389
1390 /* 1390 /*
1391 * Return TRUE if current context "cctx_arg" is inside class "cl".
1392 * Return FALSE if not.
1393 */
1394 int
1395 inside_class(cctx_T *cctx_arg, class_T *cl)
1396 {
1397 for (cctx_T *cctx = cctx_arg; cctx != NULL; cctx = cctx->ctx_outer)
1398 if (cctx->ctx_ufunc != NULL && cctx->ctx_ufunc->uf_class == cl)
1399 return TRUE;
1400 return FALSE;
1401 }
1402
1403 /*
1391 * Make a copy of an object. 1404 * Make a copy of an object.
1392 */ 1405 */
1393 void 1406 void
1394 copy_object(typval_T *from, typval_T *to) 1407 copy_object(typval_T *from, typval_T *to)
1395 { 1408 {