]> granicus.if.org Git - clang/commit
Remove the circular reference to LambdaExpr in CXXRecordDecl.
authorFaisal Vali <faisalv@yahoo.com>
Wed, 23 Oct 2013 02:59:27 +0000 (02:59 +0000)
committerFaisal Vali <faisalv@yahoo.com>
Wed, 23 Oct 2013 02:59:27 +0000 (02:59 +0000)
commita4c91afe103063e983aa9bab535e442da8629636
tree6144ee78578d256ef8aca61e93b99c5c29609600
parentf06a2893bc9778857295c64ee32b4a899a338480
Remove the circular reference to LambdaExpr in CXXRecordDecl.

Both Doug and Richard had asked me to remove the circular reference in CXXRecordDecl to LambdaExpr by factoring out and storing the needed information from LambdaExpr directly into CXXRecordDecl.

No change in functionality.

In addition, I have added an IsGenericLambda flag - this makes life a little easier when we implement capturing, and are Sema-analyzing the body of a lambda (and the calloperator hasn't been wired to the closure class yet). Any inner lambdas can have potential captures that could require walking up the scope chain and checking if any generic lambdas are capture-ready. This 'bit' makes some of that checking easier.

This patch was approved by Doug with minor modifications (comments were cleaned up, and all data members were converted from bool/enum to unsigned, as requested):
http://llvm-reviews.chandlerc.com/D1856

Thanks!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193223 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/DeclCXX.h
include/clang/Sema/Sema.h
lib/AST/DeclCXX.cpp
lib/Sema/SemaDecl.cpp
lib/Sema/SemaLambda.cpp
lib/Sema/TreeTransform.h
lib/Serialization/ASTReaderDecl.cpp
lib/Serialization/ASTWriter.cpp
test/PCH/cxx1y-lambdas.mm [new file with mode: 0644]