All notable changes to lsif-go
are documented in this file.
- The accompanying Docker image uses Go 1.17.7 and
src-cli
3.37.0. (#235)
- Fixes a couple of panics (#230, #232).
- Added
textDocument/implementation
support.- Also added Sourcegraph specific cross repository implementation support via monikers.
- Add ability to enable/disable different generation features:
- Sourcegraph API Documentation generation (
--no-enable-api-docs
flag) - Implementation generation (
--no-enable-implemenations
flag)
- Sourcegraph API Documentation generation (
- Many issues relating to package declarations, imports and structs have been fixed.
- See Package Declarations
- See Imports
- See Structs
- Additionally, package declarations are now indexed.
- No longer emits duplicate
next
edges. - Prints better help when uncrecognized import path
- An issue where API docs would not be generated for packages containing multiple
init
functions in the same file. #195 - An issue where API docs would not be generated for packages contianing multiple (illegal)
main
functions in the same file (example). #196
- An issue where illegal code (conflicting test/non-test symbol names, such as in some moby/moby packages) would fail to index. #186
- Fixed generation of standard library monikers. #184
- An issue where indexing would fail if
package main
contained exported data types. #185
(v1.6.4 had issues in our release process, it did not correctly release: v1.6.5 corrects this.)
- Improved error messages.
- API docs no longer incorrectly tags Functions/Variables/etc sections as a package.
- API docs no longer emits null tag lists in violation of the spec.
- API docs no longer incorrectly tags some methods as functions and vice-versa.
- API docs now emit data linking
resultSet
s todocumentationResult
s, making it possible to go from hover/definition/references to API docs and vice-versa. - API docs now respect the latest Sourcegraph extension spec.
- API docs now emit search keys for documentation to enable search indexing.
- API docs index pages are now directory-structured, instead of a flat list of Go packages.
- API docs symbols are now sorted (exported-first, alphabetical order.)
- API docs no longer include blank const/var declarations (
const _ = ...
) - API docs now only index top-level declarations, not e.g. variables inside functions.
- API docs do a better job of trimming very long var/const declaration lines.
- API docs no longer emit an empty "Functions" section if there are no functions in a package.
- API docs no longer emit duplicate path IDs, which were forbidden in the spec.
- API docs now emit many more tags for documentation sections: whether something is a function, const, var, public, etc.
- API docs now tag benchmark/test functions as such properly.
- API documentation is now emitted as an extension to LSIF in order to support documentation generation in the form of e.g. https://pkg.go.dev and https://godocs.io. #150
- 🚨 Changed package module version generation to make cross-index queries accurate. Cross-linking may not work with indexes created before v1.5.0. #152
- Improve moniker identifiers for exported identifiers in projects with no go.mod file. #153
- Fixed moniker identifiers for composite structs and interfaces. #135
- Fixed definition relationship with composite structs and interfaces. #156
- Fixed error-on-startup caused by unresolvable module name in go.mod file. #157
- Added const values to hover text. #144
- Support replace directives in go.mod. #145
- Infer package name from git upstream when go.mod file is absent. #149
- 🚨 Changed moniker identifier generation to support replace directives and vanity imports. Cross-index linking will work only for indexes created on or after v1.4.0. #145
- Deduplicated import moniker vertices. #146
- Update lsif-protocol dependency. #136
- Avoid scanning duplicate test packages. #138
- Fix bad moniker generation for cross-index fields. #148
- Fixed type assertion panic with aliases to anonymous structs. #134
- Type alias hovers now name the aliased type e.g.
type Alias = pkg.Original
. #131
- Definition of the RHS type symbol in a type alias is no longer the type alias itself but the type being aliased. #131
- 🚨 The
go mod download
step is no longer performed implicitly prior to loading packages. #115 - 🚨 Application flags have been updated. #115, #118
-
-v
is now for verbosity, not--version
(use-V
instead for version) -
-vv
and-vvv
increase verbosity levels -
--module-root
validation is fixed and can now correctly point to a directory containing a go.mod file outside of the project root -
Renamed flags for consistent casing:
Previous Current out
output
projectRoot
project-root
moduleRoot
module-root
repositoryRoot
repository-root
noOutput
quiet
noProgress
no-animation
-
- Fixed a panic that occurs when a struct field contains certain structtag content. #116
- Packages with no documentation no longer have the hover text
'
. #120 - Fixed incorrect indexing of typeswitch. The symbolic variable in the type switch header and all it occurrences in the case clauses are now properly linked, and the hover text of each occurrence contains the refined type. #122
- Replaced "Preloading hover text and moniker paths" step with on-demand processing of packages. This should give a small index time speed boost and is likely to lower resident memory in some environments. #104
- Additional updates to lower resident memory. #109
- Downgraded go1.15 to go1.14 in Dockerfile to help diagnose customer build issues. 5d8865d
- Replaced the digest of the golang base image. ae1cd6e
- Added
--verbose
flag. #101
- Fix slice out of bounds error when processing references. #103
- Misc updates to lower resident memory. #105, #106
- Initial stable release.