blob: d218c7f2a10721234735411f27f427209b0cc351 [file] [log] [blame]
# This package contains a SystemVerilog language server [1] implementation.
#
# [1]: https://microsoft.github.io/language-server-protocol/specification
load("//bazel:sh_test_with_runfiles_lib.bzl", "sh_test_with_runfiles_lib")
load("//bazel:variables.bzl", "STATIC_EXECUTABLES_FEATURE")
package(
default_applicable_licenses = ["//:license"],
default_visibility = ["//visibility:private"],
features = ["layering_check"],
)
cc_library(
name = "autoexpand",
srcs = ["autoexpand.cc"],
hdrs = ["autoexpand.h"],
deps = [
":lsp-parse-buffer",
":symbol-table-handler",
"//common/analysis:syntax-tree-search",
"//common/lsp:lsp-protocol",
"//common/strings:line-column-map",
"//common/strings:position",
"//common/text:symbol",
"//common/text:text-structure",
"//common/text:token-info",
"//common/text:tree-utils",
"//common/util:logging",
"//verilog/CST:declaration",
"//verilog/CST:dimensions",
"//verilog/CST:module",
"//verilog/CST:net",
"//verilog/CST:port",
"//verilog/CST:type",
"//verilog/CST:verilog-matchers",
"//verilog/CST:verilog-nonterminals",
"//verilog/analysis:verilog-analyzer",
"//verilog/formatting:format-style",
"//verilog/formatting:format-style-init",
"//verilog/formatting:formatter",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/container:node_hash_map",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
"@com_googlesource_code_re2//:re2",
],
)
cc_library(
name = "lsp-parse-buffer",
srcs = ["lsp-parse-buffer.cc"],
hdrs = ["lsp-parse-buffer.h"],
deps = [
"//common/analysis:lint-rule-status",
"//common/lsp:lsp-file-utils",
"//common/lsp:lsp-text-buffer",
"//common/util:logging",
"//verilog/analysis:verilog-analyzer",
"//verilog/analysis:verilog-linter",
"//verilog/analysis:verilog-linter-configuration",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings:string_view",
],
)
cc_test(
name = "lsp-parse-buffer_test",
srcs = ["lsp-parse-buffer_test.cc"],
deps = [
":lsp-parse-buffer",
"//common/lsp:lsp-text-buffer",
"//common/text:text-structure",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "verible-lsp-adapter",
srcs = ["verible-lsp-adapter.cc"],
hdrs = ["verible-lsp-adapter.h"],
deps = [
":autoexpand",
":document-symbol-filler",
":lsp-parse-buffer",
":symbol-table-handler",
"//common/analysis:file-analyzer",
"//common/analysis:lint-rule-status",
"//common/lsp:lsp-protocol",
"//common/lsp:lsp-protocol-enums",
"//common/lsp:lsp-protocol-operators",
"//common/strings:line-column-map",
"//common/text:text-structure",
"//common/text:token-info",
"//common/util:interval",
"//verilog/analysis:verilog-analyzer",
"//verilog/analysis:verilog-linter",
"//verilog/formatting:format-style",
"//verilog/formatting:format-style-init",
"//verilog/formatting:formatter",
"//verilog/parser:verilog-token-enum",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
"@jsonhpp//:json",
],
)
cc_library(
name = "lsp-conversion",
hdrs = ["lsp-conversion.h"],
deps = [
"//common/lsp:lsp-protocol",
"//common/strings:line-column-map",
],
)
cc_library(
name = "document-symbol-filler",
srcs = ["document-symbol-filler.cc"],
hdrs = ["document-symbol-filler.h"],
deps = [
":lsp-conversion",
"//common/lsp:lsp-protocol",
"//common/lsp:lsp-protocol-enums",
"//common/text:text-structure",
"//common/text:token-info",
"//common/text:tree-utils",
"//common/text:visitors",
"//common/util:value-saver",
"//verilog/CST:class",
"//verilog/CST:functions",
"//verilog/CST:module",
"//verilog/CST:package",
"//verilog/CST:seq-block",
"//verilog/CST:verilog-nonterminals",
"@jsonhpp//:json",
],
)
cc_library(
name = "hover",
srcs = ["hover.cc"],
hdrs = ["hover.h"],
deps = [
":lsp-parse-buffer",
":symbol-table-handler",
"//common/lsp:lsp-protocol",
"//common/text:concrete-syntax-leaf",
"//common/text:concrete-syntax-tree",
"//common/text:symbol",
"//common/text:token-info",
"//common/text:tree-context-visitor",
"//common/text:tree-utils",
"//common/util:casts",
"//common/util:range",
"//verilog/CST:seq-block",
"//verilog/CST:verilog-nonterminals",
"//verilog/analysis:symbol-table",
"//verilog/parser:verilog-token-enum",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
],
)
cc_library(
name = "symbol-table-handler",
srcs = ["symbol-table-handler.cc"],
hdrs = ["symbol-table-handler.h"],
deps = [
":lsp-conversion",
":lsp-parse-buffer",
"//common/lsp:lsp-file-utils",
"//common/lsp:lsp-protocol",
"//common/strings:line-column-map",
"//common/text:symbol",
"//common/text:text-structure",
"//common/text:token-info",
"//common/util:file-util",
"//common/util:iterator-adaptors",
"//common/util:logging",
"//common/util:range",
"//verilog/analysis:symbol-table",
"//verilog/analysis:verilog-analyzer",
"//verilog/analysis:verilog-filelist",
"//verilog/analysis:verilog-project",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/flags:flag",
"@com_google_absl//absl/log",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/strings:string_view",
"@com_google_absl//absl/time",
"@com_google_absl//absl/types:optional",
],
)
cc_test(
name = "symbol-table-handler_test",
srcs = ["symbol-table-handler_test.cc"],
deps = [
":lsp-parse-buffer",
":symbol-table-handler",
"//common/lsp:lsp-file-utils",
"//common/lsp:lsp-protocol",
"//common/lsp:lsp-text-buffer",
"//common/util:file-util",
"//verilog/analysis:verilog-project",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings:string_view",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "verilog-language-server",
srcs = ["verilog-language-server.cc"],
hdrs = ["verilog-language-server.h"],
deps = [
":hover",
":lsp-parse-buffer",
":symbol-table-handler",
":verible-lsp-adapter",
"//common/lsp:json-rpc-dispatcher",
"//common/lsp:lsp-file-utils",
"//common/lsp:lsp-protocol",
"//common/lsp:lsp-text-buffer",
"//common/lsp:message-stream-splitter",
"//common/util:file-util",
"//common/util:init-command-line",
"//common/util:logging",
"//verilog/analysis:verilog-project",
"@com_google_absl//absl/flags:flag",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings:string_view",
"@jsonhpp//:json",
],
)
cc_test(
name = "verilog-language-server_test",
srcs = ["verilog-language-server_test.cc"],
deps = [
":verilog-language-server",
"//common/lsp:lsp-file-utils",
"//common/lsp:lsp-protocol",
"//common/lsp:lsp-protocol-enums",
"//common/strings:line-column-map",
"//common/util:file-util",
"//verilog/analysis:verilog-linter",
"@com_google_absl//absl/flags:flag",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
"@jsonhpp//:json",
],
)
cc_binary(
name = "verible-verilog-ls",
srcs = ["verible-verilog-ls.cc"],
features = STATIC_EXECUTABLES_FEATURE,
visibility = ["//visibility:public"],
deps = [
":verilog-language-server",
"//common/util:init-command-line",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings:string_view",
],
)
sh_test_with_runfiles_lib(
name = "verible-verilog-ls_test",
size = "small",
srcs = ["verible-verilog-ls_test.sh"],
args = [
"$(location :verible-verilog-ls)",
"$(location //common/lsp:json-rpc-expect)",
],
data = [
":verible-verilog-ls",
"//common/lsp:json-rpc-expect",
],
deps = [],
)
cc_test(
name = "autoexpand_test",
srcs = ["autoexpand_test.cc"],
deps = [
":autoexpand",
":lsp-parse-buffer",
":symbol-table-handler",
"//common/lsp:lsp-protocol",
"//common/lsp:lsp-text-buffer",
"//common/text:text-structure",
"//verilog/analysis:verilog-analyzer",
"//verilog/analysis:verilog-project",
"//verilog/formatting:format-style",
"//verilog/formatting:format-style-init",
"//verilog/formatting:formatter",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
"@jsonhpp//:json",
],
)