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