Commit Graph

380 Commits

Author SHA1 Message Date
Fangrui Song
5422afe35a indexer: llvm::sys::fs::UniqueID -> clang::FileID
Fix a minor issue that an empty included file is not recorded.

Note, we need to skip invalid uid2lid_and_path because
otherwise lid2path may contain invalid entries with lid: 0,
which will cause the file entry with file_id 0 to have an empty path.
2019-10-24 18:37:55 -07:00
Fangrui Song
97af6fb889 💥 Rename FunctionName -> functionName, VarName -> var_name 2019-10-24 18:37:55 -07:00
Fangrui Song
689c19a5af Construct SourceManager with UserFilesAreVolatile
Fix #235. Close #453

In clang, it may be worth generalizing UserFilesAreVolatile (introduced in rC160074) to FilesAreVolatile.
2019-10-24 18:37:55 -07:00
Fangrui Song
1485c5064f Adapt rL364464: clang::FrontendAction::Execute returns llvm::Error instead of bool 2019-10-24 18:37:55 -07:00
Fangrui Song
29f3071cf7 Set RetainRemappedFileBuffers to true
Reported by David Welch in #350.

This fixes double-free of llvm::MemoryBuffer when parsing fails.
2019-10-24 18:37:55 -07:00
Fangrui Song
c0541342e9 Adapt clang rC357037: removal of setVirtualFileSystem 2019-10-24 18:37:55 -07:00
Fangrui Song
be8b1043a0 Add initialization option index.initialNoLinkage: false
By default, the background indexer doesn't handle names of no linkage.
They are indexed when their files are opened. This saves memory and
makes cache files smaller.
2019-10-24 18:37:55 -07:00
Fangrui Song
e8f40da198 Add initialization option index.name.suppressUnwrittenScope (default: false) 2019-10-24 18:37:55 -07:00
Fangrui Song
52180f1f1f Misc 2019-10-24 18:37:55 -07:00
Fangrui Song
baae464195 Change Pos::line from int16_t to uint16_t
This allows representing line 0 ~ 65535.
2019-10-24 18:37:55 -07:00
Fangrui Song
03df4085fb Make hover more detailed (e.g. include inheritance info) 2019-10-24 18:37:55 -07:00
Fangrui Song
ea852374a2 indexer: index TemplateTypeParmDecl and ParmVarDecl in declarations for clang >= 9
Index ParmVarDecl in declarations if index.parametersInDeclarations is true

And support some unhandled Decl::Kind
2019-10-24 18:37:55 -07:00
Fangrui Song
a833b0cb22 Add initialization option capabilities.* and index.maxInitializerLines
indexer.cc: use index.maxInitializerLines instead of kInitializerMaxLines

messages/initialize.cc: some ServerCapabilities are toggable:

documentOnTypeFormattingProvider.firstTriggerCharacter
foldingRangeProvider
workspace.workspaceFolders.supported
2019-10-24 18:37:55 -07:00
Fangrui Song
520991c009 Compute CompletionItemKind from Declaration instead of CursorKind 2019-10-24 18:37:55 -07:00
Fangrui Song
a7b2ce5c1f Drop support for clang 6 2019-10-24 18:37:55 -07:00
Fangrui Song
70e0eec831 Adjust FrontendOpts.Inputs[0] for inferred files 2019-10-24 18:37:55 -07:00
Fangrui Song
d430cb8ff9 Handle file deletion and register workspace/didChangeWatchedFiles
* In the "initialized" callback, send client/registerCapability with DidChangeWatchedFilesRegistrationOptions
* In workspace/didChangeWatchedFiles callback, call pipeline::Index
* In pipeline::Index, add a `deleted` status
2019-10-24 18:37:55 -07:00
Fangrui Song
cc11d30dad Refactor serializer
Delete virtual bases Reader & Writer
Delete unused MAKE_REFLECT_STRUCT_WRITER_AS_ARRAY
Merge serializers/{json,binary}.hh into serializer.{hh,cc}
MAKE_REFLECT_STRUCT => REFLECT_STRUCT
MAKE_REFLECT_TYPE_PROXY => REFLECT_UNDERLYING
2019-10-24 18:37:55 -07:00
Fangrui Song
d49119b364 Refactor WorkingFiles and CompletionManager
* WorkingFiles::files : vector -> unordered_map
* Add timestamp to WorkingFile

