Changeset View
Changeset View
Standalone View
Standalone View
plugins/clang/duchain/builder.cpp
Show First 20 Lines • Show All 1198 Lines • ▼ Show 20 Line(s) | |||||
1199 | CXChildVisitResult Visitor::buildParmDecl(CXCursor cursor) | 1199 | CXChildVisitResult Visitor::buildParmDecl(CXCursor cursor) | ||
1200 | { | 1200 | { | ||
1201 | return buildDeclaration<CXCursor_ParmDecl, typename DeclType<CXCursor_ParmDecl, false, false>::Type, false>(cursor); | 1201 | return buildDeclaration<CXCursor_ParmDecl, typename DeclType<CXCursor_ParmDecl, false, false>::Type, false>(cursor); | ||
1202 | } | 1202 | } | ||
1203 | 1203 | | |||
1204 | CXChildVisitResult Visitor::buildUse(CXCursor cursor) | 1204 | CXChildVisitResult Visitor::buildUse(CXCursor cursor) | ||
1205 | { | 1205 | { | ||
1206 | m_uses[m_parentContext->context].push_back(cursor); | 1206 | m_uses[m_parentContext->context].push_back(cursor); | ||
1207 | return cursor.kind == CXCursor_DeclRefExpr || cursor.kind == CXCursor_MemberRefExpr ? | 1207 | return cursor.kind == CXCursor_DeclRefExpr || cursor.kind == CXCursor_MemberRefExpr || cursor.kind == CXCursor_ObjCMessageExpr? | ||
mwolff: space before ? | |||||
1208 | CXChildVisit_Recurse : CXChildVisit_Continue; | 1208 | CXChildVisit_Recurse : CXChildVisit_Continue; | ||
1209 | } | 1209 | } | ||
1210 | 1210 | | |||
1211 | CXChildVisitResult Visitor::buildMacroExpansion(CXCursor cursor) | 1211 | CXChildVisitResult Visitor::buildMacroExpansion(CXCursor cursor) | ||
1212 | { | 1212 | { | ||
1213 | buildUse(cursor); | 1213 | buildUse(cursor); | ||
1214 | 1214 | | |||
1215 | // cache that we encountered a macro expansion at this location | 1215 | // cache that we encountered a macro expansion at this location | ||
1216 | unsigned int offset; | 1216 | unsigned int offset; | ||
1217 | clang_getSpellingLocation(clang_getCursorLocation(cursor), nullptr, nullptr, nullptr, &offset); | 1217 | clang_getSpellingLocation(clang_getCursorLocation(cursor), nullptr, nullptr, nullptr, &offset); | ||
1218 | m_macroExpansionLocations << offset; | 1218 | m_macroExpansionLocations << offset; | ||
1219 | 1219 | | |||
1220 | return CXChildVisit_Recurse; | 1220 | return CXChildVisit_Recurse; | ||
1221 | } | 1221 | } | ||
1222 | 1222 | | |||
1223 | template<CXCursorKind CK> | 1223 | template<CXCursorKind CK> | ||
1224 | CXChildVisitResult Visitor::buildCompoundStatement(CXCursor cursor) | 1224 | CXChildVisitResult Visitor::buildCompoundStatement(CXCursor cursor) | ||
1225 | { | 1225 | { | ||
1226 | if (CK == CXCursor_LambdaExpr || m_parentContext->context->type() == DUContext::Function) | 1226 | if (CK == CXCursor_LambdaExpr || CK == CXCursor_BlockExpr || m_parentContext->context->type() == DUContext::Function) | ||
1227 | { | 1227 | { | ||
1228 | auto context = createContext<CK, CK == CXCursor_LambdaExpr ? DUContext::Function : DUContext::Other>(cursor); | 1228 | auto context = createContext<CK, CK == CXCursor_LambdaExpr || CK == CXCursor_BlockExpr ? DUContext::Function : DUContext::Other>(cursor); | ||
1229 | CurrentContext newParent(context, m_parentContext->keepAliveContexts); | 1229 | CurrentContext newParent(context, m_parentContext->keepAliveContexts); | ||
1230 | PushValue<CurrentContext*> pushCurrent(m_parentContext, &newParent); | 1230 | PushValue<CurrentContext*> pushCurrent(m_parentContext, &newParent); | ||
1231 | clang_visitChildren(cursor, &visitCursor, this); | 1231 | clang_visitChildren(cursor, &visitCursor, this); | ||
1232 | return CXChildVisit_Continue; | 1232 | return CXChildVisit_Continue; | ||
1233 | } | 1233 | } | ||
1234 | return CXChildVisit_Recurse; | 1234 | return CXChildVisit_Recurse; | ||
1235 | } | 1235 | } | ||
1236 | 1236 | | |||
▲ Show 20 Lines • Show All 320 Lines • ▼ Show 20 Line(s) | 1518 | #define UseCursorKind(CursorKind, ...) case CursorKind: return visitor->dispatchCursor<CursorKind>(__VA_ARGS__); | |||
1557 | case CXCursor_NamespaceRef: | 1557 | case CXCursor_NamespaceRef: | ||
1558 | case CXCursor_MemberRef: | 1558 | case CXCursor_MemberRef: | ||
1559 | case CXCursor_LabelRef: | 1559 | case CXCursor_LabelRef: | ||
1560 | case CXCursor_OverloadedDeclRef: | 1560 | case CXCursor_OverloadedDeclRef: | ||
1561 | case CXCursor_VariableRef: | 1561 | case CXCursor_VariableRef: | ||
1562 | case CXCursor_DeclRefExpr: | 1562 | case CXCursor_DeclRefExpr: | ||
1563 | case CXCursor_MemberRefExpr: | 1563 | case CXCursor_MemberRefExpr: | ||
1564 | case CXCursor_ObjCClassRef: | 1564 | case CXCursor_ObjCClassRef: | ||
1565 | case CXCursor_ObjCMessageExpr: | ||||
1565 | return visitor->buildUse(cursor); | 1566 | return visitor->buildUse(cursor); | ||
1566 | case CXCursor_MacroExpansion: | 1567 | case CXCursor_MacroExpansion: | ||
1567 | return visitor->buildMacroExpansion(cursor); | 1568 | return visitor->buildMacroExpansion(cursor); | ||
1568 | case CXCursor_CompoundStmt: | 1569 | case CXCursor_CompoundStmt: | ||
1569 | return visitor->buildCompoundStatement<CXCursor_CompoundStmt>(cursor); | 1570 | return visitor->buildCompoundStatement<CXCursor_CompoundStmt>(cursor); | ||
1570 | case CXCursor_LambdaExpr: | 1571 | case CXCursor_LambdaExpr: | ||
1571 | return visitor->buildCompoundStatement<CXCursor_LambdaExpr>(cursor); | 1572 | return visitor->buildCompoundStatement<CXCursor_LambdaExpr>(cursor); | ||
1573 | case CXCursor_BlockExpr: | ||||
1574 | return visitor->buildCompoundStatement<CXCursor_BlockExpr>(cursor); | ||||
1572 | case CXCursor_CXXBaseSpecifier: | 1575 | case CXCursor_CXXBaseSpecifier: | ||
1573 | return visitor->buildCXXBaseSpecifier(cursor); | 1576 | return visitor->buildCXXBaseSpecifier(cursor); | ||
1574 | case CXCursor_ParmDecl: | 1577 | case CXCursor_ParmDecl: | ||
1575 | return visitor->buildParmDecl(cursor); | 1578 | return visitor->buildParmDecl(cursor); | ||
1576 | // TODO: fix upstream and then just adapt this to UseCursorKind() | 1579 | // TODO: fix upstream and then just adapt this to UseCursorKind() | ||
1577 | case CXCursor_TypeAliasTemplateDecl: | 1580 | case CXCursor_TypeAliasTemplateDecl: | ||
1578 | return visitor->dispatchTypeAliasTemplate(cursor, parent); | 1581 | return visitor->dispatchTypeAliasTemplate(cursor, parent); | ||
1579 | default: | 1582 | default: | ||
Show All 14 Lines |
space before ?