Wip-clang-todo-items

From Qt Wiki
Jump to: navigation, search

Known issues.

  • Language and include-path detection do not always work correctly. This is not a (lib)clang issue, but related to the way project information is handled in the CppTools plugin.

Todo items for the wip/clang branch

  • Diagnostic issues: FixIt should be converted to QuickFix, diagnostic tooltip should not disappear on hover and should contain links to other parts of code (links can be created from child diagnostics with severity "Note:")
  • Clang analyses the whole file and resolves all references anyway, highlighting can store the links to the declarations/definitions for use with "follow symbol under cursor".
  • Diagnostic displaying failed at code similar to this:

foreach (const ProjectInfo &projectInfo, m_projects.values()) {
foreach (const ProjectPart::Ptr &projectPart, projectInfo.projectParts()) {
foreach (const QString &cxxFile, projectPart->files)
m_srcToProjectPart[cxxFile.path].append(projectPart);
}
}

Ideas list

  • Code completion
    • (plugin) There are completion context flag CCC_ClassOrStructTag. Add all names of classes/structs from project, because preliminary declaration is possible here. Substract set of classes defined in already included files.
    • (plugin) Use clang_codeCompleteGetContainerUSR() to get unique completion context, cache proposals selected before and increase their priority next time. Factor 1.5 is enought, because completion that have matching type should have bigger priority than completion selected previously.
    • (qtcreator) on completion results collision, filter out result with lower priority
    • (qtcreator) use editor font in code-completion hints
    • (clang) implement completion of virtual methods from base class
    • (clang) implement member-access-operator correction
    • (clang) implement completion of macro like GL_API or PLUGIN_EXPORT on context ClassOrStructTag
  • Support
    • (plugin) Completer and SemanticMarker both use switch with CXCursor_Kind enum. Add simplified version of cursor kind and use it in both places, like SimplifiedTypeClass in clang sources.
  • Diagnostic
    • (qtcreator, plugin) Use warning flags from ProjectExplorer::Toolchain to create correct warning options for clang