* Rename "comp-preload" thread to "preamble"
* Rename CompletionManager to SemaManager as it is used by "diag" "comp" "preamble"
* Rename clang_complete.* to sema_manager.*
* Merge SemaManager::{preloads,sessions}
* Add initialization option session.maxNum
* In DiagnosticMain, if an included file was modified, cancel the DiagTask and create a PreambleTask instead. The task sets `from_diag` so as to trigger immediate DiagTask after the preamble is built.
2019-10-24 18:37:55 -07:00
Fangrui Song
bf6fc50b54 Refactor Matcher to use pimpl and merge match.hh into utils.hh 2019-10-24 18:37:54 -07:00
Fangrui Song
008b1762c1 indexer: handle DecltypeType and empty main file; diag: -Wno-unused-function for headers
Don't replace name with qualified name in Cls::*name
2019-10-24 18:37:54 -07:00
Fangrui Song
c2cf488114 Use clang::isIdentifierBody and clean up utils/working_files 2019-10-24 18:37:54 -07:00
Fangrui Song
2e16b3c6bb Use SM.isWrittenInMainFile; suppress -Werror in preamble
SM.isWrittenInMainFile is to work around preamble bug: spurious err_pp_unterminated_conditional with circular #include
2019-10-24 18:37:54 -07:00
Fangrui Song
50736827ca Remove ls prefix from many LSP interfaces
Rename SymbolKind to Kind & lsSymbolKind to SymbolKind
Use textDocumentSync: TextDocumentSyncOptions
2019-10-24 18:37:54 -07:00
Fangrui Song
041ce5b6f1 Fix EnumConstantDecl's kind & EnumDecl's vars 2019-10-24 18:37:54 -07:00
Fangrui Song
e3a2f1a9a8 *.h -> *.hh 2019-10-24 18:37:54 -07:00
Fangrui Song
67eb1e6b23 Refactor message handler and namespace ccls 2019-10-24 18:37:53 -07:00
Fangrui Song
a1094c0897 Improve DeducedType 2019-10-24 18:37:35 -07:00
Fangrui Song
610798f634 Improve extent of definition/declaration; uniquify typeDefinition 2019-10-24 18:37:35 -07:00
Fangrui Song
5fb2407685 Add namespace alias clang::vfs = llvm::vfs to adapt D52783
vfs::x should be written as llvm::vfs::x to work around a [namepace.udir] bug before GCC 8 when namespace alias is used
2019-10-24 18:37:35 -07:00
Fangrui Song
56c70ad1fd Namespace: improve indexer and don't trace bases in $ccls/member 2019-10-24 18:37:35 -07:00
Fangrui Song
53e6a15f34 Use DeclRef spell to represent Use spell + Use extent 2019-10-24 18:37:35 -07:00
Fangrui Song
fc4b5b00c0 Redesign SymbolRef, Ref, Use
Remove lsLocationEx
2019-10-24 18:37:35 -07:00
Fangrui Song
46c99cda02 For $ccls/member, use unadjusted RecordDecl (if there is forward declaration) and handle ClassTemplateSpecialization 2019-10-24 18:37:35 -07:00
firstlove
334e4f32ac regard conversion as method instead of constructor 2019-10-24 18:37:35 -07:00
Fangrui Song
0273c59ac7 Rename some initialization options
* Delete index.enabled which can be achieved with index.blacklist: ['.']
* Move completion.include* to completion.include.*
* move largeFileSize to highlight.largeFileSize
2019-10-24 18:37:35 -07:00
Fangrui Song
058ac08621 Simplify semantic highlighting; improve hover of auto && 2019-10-24 18:37:35 -07:00
Fangrui Song
5b7758a6ca Add GetAdjustedDecl to adjust Decl's that are missed by clangIndex 2019-10-24 18:37:35 -07:00
Fangrui Song
35cba6d49c Remove clang_utils.* 2019-10-24 18:37:35 -07:00
Fangrui Song
395e9d8724 Misc
Move using below #include to make preamble happy
textDocument/references: if no references, first line or last line => list where this file is included
malloc_trim() only if files have been indexed in last cycle
Intern: use CachedHashStringRef
2019-10-24 18:37:35 -07:00
Fangrui Song
176039fe35 Misc 2019-10-24 18:37:35 -07:00
Fangrui Song
5a8b36c997 Fix spurious "Failed to index" errors 2019-10-24 18:37:35 -07:00
Fangrui Song
056d6d8093 Delete file_consumer.* 2019-10-24 18:37:35 -07:00
Fangrui Song
96a1d86074 Clean up FileConsumer and improve pipeline 2019-10-24 18:37:35 -07:00
Fangrui Song
e4ab3d44e9 Improve VarDef::type for textDocument/typeDefinition 2019-10-24 18:37:35 -07:00
Fangrui Song
24a8b53813 intern args 2019-10-24 18:37:35 -07:00
Fangrui Song
b4aa666860 intern strings in dependencies and IndexInclude::resolved_path 2019-10-24 18:37:35 -07:00
Fangrui Song
b08e59e8e1 Simplify pipeline and fix race 2019-10-24 18:37:35 -07:00
Fangrui Song
9616e5a2fe Add hierarchicalDocumentSymbolSupport 2019-10-24 18:37:35 -07:00
Fangrui Song
57d7d76ba0 Make $ccls/inheritanceHierarchy and textDocument/typeDefinition find declarations if definitions do not exist; spelling ranges of operator= 2019-10-24 18:37:34 -07:00