diff options
author | Jason Merrill <jason@redhat.com> | 2015-08-19 21:45:44 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2015-08-19 21:45:44 -0400 |
commit | 18c4fa8ef0c5e3d705be8f50860b3e58be672256 (patch) | |
tree | 610e361af05e82acc2adedabe3bec485e19f5df2 /gcc/cp/lambda.c | |
parent | f02fe7889f4dfd8bd3c8c020d10585026d46522a (diff) | |
download | gcc-18c4fa8ef0c5e3d705be8f50860b3e58be672256.zip gcc-18c4fa8ef0c5e3d705be8f50860b3e58be672256.tar.gz gcc-18c4fa8ef0c5e3d705be8f50860b3e58be672256.tar.bz2 |
* lambda.c (current_nonlambda_scope): New.
From-SVN: r227022
Diffstat (limited to 'gcc/cp/lambda.c')
-rw-r--r-- | gcc/cp/lambda.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c index dcd3bb9..ea9dba0 100644 --- a/gcc/cp/lambda.c +++ b/gcc/cp/lambda.c @@ -817,6 +817,30 @@ nonlambda_method_basetype (void) return TYPE_METHOD_BASETYPE (TREE_TYPE (fn)); } +/* Like current_scope, but looking through lambdas. */ + +tree +current_nonlambda_scope (void) +{ + tree scope = current_scope (); + for (;;) + { + if (TREE_CODE (scope) == FUNCTION_DECL + && LAMBDA_FUNCTION_P (scope)) + { + scope = CP_TYPE_CONTEXT (DECL_CONTEXT (scope)); + continue; + } + else if (LAMBDA_TYPE_P (scope)) + { + scope = CP_TYPE_CONTEXT (scope); + continue; + } + break; + } + return scope; +} + /* Helper function for maybe_add_lambda_conv_op; build a CALL_EXPR with indicated FN and NARGS, but do not initialize the return type or any of the argument slots. */ |