summaryrefslogtreecommitdiffstats
path: root/clang/tools/libclang/CXCursor.cpp
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2018-11-27 12:02:39 +0000
committerIvan Donchevskii <ivan.donchevskii@qt.io>2018-11-27 12:02:39 +0000
commit60b7103ce8f692d9b836902dacccdb096168251e (patch)
tree2f4ae492aa6cb34ef37d781f5bab9da6fa0bfd15 /clang/tools/libclang/CXCursor.cpp
parent81bff5e6ea27d5ff45b01372fdbbdad2fbac98b9 (diff)
downloadbcm5719-llvm-60b7103ce8f692d9b836902dacccdb096168251e.tar.gz
bcm5719-llvm-60b7103ce8f692d9b836902dacccdb096168251e.zip
[libclang] Fix clang_Cursor_getNumArguments and clang_Cursor_getArgument for CXXConstructExpr
Constructors have the same methods for arguments as call expressions. Let's provide a way to get their arguments the same way. Differential Revision: https://reviews.llvm.org/D54934 llvm-svn: 347654
Diffstat (limited to 'clang/tools/libclang/CXCursor.cpp')
-rw-r--r--clang/tools/libclang/CXCursor.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/tools/libclang/CXCursor.cpp b/clang/tools/libclang/CXCursor.cpp
index 7e14b5f893c..b8c25291691 100644
--- a/clang/tools/libclang/CXCursor.cpp
+++ b/clang/tools/libclang/CXCursor.cpp
@@ -1164,6 +1164,9 @@ int clang_Cursor_getNumArguments(CXCursor C) {
if (const CallExpr *CE = dyn_cast<CallExpr>(E)) {
return CE->getNumArgs();
}
+ if (const CXXConstructExpr *CE = dyn_cast<CXXConstructExpr>(E)) {
+ return CE->getNumArgs();
+ }
}
return -1;
@@ -1192,6 +1195,13 @@ CXCursor clang_Cursor_getArgument(CXCursor C, unsigned i) {
cxcursor::getCursorTU(C));
}
}
+ if (const CXXConstructExpr *CE = dyn_cast<CXXConstructExpr>(E)) {
+ if (i < CE->getNumArgs()) {
+ return cxcursor::MakeCXCursor(CE->getArg(i),
+ getCursorDecl(C),
+ cxcursor::getCursorTU(C));
+ }
+ }
}
return clang_getNullCursor();
OpenPOWER on IntegriCloud