summary refs log tree commit diff stats
path: root/compiler/suggest.nim
Commit message (Collapse)AuthorAgeFilesLines
* Initial implementation of nimsuggest v3 (#19826)Ivan Yonchovski2022-06-131-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Initial implementation of nimsuggest v3 Rework `nimsuggest` to use caching to make usage of ide commands more efficient. Previously, all commands no matter what the state of the process is were causing clean build. In the context of Language Server Protocol(LSP) and lsp clients this was causing perf issues and overall instability. Overall, the goal of v3 is to fit to LSP Server needs - added two new commands: - `recompile` to do clean compilation - `changed` which can be used by the IDEs to notify that a particular file has been changed. The later can be utilized when using LSP file watches. - `globalSymbols` - searching global references - added `segfaults` dependency to allow fallback to clean build when incremental fails. I wish the error to be propagated to the client so we can work on fixing the incremental build failures (typically hitting pointer) - more efficient rebuild flow. ATM incremental rebuild is triggered when the command needs that(i. e. it is global) while the commands that work on the current source rebuild only it Things missing in this PR: - Documentation - Extensive unit testing. Although functional I still see this more as a POC that this approach can work. Next steps: - Implement `sug` request. - Rework/extend the protocol to allow better client/server communication. Ideally we will need push events, diagnostics should be restructored to allow per file notifications, etc. - implement v3 test suite. - better logging * Add tests for v3 and implement ideSug * Remove typeInstCache/procInstCache cleanup * Add ideChkFile command * Avoid contains call when adding symbol info * Remove log * Remove segfaults
* get rid of the warnings during bootstrapping (#18741)Miran2021-08-241-1/+1
| | | | | * fix bootstrapping hints and warnings * revert removals in ccgtypes
* followup #18362: make `UnusedImport` work robustly (#18366)Timothee Cour2021-06-271-2/+3
| | | | * warnDuplicateModuleImport => hintDuplicateModuleImport * improve DuplicateModuleImport msg, add test
* fix https://github.com/nim-lang/RFCs/issues/311 remove unary slice (#16714)Timothee Cour2021-04-191-1/+1
|
* privateAccess now works with ref | ptr (#17760)Timothee Cour2021-04-191-1/+3
|
* `import foo {.all.}` reboot (#17706)Timothee Cour2021-04-161-4/+9
|
* nimsuggest prioritize non-deprecated suggestions (#16816)Saem Ghani2021-01-291-15/+27
| | | | | | | | | | | * penalizes the quality score of deprecated symbols * uses quality more pervasively in order to reflect deprecation impact * impacts both sug and con additional notes: * linux i386 CI was failing * this is because the suggested results differ slightly in their sort * 64 bit tables.getOrDefault:441 was returned, while 32 bit returned 422 * for now simply removing the last line is good enough
* fixed nim-lang/nimsuggest#48 type aware sug (#16814)Saem Ghani2021-01-251-2/+7
| | | | * suggesting identifiers accounts context over scope (distance) * key takeaway: context fit is prioritized over a heuristics like scope
* fixes nim-lang/nimsuggest#103 con dot exprs (#16657)Saem Ghani2021-01-121-0/+1
| | | | - con calls for dot exprs now returns results - discovered an issue with dot expr results -- documented
* fixed nim-lang/nimsuggest#82 pure enum field sug (#16676)Saem Ghani2021-01-111-10/+11
| | | | - previous code wasn't account for tyEnum being wrapped in tyTypeDesc - now pure enum fields are suggested
* IC: next steps (#16550)Andreas Rumpf2021-01-071-38/+39
| | | | | | | | | | | | | | | | | | * cleanups * ast.nim: cleanups * IC: no more sym.tab field, stored externally in the module graph * nimble compiles again * rodfiles: store bitwidth of integers and the endianness in the cookie because we serialize 'int' directly * rodfiles: added compilerproc and export sections * rodfiles: added all the missing sections * rodfiles: track the missing information * IC: architecture for lazy loading of proc bodies * make tests green again * completed the lazy loading of proc bodies * symbol lookup integration, part 1 * symbol lookup integration, part 2 * symbol lookup integration, part 3 * make tcompilerapi work again * rodfiles: fixed config change handling
* fixes nim-lang/nimsuggest#119 outline includes (#16608)Saem Ghani2021-01-061-3/+13
| | | | | | nimsuggest outline should account for includes, now it does: - the module prefix will be of the module doing the including - the filename will be of the module that was included - adds a test case for it
* refactorings to prepare the compiler for IC (#15935)Andreas Rumpf2020-12-171-33/+17
| | | | | | | | | | | | | | * added ic specific Nim code; WIP * make the symbol import mechanism lazy; WIP * ensure that modules can be imported multiple times * ambiguity checking * handle converters and TR macros properly * make 'enum' test category green again * special logic for semi-pure enums * makes nimsuggest tests green again * fixes nimdata * makes nimpy green again * makes more important packages work
* suggest: try to find the implementation of a symbol when def is used (#15555)alaviss2020-10-141-7/+15
| | | | | * suggest: try to find the implementation of a symbol when def is used * suggest: return all declarations of the symbol on `def`
* Big compiler Cleanup (#14777)Clyybber2020-08-281-1/+1
|
* compiler: minor code cleanupsAraq2020-07-271-1/+1
|
* fix #11009 (#14935)flywind2020-07-091-1/+6
|
* Clean out oldast (#14837)Juan Carlos2020-06-301-4/+1
| | | | * Clean out old Deprecated CLI switch * Update to remove --oldast CLI option
* compiler/suggest: highlight squashed operators (#11796)alaviss2020-04-201-3/+7
| | | | | | The operator fetching proc is greedy, so operators such as `%*` in expression `%*{}` can't be highlighted. This commit fixes that.
* make `usage of foo is a user-defined error` more informative (#13833)Timothee Cour2020-04-011-3/+5
|
* fix .deprecated. object typedef crash (#13643)Andy Davidoff2020-03-161-3/+5
| | | | | * fix .deprecated. object typedef crash * fixup a test that i don't understand * disable the test rather than debug ci
* Cosmetic compiler cleanup (#12718)Clyybber2019-11-281-30/+28
| | | | | | | | | | | | | | | | | | * Cleanup compiler code base * Unify add calls * Unify len invocations * Unify range operators * Fix oversight * Remove {.procvar.} pragma * initCandidate -> newCandidate where reasonable * Unify safeLen calls
* compiler/suggest: add variable support to `con` (#12569)alaviss2019-11-041-1/+9
| | | This allows for the type of a variable to be retrieved.
* Small ast.nim cleanup (#12156)Clyybber2019-09-091-5/+5
| | | | | * Remove sonsLen * Use Indexable
* fixes nimsuggest/#108: RangeError with d:releasenarimiran2019-09-041-1/+1
|
* new gensym handling (#11985)Andreas Rumpf2019-08-231-3/+3
| | | | | | | | | | | * new .gensym implementation * make astspec test green again * introduce a --useVersion switch to group compatibility switches * fixes #10180 * fixes #11494 * fixes #11483 * object constructor fields and named parameters are also not gensym'ed * disabled broken package
* fixes 'unused module' feature for 32 bit builds of Nim for good [nobackport]Araq2019-08-091-2/+2
|
* [refactoring] compiler: simplified markUsedAndreas Rumpf2019-08-081-2/+2
|
* fixes #11809Andreas Rumpf2019-08-081-1/+2
|
* Merge branch 'devel' into araq-detect-unused-importsAndreas Rumpf2019-07-181-2/+2
|\
| * [refactoring] remove unused imports in the compiler and in some stdlib modulesAraq2019-07-181-2/+2
| |
* | [feature] detect unused importsAraq2019-07-171-1/+16
|/
* minor style changesAraq2019-07-111-1/+1
|
* nim styleChecker: implemented all the missing features (bugfix)Araq2019-07-101-1/+3
|
* rename tyExpr/tyStmt to tyUntyped/tyTyped (#11227)Arne Döring2019-05-111-3/+3
|
* Replace countup(x, y-1) with x ..< yClyybber2019-05-071-3/+3
|
* Less warnings in macros (#10799)Arne Döring2019-03-111-4/+0
|
* make nimsuggest aware of tyOwnedAndreas Rumpf2019-02-251-1/+1
|
* 32 bit fixes (#10608)Arne Döring2019-02-131-1/+1
|
* compiler/[msgs, suggest]: improve highlighter accuracy (#10496)alaviss2019-02-071-2/+37
| | | | | | | | | | Previously the compiler would generate suggestions based on the symbol identifier length, but that might not reflect the actual representation of it within the actual source code. This commit implements a simple source scanner for the suggest module to address the problem outlined above. Fixes nim-lang/nimsuggest#24
* suggest: quote operators and keywords on suggestion (#10460)alaviss2019-01-281-2/+6
|
* {.deprecated: msg.} now works for vars and lets (#10234)Neelesh Chandola2019-01-081-2/+6
|
* Deprecate gc v2 (#10151)Neelesh Chandola2019-01-011-2/+2
| | | | | | * Deprecate gc v2 * warnDeprecated now has custom messages
* Before showing deprecated warning, check whether enum field was marked ↵Neelesh Chandola2018-12-301-2/+2
| | | | deprecated or the whole enum type (#10135)
* Show deprecation warning for fields of a deprecated enum (#10112)Neelesh Chandola2018-12-301-3/+8
| | | | | | * Show deprecation warning for fields of a deprecated enum * Add test
* make Nim take roughly 100MB less RAM for bootstrapping via a new compiler ↵Andreas Rumpf2018-11-071-2/+2
| | | | switch -d:leanCompiler; useful for the Raberry PI
* .error for routines now can also have a custom error message; improve error ↵Araq2018-09-251-11/+20
| | | | message for 'nil' strings
* compiler refactoring; use typesafe path handing; docgen: render symbols ↵Andreas Rumpf2018-09-071-2/+2
| | | | between modules
* make nimsuggest compile againAndreas Rumpf2018-08-231-1/+1
|
* fixes merge conflictAraq2018-08-231-7/+16
|\