Mercurial > vim
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 { |