[Backport 5.2] SCIP ctags: improve kind output (#58051)

* SCIP syntax: add more kinds for go ctags (#57806)

This change adds fine-grained kinds to the Go ctags output. Specific changes:
* Split `type` into `interface`, `struct`, and `typealias`
* Map struct members to `field` instead of `variable`

Universal ctags does not have a clear spec, and some languages use different
names for the same kind. So my strategy is not to match universal ctags
exactly, but just to capture the correct SCIP kinds. Clients need to handle the
fact that the kind names can be different.

* SCIP ctags: add kinds for C#, Python, Ruby (#57879)

Added more fine-grained kinds for C#, Python, and Ruby to better match the universal-ctags output.

Addresses https://github.com/sourcegraph/sourcegraph/issues/57659

* Add scip-ctags kinds for js, ts, and rust (#57899)

* SCIP ctags: use MethodSpec kind for Go (#57929)

Now that MethodSpec is available in SCIP, we can use it in the Go SCIP ctags
output.

* SCIP ctags: add kinds for Kotlin (#57998)

Improved ctags kind output for Kotlin:
* Split type into class, interface, object, and enum
* Split variable into enumMember, constant, and property
* Add type alias

* Fix snapshot tests by adding back trailing whitespace

Our precommit hook removes trailing whitespace, but the generated snapshots
include it.

---------

Co-authored-by: Auguste Rame <19855629+SuperAuguste@users.noreply.github.com>
This commit is contained in:
Julie Tibshirani 2023-11-02 01:33:22 -07:00 committed by GitHub
parent 9de3bed8a7
commit c0719630f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
41 changed files with 748 additions and 365 deletions

View File

@ -1,5 +1,5 @@
{
"checksum": "edfef804723dc794cca785f7de2dc8def338c0fa9829ef5b2afab75ca692c755",
"checksum": "9d730cdc37d6a005b78babdf0cbe8fa947cac02458b3f6faef35d0d5cc2aa41a",
"crates": {
"addr2line 0.20.0": {
"name": "addr2line",
@ -9437,16 +9437,13 @@
},
"license": "Unlicense/MIT"
},
"scip 0.1.1": {
"scip 0.3.1": {
"name": "scip",
"version": "0.1.1",
"version": "0.3.1",
"repository": {
"Git": {
"remote": "https://github.com/sourcegraph/scip",
"commitish": {
"Rev": "1bf111e1cf175569970e95566b379fb2a548d70a"
},
"strip_prefix": "bindings/rust"
"Http": {
"url": "https://crates.io/api/v1/crates/scip/0.3.1/download",
"sha256": "3e84d21062a3ba08d58870c8c36b0c005b2b2261c6ad1bf7042585427c781883"
}
},
"targets": [
@ -9475,7 +9472,7 @@
"selects": {}
},
"edition": "2021",
"version": "0.1.1"
"version": "0.3.1"
},
"license": "Apache-2.0"
},
@ -9576,7 +9573,7 @@
"target": "rustc_hash"
},
{
"id": "scip 0.1.1",
"id": "scip 0.3.1",
"target": "scip"
},
{
@ -9634,7 +9631,7 @@
"target": "protobuf"
},
{
"id": "scip 0.1.1",
"id": "scip 0.3.1",
"target": "scip"
},
{
@ -9676,7 +9673,7 @@
"target": "lazy_static"
},
{
"id": "scip 0.1.1",
"id": "scip 0.3.1",
"target": "scip"
},
{
@ -9696,7 +9693,7 @@
"target": "tree_sitter_cpp"
},
{
"id": "tree-sitter-go 0.19.1",
"id": "tree-sitter-go 0.20.0",
"target": "tree_sitter_go"
},
{
@ -10150,7 +10147,7 @@
"target": "rocket"
},
{
"id": "scip 0.1.1",
"id": "scip 0.3.1",
"target": "scip"
},
{
@ -11017,7 +11014,7 @@
"target": "rustyline"
},
{
"id": "scip 0.1.1",
"id": "scip 0.3.1",
"target": "scip"
},
{
@ -12545,13 +12542,13 @@
},
"license": "MIT"
},
"tree-sitter-go 0.19.1": {
"tree-sitter-go 0.20.0": {
"name": "tree-sitter-go",
"version": "0.19.1",
"version": "0.20.0",
"repository": {
"Http": {
"url": "https://crates.io/api/v1/crates/tree-sitter-go/0.19.1/download",
"sha256": "71967701c8214be4aa77e0260e98361e6fd71ceec1d9d03abb37a22c9f60d0ff"
"url": "https://crates.io/api/v1/crates/tree-sitter-go/0.20.0/download",
"sha256": "1ad6d11f19441b961af2fda7f12f5d0dac325f6d6de83836a1d3750018cc5114"
}
},
"targets": [
@ -12586,14 +12583,14 @@
"target": "tree_sitter"
},
{
"id": "tree-sitter-go 0.19.1",
"id": "tree-sitter-go 0.20.0",
"target": "build_script_build"
}
],
"selects": {}
},
"edition": "2018",
"version": "0.19.1"
"version": "0.20.0"
},
"build_script_attrs": {
"data_glob": [

View File

@ -1708,8 +1708,9 @@ dependencies = [
[[package]]
name = "scip"
version = "0.1.1"
source = "git+https://github.com/sourcegraph/scip?rev=1bf111e1cf175569970e95566b379fb2a548d70a#1bf111e1cf175569970e95566b379fb2a548d70a"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e84d21062a3ba08d58870c8c36b0c005b2b2261c6ad1bf7042585427c781883"
dependencies = [
"protobuf",
]
@ -2316,9 +2317,9 @@ dependencies = [
[[package]]
name = "tree-sitter-go"
version = "0.19.1"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71967701c8214be4aa77e0260e98361e6fd71ceec1d9d03abb37a22c9f60d0ff"
checksum = "1ad6d11f19441b961af2fda7f12f5d0dac325f6d6de83836a1d3750018cc5114"
dependencies = [
"cc",
"tree-sitter",

View File

@ -61,7 +61,7 @@ tree-sitter = "0.20.9"
tree-sitter-highlight = "0.20.1"
# Since there is no version tag, we pin the dependency to a specific revision
scip = { git = "https://github.com/sourcegraph/scip", rev="1bf111e1cf175569970e95566b379fb2a548d70a" }
scip = "0.3.1"
protobuf = "3"

View File

@ -1,20 +1,18 @@
(using_directive (qualified_name) @descriptor.type)
(class_declaration name: (_) @descriptor.type) @scope
(interface_declaration name: (_) @descriptor.type) @scope
(enum_declaration name: (_) @descriptor.type) @scope
(struct_declaration name: (_) @descriptor.type) @scope
(namespace_declaration name: (_) @descriptor.namespace) @scope
(class_declaration name: (_) @descriptor.type @kind.class) @scope
(interface_declaration name: (_) @descriptor.type @kind.interface) @scope
(enum_declaration name: (_) @descriptor.type @kind.enum) @scope
(struct_declaration name: (_) @descriptor.type @kind.struct) @scope
(namespace_declaration name: (_) @descriptor.namespace @kind.namespace) @scope
; Counter-intuitive name; it can actually be global
(local_function_statement name: (_) @descriptor.method)
(method_declaration name: (_) @descriptor.method)
(constructor_declaration name: (_) @descriptor.method)
(local_function_statement name: (_) @descriptor.method @kind.function)
(method_declaration name: (_) @descriptor.method @kind.method)
(constructor_declaration name: (_) @descriptor.method @kind.constructor)
(block) @local
(field_declaration (variable_declaration (variable_declarator (identifier) @descriptor.term)))
(event_field_declaration (variable_declaration (variable_declarator (identifier) @descriptor.term)))
(property_declaration name: (identifier) @descriptor.term)
(enum_member_declaration name: (_) @descriptor.term)
(delegate_declaration name: (identifier) @descriptor.method)
(field_declaration (variable_declaration (variable_declarator (identifier) @descriptor.term @kind.field)))
(event_field_declaration (variable_declaration (variable_declarator (identifier) @kind.event @descriptor.term)))
(property_declaration name: (identifier) @descriptor.term @kind.property)
(enum_member_declaration name: (_) @descriptor.term @kind.enummember)
(delegate_declaration name: (identifier) @descriptor.method @kind.delegate)

View File

@ -11,25 +11,47 @@
(parameter_declaration
type: [(pointer_type (type_identifier) @descriptor.type)
(type_identifier) @descriptor.type]))
name: (field_identifier) @descriptor.method @enclosing
name: (field_identifier) @descriptor.method @kind.method @enclosing
body: (_) @local)
(type_declaration (type_spec name: (type_identifier) @descriptor.type)) @scope
(type_declaration
(type_spec
name: (type_identifier) @descriptor.type @kind.struct
type: (struct_type))) @scope
(type_declaration
(type_spec
name: (type_identifier) @descriptor.type @kind.interface
type: (interface_type))) @scope
(type_declaration
(type_spec
name: (type_identifier) @descriptor.type @kind.typealias
type: (type_identifier)))
(type_declaration
(type_alias
name: (type_identifier) @descriptor.type @kind.typealias))
;; For fields, we have nested struct definitions.
;; To get the scope properly
((field_declaration_list
(field_declaration
name: (_) @descriptor.term
name: (_) @descriptor.term @kind.field
type: (_) @_type) @enclosing)
(#filter! @_type "interface_type" "struct_type"))
(field_declaration_list
(field_declaration
name: (_) @descriptor.type
type: [(interface_type) (struct_type)] @scope))
name: (_) @descriptor.type @kind.interface
type: (interface_type) @scope))
(field_declaration_list
(field_declaration
name: (_) @descriptor.type @kind.struct
type: (struct_type) @scope))
(const_spec name: (_) @descriptor.term) @kind.constant @enclosing
(import_spec name: (_) @descriptor.term) @enclosing
(method_spec name: (_) @descriptor.method) @enclosing
(var_spec name: (_) @descriptor.term) @enclosing
(method_spec name: (_) @descriptor.method @kind.methodspec) @enclosing
(var_spec name: (_) @descriptor.term @kind.variable) @enclosing

View File

@ -1,15 +1,16 @@
(namespace_import (identifier) @descriptor.term)
(namespace_import (identifier) @descriptor.term @kind.variable)
(named_imports
[(import_specifier alias: (_) @descriptor.term)
(import_specifier name: (_) @descriptor.term !alias)])
(import_specifier alias: (_) @descriptor.term @kind.variable))
(named_imports
(import_specifier name: (_) @descriptor.term @kind.variable !alias))
;; Function / Generator declaration.
;; Don't think there is any reason to expose anything from within the body of the functions
(function_declaration (identifier) @descriptor.method body: (_) @local)
(generator_function_declaration (identifier) @descriptor.method body: (_) @local)
(function_declaration (identifier) @descriptor.method @kind.function body: (_) @local)
(generator_function_declaration (identifier) @descriptor.method @kind.function body: (_) @local)
(lexical_declaration (variable_declarator name: (identifier) @descriptor.term)) @scope
(variable_declaration (variable_declarator name: (identifier) @descriptor.term)) @scope
(lexical_declaration (variable_declarator name: (identifier) @descriptor.term @kind.variable)) @scope
(variable_declaration (variable_declarator name: (identifier) @descriptor.term @kind.variable)) @scope
;; {{{ Handle multiple scenarios of literal objects at top level
;; var X = { key: value }
@ -21,25 +22,31 @@
;;
(object
(pair
key: (property_identifier) @descriptor.method
key: (property_identifier) @descriptor.method @kind.function
value: [(function) (arrow_function)]))
((object
(pair
key: (property_identifier) @descriptor.term
key: (property_identifier) @descriptor.term @kind.property
value: (_) @_value_type))
(#filter! @_value_type "function" "arrow_function"))
;; }}}
;; class X { ... }
(class_declaration
name: (_) @descriptor.type
name: (_) @descriptor.type @kind.class
body: (_) @scope)
(class_declaration
(class_body
[(method_definition
name: (_) @descriptor.method
name: (_) @descriptor.method @kind.method (#not-eq? @descriptor.method "constructor")
body: (_) @local)]))
(class_declaration
(class_body
[(method_definition
name: (_) @descriptor.method @kind.constructor (#eq? @descriptor.method "constructor")
body: (_) @local)]))
[(if_statement) (while_statement) (for_statement) (do_statement) (call_expression)] @local

View File

@ -1,20 +1,44 @@
(source_file
(package_header
(identifier)
@descriptor.namespace)) @scope
@descriptor.namespace @kind.package)) @scope
(function_declaration
(simple_identifier) @descriptor.method
(function_body) @local)
(simple_identifier) @descriptor.method @kind.method
(function_body)? @local)
(anonymous_function (_ (type_identifier) @descriptor.type . (type_identifier) @descriptor.method)) @local
(class_declaration (type_identifier) @descriptor.type) @scope
(object_declaration (type_identifier) @descriptor.type) @scope
(class_parameter (simple_identifier) @descriptor.term)
(enum_entry (simple_identifier) @descriptor.term)
(property_declaration (variable_declaration (simple_identifier) @descriptor.term))
(anonymous_function) @local
(multi_variable_declaration (variable_declaration (simple_identifier) @descriptor.term))
(class_declaration "interface" (type_identifier) @descriptor.type @kind.interface) @scope
(class_declaration "enum" "class" (type_identifier) @descriptor.type @kind.enum) @scope
;; Exclude enums from the 'class' kind
((class_declaration
("enum")? @_enum "class"
(type_identifier) @descriptor.type @kind.class)
(#filter! @_enum "enum")) @scope
(object_declaration (type_identifier) @descriptor.type @kind.object) @scope
(companion_object (type_identifier) @descriptor.type @kind.object) @scope
(type_alias (type_identifier) @descriptor.type @kind.typealias)
(class_parameter (simple_identifier) @descriptor.term @kind.property)
(enum_entry (simple_identifier) @descriptor.term @kind.enummember)
;; In the grammar, property_modifier always represents 'const'
(property_declaration
(modifiers (property_modifier))
(variable_declaration (simple_identifier) @descriptor.term @kind.constant))
;; Exclude constants from the 'property' kind
((property_declaration
(modifiers (property_modifier) @_const)?
(variable_declaration (simple_identifier) @descriptor.term @kind.property))
(#filter! @_const "property_modifier"))
(property_declaration
(multi_variable_declaration (variable_declaration (simple_identifier) @descriptor.term @kind.property)))
;; Future TODOs:
;; - Should probably unescape `Escaped` simple identifiers

View File

@ -8,23 +8,22 @@
; (import_statement name: (_) @descriptor.term)
; (import_from_statement name: (_) @descriptor.term)
(class_definition name: (_) @descriptor.type body: (_) @scope)
(class_definition name: (_) @descriptor.type @kind.class body: (_) @scope)
(class_definition
body: (block
[(function_definition
name: (_) @descriptor.method @kind.field
name: (_) @descriptor.method @kind.method
body: (_) @local)
(decorated_definition
definition: (function_definition
name: (_) @descriptor.method @kind.field
name: (_) @descriptor.method @kind.method
body: (_) @local))]))
(module (function_definition name: (_) @descriptor.method body: (_) @local))
(module (decorated_definition (function_definition name: (_) @descriptor.method body: (_) @local)))
(module (function_definition name: (_) @descriptor.method @kind.function body: (_) @local))
(module (decorated_definition (function_definition name: (_) @descriptor.method @kind.function body: (_) @local)))
;; foo = 1
(expression_statement (assignment left: (identifier) @descriptor.term))
(expression_statement (assignment left: (identifier) @descriptor.term @kind.variable))
;; foo, bar, baz = 1, 2, 3
(expression_statement (assignment left: (pattern_list (identifier) @descriptor.term)))
(expression_statement (assignment left: (pattern_list (identifier) @descriptor.term @kind.variable)))

View File

@ -1,27 +1,30 @@
(assignment left: [(identifier) (constant)] @descriptor.term)
(class name: (_) @descriptor.type) @scope
(method name: (_) @descriptor.method) @local
(module name: (_) @descriptor.namespace @kind.module) @scope
(singleton_method name: (_) @descriptor.method) @local
(assignment left: (identifier) @descriptor.term @kind.variable)
(assignment left: (constant) @descriptor.term @kind.constant)
(class name: (_) @descriptor.type @kind.class) @scope
(method name: (_) @descriptor.method @kind.method) @local
(singleton_method name: (_) @descriptor.method @kind.singletonmethod) @local
[(do_block) (block) (unless) (case) (begin) (if) (while) (for)] @local
;; attr_accessor :bar -> bar, bar=
((call
method: (identifier) @_attr_accessor
arguments: (argument_list (simple_symbol) @descriptor.method))
arguments: (argument_list (simple_symbol) @descriptor.method @kind.accessor))
(#eq? @_attr_accessor "attr_accessor")
(#transform! ":(.*)" "$1")
(#transform! ":(.*)" "$1="))
((call
method: (identifier) @_attr_reader
arguments: (argument_list (simple_symbol) @descriptor.method))
arguments: (argument_list (simple_symbol) @descriptor.method @kind.getter))
(#eq? @_attr_reader "attr_reader")
(#transform! ":(.*)" "$1"))
((call
method: (identifier) @_attr_writer
arguments: (argument_list (simple_symbol) @descriptor.method))
arguments: (argument_list (simple_symbol) @descriptor.method @kind.setter))
(#eq? @_attr_writer "attr_writer")
(#transform! ":(.*)" "$1="))
@ -30,7 +33,7 @@
method: (identifier) @_alias_method
arguments: (argument_list
.
(simple_symbol) @descriptor.method))
(simple_symbol) @descriptor.method @kind.methodalias))
(#eq? @_alias_method "alias_method")
(#transform! ":(.*)" "$1"))

View File

@ -1,30 +1,40 @@
;; TODO: Could do @scope.ignore to ignore this as a definition
(mod_item
name: (_) @descriptor.namespace) @scope
name: (_) @descriptor.namespace @kind.namespace) @scope
(trait_item
name: (_) @descriptor.type) @scope
name: (_) @descriptor.type @kind.trait) @scope
(impl_item
trait: [(generic_type type: (type_identifier) @descriptor.type)
(type_identifier) @descriptor.type]?
trait: (generic_type type: (type_identifier) @descriptor.type @kind.trait)) @scope
type: [(generic_type type: (type_identifier) @descriptor.type)
(type_identifier) @descriptor.type]) @scope
(impl_item
trait: (type_identifier) @descriptor.type @kind.trait) @scope
(impl_item
type: (generic_type type: (type_identifier) @descriptor.type @kind.struct)
body: (_) @scope)
(impl_item
type: (type_identifier) @descriptor.type @kind.struct
body: (_) @scope)
;; TODO: @local to stop traversal
(function_signature_item
name: (identifier) @descriptor.method)
name: (identifier) @descriptor.method @kind.function)
(function_item
name: (identifier) @descriptor.method body: (_) @local)
name: (identifier) @descriptor.method @kind.function body: (_) @local)
(struct_item
name: (type_identifier) @descriptor.type) @scope
name: (type_identifier) @descriptor.type @kind.struct) @scope
(field_declaration
name: (_) @descriptor.term) @enclosing
name: (_) @descriptor.term @kind.field) @enclosing
(enum_item name: (_) @descriptor.type) @scope
(enum_variant name: (_) @descriptor.term)
(enum_item name: (_) @descriptor.type @kind.enum) @scope
(enum_variant name: (_) @descriptor.term @kind.enummember)
(const_item name: (_) @descriptor.term @kind.constant)
(static_item name: (_) @descriptor.term @kind.variable)

View File

@ -1,20 +1,20 @@
;;include javascript
(module name: (string (string_fragment) @descriptor.namespace) body: (_) @scope)
(module name: (string (string_fragment) @descriptor.namespace @kind.module) body: (_) @scope)
(interface_declaration name: (_) @descriptor.type body: (_) @scope)
(interface_declaration name: (_) @descriptor.type @kind.interface body: (_) @scope)
(interface_declaration
(object_type
[
(method_signature (property_identifier) @descriptor.method)
(property_signature (property_identifier) @descriptor.term)]))
(method_signature (property_identifier) @descriptor.method @kind.method)
(property_signature (property_identifier) @descriptor.term @kind.property)]))
(class_declaration
(class_body
[(public_field_definition name: (_) @descriptor.term)]))
[(public_field_definition name: (_) @descriptor.term @kind.property)]))
(enum_declaration name: (_) @descriptor.type body: (_) @scope)
(enum_declaration name: (_) @descriptor.type @kind.enum body: (_) @scope)
(enum_declaration
(enum_body
(property_identifier) @descriptor.term))
(property_identifier) @descriptor.term @kind.property))

View File

@ -98,11 +98,12 @@ mod test {
// But most tests should go here and just generate scip snapshots
generate_tags_and_snapshot!(Scip, test_scip_zig, "globals.zig");
generate_tags_and_snapshot!(Scip, test_scip_python, "globals.py");
generate_tags_and_snapshot!(All, test_tags_python, test_scip_python, "globals.py");
generate_tags_and_snapshot!(Scip, test_scip_python_comp, "python-repo-comp.py");
generate_tags_and_snapshot!(All, test_tags_ruby, test_scip_ruby, "ruby-globals.rb");
generate_tags_and_snapshot!(Scip, test_scip_java, "globals.java");
generate_tags_and_snapshot!(Scip, test_scip_typescript, "globals.ts");
generate_tags_and_snapshot!(Scip, test_scip_csharp, "globals.cs");
generate_tags_and_snapshot!(All, test_tags_csharp, test_scip_csharp, "globals.cs");
generate_tags_and_snapshot!(Scip, test_scip_scala, "globals.scala");
generate_tags_and_snapshot!(All, test_tags_kotlin, test_scip_kotlin, "globals.kt");

View File

@ -3,8 +3,8 @@ source: crates/scip-syntax/src/ctags.rs
expression: output
---
{"_type":"program","name":"SCIP Ctags","version":"5.9.0"}
{"_type":"tag","name":"other","path":"main.rs","language":"rust","line":6,"kind":"method","scope":null}
{"_type":"tag","name":"something","path":"main.rs","language":"rust","line":5,"kind":"method","scope":null}
{"_type":"tag","name":"main","path":"main.rs","language":"rust","line":1,"kind":"method","scope":null}
{"_type":"tag","name":"other","path":"main.rs","language":"rust","line":6,"kind":"function","scope":null}
{"_type":"tag","name":"something","path":"main.rs","language":"rust","line":5,"kind":"function","scope":null}
{"_type":"tag","name":"main","path":"main.rs","language":"rust","line":1,"kind":"function","scope":null}
{"_type":"completed","command":"generate-tags"}

View File

@ -11,10 +11,10 @@ expression: dumped
}
type SomethingElse struct {
//^^^^^^^^^^^^^^^^^^^^^^^^^^^ 6:0..9:1 definition scip-ctags scopes_of_go/SomethingElse#
//^^^^^^^^^^^^^^^^^^^^^^^^^^^ 6:0..9:1 definition(Struct) scip-ctags scopes_of_go/SomethingElse#
a int
// ^^^^^ definition scip-ctags scopes_of_go/SomethingElse#a.
// ^^^^^ definition(Field) scip-ctags scopes_of_go/SomethingElse#a.
b string
// ^^^^^^^^ definition scip-ctags scopes_of_go/SomethingElse#b.
// ^^^^^^^^ definition(Field) scip-ctags scopes_of_go/SomethingElse#b.
}

View File

@ -9,35 +9,56 @@ expression: dumped
use scip_treesitter_languages::parsers::BundledParser;
use walkdir::WalkDir;
static LANGUAGE: &str = "Rust";
// ^^^^^^^^ definition scip-ctags LANGUAGE.
const THRESHOLD: i32 = 10;
// ^^^^^^^^^ definition(Constant) scip-ctags THRESHOLD.
trait Yay {}
// ^^^ definition(Trait) scip-ctags Yay#
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
struct Arguments {
// ^^^^^^^^^ definition scip-ctags Arguments#
// ^^^^^^^^^ definition(Struct) scip-ctags Arguments#
/// Root directory to run local navigation over
root_dir: String,
// ^^^^^^^^ definition scip-ctags Arguments#root_dir.
// ^^^^^^^^ definition(Field) scip-ctags Arguments#root_dir.
}
impl Arguments {
// ^^^^^^^^^ definition(Struct) scip-ctags Arguments#
fn parse() {}
// ^^^^^ definition(Function) scip-ctags Arguments#parse().
}
impl Yay for Arguments {
// ^^^ definition(Trait) scip-ctags Yay#
// ^^^^^^^^^ definition(Struct) scip-ctags Yay#Arguments#
fn pog() {}
// ^^^ definition(Function) scip-ctags Yay#Arguments#pog().
}
struct ParseTiming {
// ^^^^^^^^^^^ definition scip-ctags ParseTiming#
// ^^^^^^^^^^^ definition(Struct) scip-ctags ParseTiming#
pub filepath: String,
// ^^^^^^^^ definition scip-ctags ParseTiming#filepath.
// ^^^^^^^^ definition(Field) scip-ctags ParseTiming#filepath.
pub duration: std::time::Duration,
// ^^^^^^^^ definition scip-ctags ParseTiming#duration.
// ^^^^^^^^ definition(Field) scip-ctags ParseTiming#duration.
}
fn parse_files(dir: &Path) -> Vec<ParseTiming> {
// ^^^^^^^^^^^ definition scip-ctags parse_files().
// ^^^^^^^^^^^ definition(Function) scip-ctags parse_files().
// TODO
}
fn measure_parsing() {
// ^^^^^^^^^^^^^^^ definition scip-ctags measure_parsing().
// ^^^^^^^^^^^^^^^ definition(Function) scip-ctags measure_parsing().
// TODO
}
fn main() {
// ^^^^ definition scip-ctags main().
// ^^^^ definition(Function) scip-ctags main().
// TODO
}

View File

@ -20,10 +20,10 @@ expression: dumped
// ^^^^^^^ definition(Function) scip-ctags example/Another().
type MyThing struct{}
// ^^^^^^^ definition scip-ctags example/MyThing#
// ^^^^^^^ definition(Struct) scip-ctags example/MyThing#
func (m *MyThing) DoSomething() {}
// ^^^^^^^^^^^ definition scip-ctags example/MyThing#DoSomething().
// ^^^^^^^^^^^ definition(Method) scip-ctags example/MyThing#DoSomething().
func (m MyThing) DoSomethingElse() {}
// ^^^^^^^^^^^^^^^ definition scip-ctags example/MyThing#DoSomethingElse().
// ^^^^^^^^^^^^^^^ definition(Method) scip-ctags example/MyThing#DoSomethingElse().

View File

@ -3,19 +3,18 @@ source: crates/scip-syntax/src/lib.rs
expression: dumped
---
using System.Collections.Generic;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-ctags `System.Collections.Generic`#
public void SurprisinglyValid(string firstParam) { }
// ^^^^^^^^^^^^^^^^^ definition scip-ctags SurprisinglyValid().
// ^^^^^^^^^^^^^^^^^ definition(Function) scip-ctags SurprisinglyValid().
namespace Longer.Namespace
// ^^^^^^^^^^^^^^^^ definition scip-ctags `Longer.Namespace`/
// ^^^^^^^^^^^^^^^^ definition(Namespace) scip-ctags `Longer.Namespace`/
{
public class Class
// ^^^^^ definition scip-ctags `Longer.Namespace`/Class#
// ^^^^^ definition(Class) scip-ctags `Longer.Namespace`/Class#
{
public int ExplicitGetterSetter
// ^^^^^^^^^^^^^^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#ExplicitGetterSetter.
// ^^^^^^^^^^^^^^^^^^^^ definition(Property) scip-ctags `Longer.Namespace`/Class#ExplicitGetterSetter.
{
get
{
@ -27,104 +26,104 @@ expression: dumped
}
}
private int _val;
// ^^^^ definition scip-ctags `Longer.Namespace`/Class#_val.
// ^^^^ definition(Field) scip-ctags `Longer.Namespace`/Class#_val.
protected virtual int ImplicitGetterSetter
// ^^^^^^^^^^^^^^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#ImplicitGetterSetter.
// ^^^^^^^^^^^^^^^^^^^^ definition(Property) scip-ctags `Longer.Namespace`/Class#ImplicitGetterSetter.
{
get;
set;
}
internal int ImplicitGetterPrivateSetter
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#ImplicitGetterPrivateSetter.
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition(Property) scip-ctags `Longer.Namespace`/Class#ImplicitGetterPrivateSetter.
{
get;
private set;
}
public struct Coords
// ^^^^^^ definition scip-ctags `Longer.Namespace`/Class#Coords#
// ^^^^^^ definition(Struct) scip-ctags `Longer.Namespace`/Class#Coords#
{
public Coords(double x, double y)
// ^^^^^^ definition scip-ctags `Longer.Namespace`/Class#Coords#Coords().
// ^^^^^^ definition(Constructor) scip-ctags `Longer.Namespace`/Class#Coords#Coords().
{
X = x;
Y = y;
}
public double X { get; }
// ^ definition scip-ctags `Longer.Namespace`/Class#Coords#X.
// ^ definition(Property) scip-ctags `Longer.Namespace`/Class#Coords#X.
public double Y { get; }
// ^ definition scip-ctags `Longer.Namespace`/Class#Coords#Y.
// ^ definition(Property) scip-ctags `Longer.Namespace`/Class#Coords#Y.
public override string ToString() => $"({X}, {Y})";
// ^^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#Coords#ToString().
// ^^^^^^^^ definition(Method) scip-ctags `Longer.Namespace`/Class#Coords#ToString().
}
delegate int MyDelegate();
// ^^^^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#MyDelegate().
// ^^^^^^^^^^ definition(Delegate) scip-ctags `Longer.Namespace`/Class#MyDelegate().
public event ChangedEventHandler Changed;
// ^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#Changed.
// ^^^^^^^ definition(Event) scip-ctags `Longer.Namespace`/Class#Changed.
int _speed;
// ^^^^^^ definition scip-ctags `Longer.Namespace`/Class#_speed.
// ^^^^^^ definition(Field) scip-ctags `Longer.Namespace`/Class#_speed.
public string PublicImplicitGetterSetter { get; set; }
// ^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#PublicImplicitGetterSetter.
// ^^^^^^^^^^^^^^^^^^^^^^^^^^ definition(Property) scip-ctags `Longer.Namespace`/Class#PublicImplicitGetterSetter.
public string LambdaFunction => PublicImplicitGetterSetter + " " + _speed + " speed";
// ^^^^^^^^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#LambdaFunction.
// ^^^^^^^^^^^^^^ definition(Property) scip-ctags `Longer.Namespace`/Class#LambdaFunction.
public enum Swag
// ^^^^ definition scip-ctags `Longer.Namespace`/Class#Swag#
// ^^^^ definition(Enum) scip-ctags `Longer.Namespace`/Class#Swag#
{
Shirt,
// ^^^^^ definition scip-ctags `Longer.Namespace`/Class#Swag#Shirt.
// ^^^^^ definition(EnumMember) scip-ctags `Longer.Namespace`/Class#Swag#Shirt.
Sweater,
// ^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#Swag#Sweater.
// ^^^^^^^ definition(EnumMember) scip-ctags `Longer.Namespace`/Class#Swag#Sweater.
Socks = 42,
// ^^^^^ definition scip-ctags `Longer.Namespace`/Class#Swag#Socks.
// ^^^^^ definition(EnumMember) scip-ctags `Longer.Namespace`/Class#Swag#Socks.
Pants
// ^^^^^ definition scip-ctags `Longer.Namespace`/Class#Swag#Pants.
// ^^^^^ definition(EnumMember) scip-ctags `Longer.Namespace`/Class#Swag#Pants.
}
public Swag SourcegraphSwag;
// ^^^^^^^^^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#SourcegraphSwag.
// ^^^^^^^^^^^^^^^ definition(Field) scip-ctags `Longer.Namespace`/Class#SourcegraphSwag.
[Flags]
public enum ZigFeatureSet
// ^^^^^^^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#
// ^^^^^^^^^^^^^ definition(Enum) scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#
{
None = 0,
// ^^^^ definition scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#None.
// ^^^^ definition(EnumMember) scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#None.
Errors = 1,
// ^^^^^^ definition scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#Errors.
// ^^^^^^ definition(EnumMember) scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#Errors.
Comptime = 2,
// ^^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#Comptime.
// ^^^^^^^^ definition(EnumMember) scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#Comptime.
BuildSystem = 4,
// ^^^^^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#BuildSystem.
// ^^^^^^^^^^^ definition(EnumMember) scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#BuildSystem.
CoolCommunity = 8,
// ^^^^^^^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#CoolCommunity.
// ^^^^^^^^^^^^^ definition(EnumMember) scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#CoolCommunity.
FullPackage = Errors | Comptime | BuildSystem | CoolCommunity
// ^^^^^^^^^^^ definition scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#FullPackage.
// ^^^^^^^^^^^ definition(EnumMember) scip-ctags `Longer.Namespace`/Class#ZigFeatureSet#FullPackage.
}
public static void Syntax() {}
// ^^^^^^ definition scip-ctags `Longer.Namespace`/Class#Syntax().
// ^^^^^^ definition(Method) scip-ctags `Longer.Namespace`/Class#Syntax().
}
}
namespace OneClass
// ^^^^^^^^ definition scip-ctags OneClass/
// ^^^^^^^^ definition(Namespace) scip-ctags OneClass/
{
public class TheClass
// ^^^^^^^^ definition scip-ctags OneClass/TheClass#
// ^^^^^^^^ definition(Class) scip-ctags OneClass/TheClass#
{
public Clickable ClickAction { get; set; }
// ^^^^^^^^^^^ definition scip-ctags OneClass/TheClass#ClickAction.
// ^^^^^^^^^^^ definition(Property) scip-ctags OneClass/TheClass#ClickAction.
public string Text { get; set; }
// ^^^^ definition scip-ctags OneClass/TheClass#Text.
// ^^^^ definition(Property) scip-ctags OneClass/TheClass#Text.
}
}

View File

@ -16,7 +16,7 @@ expression: dumped
// Function declaration
function functionDeclaration() {
// ^^^^^^^^^^^^^^^^^^^ definition scip-ctags functionDeclaration().
// ^^^^^^^^^^^^^^^^^^^ definition(Function) scip-ctags functionDeclaration().
return "Hello, I'm a function declaration";
}
@ -34,9 +34,9 @@ expression: dumped
// ES6 class declaration
class ClassDeclaration {
// ^^^^^^^^^^^^^^^^ definition scip-ctags ClassDeclaration#
// ^^^^^^^^^^^^^^^^ definition(Class) scip-ctags ClassDeclaration#
constructor() {
// ^^^^^^^^^^^ definition scip-ctags ClassDeclaration#constructor().
// ^^^^^^^^^^^ definition(Constructor) scip-ctags ClassDeclaration#constructor().
this.message = "Hello, I'm a class declaration";
}
}
@ -45,12 +45,12 @@ expression: dumped
var objectDeclaration = {
// ^^^^^^^^^^^^^^^^^ definition scip-ctags objectDeclaration.
message: "Hello, I'm an object declaration"
// ^^^^^^^ definition scip-ctags objectDeclaration.message.
// ^^^^^^^ definition(Property) scip-ctags objectDeclaration.message.
};
// Object constructor declaration
function ObjectConstructor() {
// ^^^^^^^^^^^^^^^^^ definition scip-ctags ObjectConstructor().
// ^^^^^^^^^^^^^^^^^ definition(Function) scip-ctags ObjectConstructor().
this.message = "Hello, I'm an object constructor";
}
var objectConstructed = new ObjectConstructor();
@ -66,13 +66,13 @@ expression: dumped
// ES6 Generator Function declaration
function* generatorFunction(){
// ^^^^^^^^^^^^^^^^^ definition scip-ctags generatorFunction().
// ^^^^^^^^^^^^^^^^^ definition(Function) scip-ctags generatorFunction().
yield "Hello, I'm a generator function";
}
// ES6 Async Function declaration
async function asyncFunction() {
// ^^^^^^^^^^^^^ definition scip-ctags asyncFunction().
// ^^^^^^^^^^^^^ definition(Function) scip-ctags asyncFunction().
return "Hello, I'm an async function";
}
@ -86,77 +86,77 @@ expression: dumped
// ES6 class declaration
class ExampleClass {
// ^^^^^^^^^^^^ definition scip-ctags ExampleClass#
// ^^^^^^^^^^^^ definition(Class) scip-ctags ExampleClass#
// Private field declaration (ES2020)
#privateField = "Hello, I'm a private field";
// Private method declaration (ES2020)
#privateMethod() {
// ^^^^^^^^^^^^^^ definition scip-ctags ExampleClass#`#privateMethod`().
// ^^^^^^^^^^^^^^ definition(Method) scip-ctags ExampleClass#`#privateMethod`().
return "Hello, I'm a private method";
}
// Class Constructor
constructor(publicField, publicMethodParameter) {
// ^^^^^^^^^^^ definition scip-ctags ExampleClass#constructor().
// ^^^^^^^^^^^ definition(Constructor) scip-ctags ExampleClass#constructor().
this.publicField = publicField; // Public Field
this.publicMethodParameter = publicMethodParameter;
}
// Instance method
instanceMethod() {
// ^^^^^^^^^^^^^^ definition scip-ctags ExampleClass#instanceMethod().
// ^^^^^^^^^^^^^^ definition(Method) scip-ctags ExampleClass#instanceMethod().
return "Hello, I'm an instance method";
}
// Static method
static staticMethod() {
// ^^^^^^^^^^^^ definition scip-ctags ExampleClass#staticMethod().
// ^^^^^^^^^^^^ definition(Method) scip-ctags ExampleClass#staticMethod().
return "Hello, I'm a static method";
}
// Getter method
get retrievedField() {
// ^^^^^^^^^^^^^^ definition scip-ctags ExampleClass#retrievedField().
// ^^^^^^^^^^^^^^ definition(Method) scip-ctags ExampleClass#retrievedField().
return this.publicField;
}
// Setter method
set updatedField(value) {
// ^^^^^^^^^^^^ definition scip-ctags ExampleClass#updatedField().
// ^^^^^^^^^^^^ definition(Method) scip-ctags ExampleClass#updatedField().
this.publicField = value;
}
// Public method using private field and private method
publicMethod() {
// ^^^^^^^^^^^^ definition scip-ctags ExampleClass#publicMethod().
// ^^^^^^^^^^^^ definition(Method) scip-ctags ExampleClass#publicMethod().
return this.#privateMethod() + " " + this.#privateField;
}
// Method using arguments
methodWithArgs(arg1, arg2) {
// ^^^^^^^^^^^^^^ definition scip-ctags ExampleClass#methodWithArgs().
// ^^^^^^^^^^^^^^ definition(Method) scip-ctags ExampleClass#methodWithArgs().
return "Hello, I received " + arg1 + " and " + arg2;
}
// Method using rest parameters
methodWithRestArgs(...args) {
// ^^^^^^^^^^^^^^^^^^ definition scip-ctags ExampleClass#methodWithRestArgs().
// ^^^^^^^^^^^^^^^^^^ definition(Method) scip-ctags ExampleClass#methodWithRestArgs().
return "Hello, I received " + args.join(", ");
}
}
// Prototype methods
function MyClass() {}
// ^^^^^^^ definition scip-ctags MyClass().
// ^^^^^^^ definition(Function) scip-ctags MyClass().
MyClass.prototype.myMethod = function() {};
// Generator function
function* myGeneratorFunction() {}
// ^^^^^^^^^^^^^^^^^^^ definition scip-ctags myGeneratorFunction().
// ^^^^^^^^^^^^^^^^^^^ definition(Function) scip-ctags myGeneratorFunction().
// Async function
async function myAsyncFunction() {}
// ^^^^^^^^^^^^^^^ definition scip-ctags myAsyncFunction().
// ^^^^^^^^^^^^^^^ definition(Function) scip-ctags myAsyncFunction().

View File

@ -2,109 +2,127 @@
source: crates/scip-syntax/src/lib.rs
expression: dumped
---
package org.example
// ^^^^^^^^^^^ definition(Package) scip-ctags `org.example`/
// Top level constant property
const val PI = 3.14
// ^^ definition scip-ctags PI.
// ^^ definition(Constant) scip-ctags `org.example`/PI.
// Top level property with getter
val version: String
// ^^^^^^^ definition scip-ctags version.
// ^^^^^^^ definition(Property) scip-ctags `org.example`/version.
get() = "1.0.0"
// Top level function
fun printHello() {
// ^^^^^^^^^^ definition scip-ctags printHello().
// ^^^^^^^^^^ definition(Method) scip-ctags `org.example`/printHello().
println("Hello, Kotlin!")
}
// Class with properties and methods
class MyKotlinClass {
// ^^^^^^^^^^^^^ definition scip-ctags MyKotlinClass#
// ^^^^^^^^^^^^^ definition(Class) scip-ctags `org.example`/MyKotlinClass#
var prop: String = "property"
// ^^^^ definition scip-ctags MyKotlinClass#prop.
// ^^^^ definition(Property) scip-ctags `org.example`/MyKotlinClass#prop.
fun method() {
// ^^^^^^ definition scip-ctags MyKotlinClass#method().
// ^^^^^^ definition(Method) scip-ctags `org.example`/MyKotlinClass#method().
println("This is a method")
}
}
// Data class
data class User(val name: String, val age: Int)
// ^^^^ definition scip-ctags User#
// ^^^^ definition scip-ctags User#name.
// ^^^ definition scip-ctags User#age.
// ^^^^ definition(Class) scip-ctags `org.example`/User#
// ^^^^ definition(Property) scip-ctags `org.example`/User#name.
// ^^^ definition(Property) scip-ctags `org.example`/User#age.
// Enum class
enum class Days {
// ^^^^ definition scip-ctags Days#
// ^^^^ definition(Enum) scip-ctags `org.example`/Days#
MONDAY,
// ^^^^^^ definition scip-ctags Days#MONDAY.
// ^^^^^^ definition(EnumMember) scip-ctags `org.example`/Days#MONDAY.
TUESDAY,
// ^^^^^^^ definition scip-ctags Days#TUESDAY.
// ^^^^^^^ definition(EnumMember) scip-ctags `org.example`/Days#TUESDAY.
WEDNESDAY,
// ^^^^^^^^^ definition scip-ctags Days#WEDNESDAY.
// ^^^^^^^^^ definition(EnumMember) scip-ctags `org.example`/Days#WEDNESDAY.
THURSDAY,
// ^^^^^^^^ definition scip-ctags Days#THURSDAY.
// ^^^^^^^^ definition(EnumMember) scip-ctags `org.example`/Days#THURSDAY.
FRIDAY,
// ^^^^^^ definition scip-ctags Days#FRIDAY.
// ^^^^^^ definition(EnumMember) scip-ctags `org.example`/Days#FRIDAY.
SATURDAY,
// ^^^^^^^^ definition scip-ctags Days#SATURDAY.
// ^^^^^^^^ definition(EnumMember) scip-ctags `org.example`/Days#SATURDAY.
SUNDAY
// ^^^^^^ definition scip-ctags Days#SUNDAY.
// ^^^^^^ definition(EnumMember) scip-ctags `org.example`/Days#SUNDAY.
}
// Object (singleton)
object MyObject {
// ^^^^^^^^ definition scip-ctags MyObject#
// ^^^^^^^^ definition(Object) scip-ctags `org.example`/MyObject#
val property = "Object property"
// ^^^^^^^^ definition scip-ctags MyObject#property.
// ^^^^^^^^ definition(Property) scip-ctags `org.example`/MyObject#property.
}
// Interface
interface MyInterface {
// ^^^^^^^^^^^ definition scip-ctags MyInterface#
// ^^^^^^^^^^^ definition(Interface) scip-ctags `org.example`/MyInterface#
fun interfaceMethod(): String
// ^^^^^^^^^^^^^^^ definition(Method) scip-ctags `org.example`/MyInterface#interfaceMethod().
}
object SimpleSingleton {
// ^^^^^^^^^^^^^^^ definition(Object) scip-ctags `org.example`/SimpleSingleton#
val answer = 42;
// ^^^^^^ definition(Property) scip-ctags `org.example`/SimpleSingleton#answer.
fun greet(name: String) = "Hello, $name!"
// ^^^^^ definition(Method) scip-ctags `org.example`/SimpleSingleton#greet().
}
// Type alias
typealias UserList = List<User>
// ^^^^^^^^ definition(TypeAlias) scip-ctags `org.example`/UserList#
// Extension function
fun String.print() {
// ^^^^^ definition scip-ctags print().
// ^^^^^ definition(Method) scip-ctags `org.example`/print().
println(this)
}
// Sealed class
sealed class Result {
// ^^^^^^ definition scip-ctags Result#
// ^^^^^^ definition(Class) scip-ctags `org.example`/Result#
data class Success(val message: String) : Result()
// ^^^^^^^ definition scip-ctags Result#Success#
// ^^^^^^^ definition scip-ctags Result#Success#message.
// ^^^^^^^ definition(Class) scip-ctags `org.example`/Result#Success#
// ^^^^^^^ definition(Property) scip-ctags `org.example`/Result#Success#message.
data class Error(val error: Exception) : Result()
// ^^^^^ definition scip-ctags Result#Error#
// ^^^^^ definition scip-ctags Result#Error#error.
// ^^^^^ definition(Class) scip-ctags `org.example`/Result#Error#
// ^^^^^ definition(Property) scip-ctags `org.example`/Result#Error#error.
}
// Inline class
inline class Password(val value: String)
// ^^^^^^^^ definition scip-ctags Password#
// ^^^^^ definition scip-ctags Password#value.
// ^^^^^^^^ definition(Class) scip-ctags `org.example`/Password#
// ^^^^^ definition(Property) scip-ctags `org.example`/Password#value.
// Companion object
class MyClassWithCompanion {
// ^^^^^^^^^^^^^^^^^^^^ definition scip-ctags MyClassWithCompanion#
companion object {
// ^^^^^^^^^^^^^^^^^^^^ definition(Class) scip-ctags `org.example`/MyClassWithCompanion#
companion object ConstantCompanion {
// ^^^^^^^^^^^^^^^^^ definition(Object) scip-ctags `org.example`/MyClassWithCompanion#ConstantCompanion#
const val CONSTANT = "Companion constant"
// ^^^^^^^^ definition scip-ctags MyClassWithCompanion#CONSTANT.
// ^^^^^^^^ definition(Constant) scip-ctags `org.example`/MyClassWithCompanion#ConstantCompanion#CONSTANT.
}
}
fun `Escaped`() {}
// ^^^^^^^^^ definition scip-ctags . . . ``Escaped``().
// ^^^^^^^^^ definition(Method) scip-ctags . . . `org.example`/``Escaped``().
// Multi-variable declaration
val (left, right) = directions()
// ^^^^ definition scip-ctags left.
// ^^^^^ definition scip-ctags right.
// ^^^^ definition(Property) scip-ctags `org.example`/left.
// ^^^^^ definition(Property) scip-ctags `org.example`/right.
// Anonymous function
fun(x: Int, y: Int): Int = x + y

View File

@ -8,16 +8,16 @@ expression: dumped
//^^^^ definition scip-ctags bruh.
class Bruh(object):
// ^^^^ definition scip-ctags Bruh#
// ^^^^ definition(Class) scip-ctags Bruh#
a: int
// ^ definition scip-ctags Bruh#a.
def __init__(self) -> None:
// ^^^^^^^^ definition scip-ctags Bruh#__init__().
// ^^^^^^^^ definition(Method) scip-ctags Bruh#__init__().
pass
def dab():
// ^^^ definition scip-ctags Bruh#dab().
// ^^^ definition(Method) scip-ctags Bruh#dab().
print("yay!")
def more():
print("a function in a function!!")
@ -40,52 +40,52 @@ expression: dumped
async def my_function():
// ^^^^^^^^^^^ definition scip-ctags my_function().
// ^^^^^^^^^^^ definition(Function) scip-ctags my_function().
pass
class SomeAsyncStuffs:
// ^^^^^^^^^^^^^^^ definition scip-ctags SomeAsyncStuffs#
// ^^^^^^^^^^^^^^^ definition(Class) scip-ctags SomeAsyncStuffs#
def __init__(self, obj):
// ^^^^^^^^ definition scip-ctags SomeAsyncStuffs#__init__().
// ^^^^^^^^ definition(Method) scip-ctags SomeAsyncStuffs#__init__().
pass
def __aiter__(self):
// ^^^^^^^^^ definition scip-ctags SomeAsyncStuffs#__aiter__().
// ^^^^^^^^^ definition(Method) scip-ctags SomeAsyncStuffs#__aiter__().
pass
async def __anext__(self):
// ^^^^^^^^^ definition scip-ctags SomeAsyncStuffs#__anext__().
// ^^^^^^^^^ definition(Method) scip-ctags SomeAsyncStuffs#__anext__().
pass
def does_nothing(f):
// ^^^^^^^^^^^^ definition scip-ctags does_nothing().
// ^^^^^^^^^^^^ definition(Function) scip-ctags does_nothing().
return f
def does_nothingwrapper(*args):
// ^^^^^^^^^^^^^^^^^^^ definition scip-ctags does_nothingwrapper().
// ^^^^^^^^^^^^^^^^^^^ definition(Function) scip-ctags does_nothingwrapper().
return does_nothing
@does_nothing
def has_a_name():
// ^^^^^^^^^^ definition scip-ctags has_a_name().
// ^^^^^^^^^^ definition(Function) scip-ctags has_a_name().
pass
@does_nothing
def func02(): pass
// ^^^^^^ definition scip-ctags func02().
// ^^^^^^ definition(Function) scip-ctags func02().
@does_nothing
class ClassWithDecorators(object):
// ^^^^^^^^^^^^^^^^^^^ definition scip-ctags ClassWithDecorators#
// ^^^^^^^^^^^^^^^^^^^ definition(Class) scip-ctags ClassWithDecorators#
@staticmethod
def static_method():
// ^^^^^^^^^^^^^ definition scip-ctags ClassWithDecorators#static_method().
// ^^^^^^^^^^^^^ definition(Method) scip-ctags ClassWithDecorators#static_method().
print("hello")
@classmethod
def class_method(cls):
// ^^^^^^^^^^^^ definition scip-ctags ClassWithDecorators#class_method().
// ^^^^^^^^^^^^ definition(Method) scip-ctags ClassWithDecorators#class_method().
print("hi from %s" % cls.__name__)
@does_nothingwrapper(1, 2, 3)
@ -93,7 +93,7 @@ expression: dumped
@ staticmethod
@does_nothing
def prints_something():
// ^^^^^^^^^^^^^^^^ definition scip-ctags ClassWithDecorators#prints_something().
// ^^^^^^^^^^^^^^^^ definition(Method) scip-ctags ClassWithDecorators#prints_something().
print("something")

View File

@ -3,38 +3,38 @@ source: crates/scip-syntax/src/lib.rs
expression: dumped
---
class MyClass {
// ^^^^^^^ definition scip-ctags MyClass#
// ^^^^^^^ definition(Class) scip-ctags MyClass#
public_field: number
// ^^^^^^^^^^^^ definition scip-ctags MyClass#public_field.
// ^^^^^^^^^^^^ definition(Property) scip-ctags MyClass#public_field.
#private_field: number
// ^^^^^^^^^^^^^^ definition scip-ctags MyClass#`#private_field`.
// ^^^^^^^^^^^^^^ definition(Property) scip-ctags MyClass#`#private_field`.
private also_private_field: number
// ^^^^^^^^^^^^^^^^^^ definition scip-ctags MyClass#also_private_field.
// ^^^^^^^^^^^^^^^^^^ definition(Property) scip-ctags MyClass#also_private_field.
public_method() {}
// ^^^^^^^^^^^^^ definition scip-ctags MyClass#public_method().
// ^^^^^^^^^^^^^ definition(Method) scip-ctags MyClass#public_method().
#private_method() {}
// ^^^^^^^^^^^^^^^ definition scip-ctags MyClass#`#private_method`().
// ^^^^^^^^^^^^^^^ definition(Method) scip-ctags MyClass#`#private_method`().
private also_private_method() {}
// ^^^^^^^^^^^^^^^^^^^ definition scip-ctags MyClass#also_private_method().
// ^^^^^^^^^^^^^^^^^^^ definition(Method) scip-ctags MyClass#also_private_method().
}
interface MyInterface {
// ^^^^^^^^^^^ definition scip-ctags MyInterface#
// ^^^^^^^^^^^ definition(Interface) scip-ctags MyInterface#
bruh: number,
// ^^^^ definition scip-ctags MyInterface#bruh.
// ^^^^ definition(Property) scip-ctags MyInterface#bruh.
sayBruh(): void,
// ^^^^^^^ definition scip-ctags MyInterface#sayBruh().
// ^^^^^^^ definition(Method) scip-ctags MyInterface#sayBruh().
}
enum MyEnum {
// ^^^^^^ definition scip-ctags MyEnum#
// ^^^^^^ definition(Enum) scip-ctags MyEnum#
zig,
// ^^^ definition scip-ctags MyEnum#zig.
// ^^^ definition(Property) scip-ctags MyEnum#zig.
rust,
// ^^^^ definition scip-ctags MyEnum#rust.
// ^^^^ definition(Property) scip-ctags MyEnum#rust.
go,
// ^^ definition scip-ctags MyEnum#go.
// ^^ definition(Property) scip-ctags MyEnum#go.
}
var global1 = 0;
@ -43,7 +43,7 @@ expression: dumped
// ^^^^^^^ definition scip-ctags global2.
function func() {
// ^^^^ definition scip-ctags func().
// ^^^^ definition(Function) scip-ctags func().
var c;
function inAnotherFunc() {
var b;
@ -56,12 +56,12 @@ expression: dumped
var myObject = {
// ^^^^^^^^ definition scip-ctags myObject.
myProperty: "value",
// ^^^^^^^^^^ definition scip-ctags myObject.myProperty.
// ^^^^^^^^^^ definition(Property) scip-ctags myObject.myProperty.
myMethod: function() {},
// ^^^^^^^^ definition scip-ctags myObject.myMethod().
// ^^^^^^^^ definition(Function) scip-ctags myObject.myMethod().
myArrow: () => {},
// ^^^^^^^ definition scip-ctags myObject.myArrow().
// ^^^^^^^ definition(Function) scip-ctags myObject.myArrow().
};

View File

@ -10,40 +10,45 @@ expression: dumped
// Group is a collection of goroutines which return errors that need to be
// coalesced.
type Group struct {
// ^^^^^ definition scip-ctags multierror/Group#
// ^^^^^ definition(Struct) scip-ctags multierror/Group#
mutex sync.Mutex
// ^^^^^ definition scip-ctags multierror/Group#mutex.
// ^^^^^ definition(Field) scip-ctags multierror/Group#mutex.
err *Error
// ^^^ definition scip-ctags multierror/Group#err.
// ^^^ definition(Field) scip-ctags multierror/Group#err.
wg sync.WaitGroup
// ^^ definition scip-ctags multierror/Group#wg.
// ^^ definition(Field) scip-ctags multierror/Group#wg.
nested struct {
// ^^^^^^ definition scip-ctags multierror/Group#nested#
// ^^^^^^ definition(Struct) scip-ctags multierror/Group#nested#
inner bool
// ^^^^^ definition scip-ctags multierror/Group#nested#inner.
// ^^^^^ definition(Field) scip-ctags multierror/Group#nested#inner.
}
innerface interface {
// ^^^^^^^^^ definition scip-ctags multierror/Group#innerface#
// ^^^^^^^^^ definition(Interface) scip-ctags multierror/Group#innerface#
Another() bool
// ^^^^^^^ definition scip-ctags multierror/Group#innerface#Another().
// ^^^^^^^ definition(MethodSpecification) scip-ctags multierror/Group#innerface#Another().
}
}
type SomeInterface interface {
// ^^^^^^^^^^^^^ definition scip-ctags multierror/SomeInterface#
// ^^^^^^^^^^^^^ definition(Interface) scip-ctags multierror/SomeInterface#
Something() bool
// ^^^^^^^^^ definition scip-ctags multierror/SomeInterface#Something().
// ^^^^^^^^^ definition(MethodSpecification) scip-ctags multierror/SomeInterface#Something().
Incredible() int
// ^^^^^^^^^^ definition scip-ctags multierror/SomeInterface#Incredible().
// ^^^^^^^^^^ definition(MethodSpecification) scip-ctags multierror/SomeInterface#Incredible().
}
type TypeDef uint8
// ^^^^^^^ definition(TypeAlias) scip-ctags multierror/TypeDef#
type TypeAlias = uint8
// ^^^^^^^^^ definition(TypeAlias) scip-ctags multierror/TypeAlias#
// Go calls the given function in a new goroutine.
//
// If the function returns an error it is added to the group multierror which
// is returned by Wait.
func (g *Group) Go(f func() error) {
// ^^ definition scip-ctags multierror/Group#Go().
// ^^ definition(Method) scip-ctags multierror/Group#Go().
g.wg.Add(1)
go func() {
@ -60,7 +65,7 @@ expression: dumped
// Wait blocks until all function calls from the Go method have returned, then
// returns the multierror.
func (g *Group) Wait() *Error {
// ^^^^ definition scip-ctags multierror/Group#Wait().
// ^^^^ definition(Method) scip-ctags multierror/Group#Wait().
g.wg.Wait()
g.mutex.Lock()
defer g.mutex.Unlock()

View File

@ -13,15 +13,15 @@ expression: dumped
// constructor being called once. The arguments to the call will be the
// first call to occur. All callers will receive the same return values.
type MemoizedConstructorWithArg[A, T any] struct {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-ctags memo/MemoizedConstructorWithArg#
// ^^^^^^^^^^^^^^^^^^^^^^^^^^ definition(Struct) scip-ctags memo/MemoizedConstructorWithArg#
ctor func(A) (T, error)
// ^^^^ definition scip-ctags memo/MemoizedConstructorWithArg#ctor.
// ^^^^ definition(Field) scip-ctags memo/MemoizedConstructorWithArg#ctor.
value T
// ^^^^^ definition scip-ctags memo/MemoizedConstructorWithArg#value.
// ^^^^^ definition(Field) scip-ctags memo/MemoizedConstructorWithArg#value.
err error
// ^^^ definition scip-ctags memo/MemoizedConstructorWithArg#err.
// ^^^ definition(Field) scip-ctags memo/MemoizedConstructorWithArg#err.
once sync.Once
// ^^^^ definition scip-ctags memo/MemoizedConstructorWithArg#once.
// ^^^^ definition(Field) scip-ctags memo/MemoizedConstructorWithArg#once.
}
// NewMemoizedConstructor memoizes the given constructor
@ -33,8 +33,6 @@ expression: dumped
// Init ensures that the given constructor has been called exactly
// once, then returns the constructor's result value and error.
func (m *MemoizedConstructorWithArg[A, T]) Init(arg A) (T, error) {
// ^^^^ definition scip-ctags memo/T#Init().
// ^^^^ definition scip-ctags memo/A#Init().
m.once.Do(func() { m.value, m.err = m.ctor(arg) })
return m.value, m.err
}

View File

@ -5,12 +5,12 @@ expression: dumped
var myObject = {
// ^^^^^^^^ definition scip-ctags myObject.
myProperty: "value",
// ^^^^^^^^^^ definition scip-ctags myObject.myProperty.
// ^^^^^^^^^^ definition(Property) scip-ctags myObject.myProperty.
myMethod: function() {},
// ^^^^^^^^ definition scip-ctags myObject.myMethod().
// ^^^^^^^^ definition(Function) scip-ctags myObject.myMethod().
myArrow: () => {},
// ^^^^^^^ definition scip-ctags myObject.myArrow().
// ^^^^^^^ definition(Function) scip-ctags myObject.myArrow().
};

View File

@ -25,7 +25,7 @@ expression: dumped
# A custom socket for the sock parameter to RemoteCollector's allows one to
# specify e.g. a TLS socket.
class RemoteCollector:
// ^^^^^^^^^^^^^^^ definition scip-ctags RemoteCollector#
// ^^^^^^^^^^^^^^^ definition(Class) scip-ctags RemoteCollector#
# sock is literally the socket that is used to communicate with the remote
# collector.
sock = None
@ -35,19 +35,19 @@ expression: dumped
// ^^^^^^ definition scip-ctags RemoteCollector#_debug.
def __init__(self, sock=None, debug=False):
// ^^^^^^^^ definition scip-ctags RemoteCollector#__init__().
// ^^^^^^^^ definition(Method) scip-ctags RemoteCollector#__init__().
self.sock = sock
self._debug = debug
def _log(self, *args):
// ^^^^ definition scip-ctags RemoteCollector#_log().
// ^^^^ definition(Method) scip-ctags RemoteCollector#_log().
if self._debug:
print "appdash: %s" % (" ".join(args))
# connect connects the underlying socket to the given address, waiting at
# max for the given timeout before raising an exception.
def connect(self, host="localhost", port=7701, timeout=10):
// ^^^^^^^ definition scip-ctags RemoteCollector#connect().
// ^^^^^^^ definition(Method) scip-ctags RemoteCollector#connect().
# Use the given socket, or create a new one.
if self.sock is None:
self.sock = socket.create_connection((host, port), timeout=timeout)
@ -60,7 +60,7 @@ expression: dumped
# function does not return until all have been sent out or an exception has
# occured (e.g. disconnection).
def collect(self, spanID, *annotations):
// ^^^^^^^ definition scip-ctags RemoteCollector#collect().
// ^^^^^^^ definition(Method) scip-ctags RemoteCollector#collect().
self._log("collecting", str(len(annotations)), "annotations for", str(spanID))
packet = encode._collect(spanID, *annotations)
buf = encode._msg(packet)
@ -74,7 +74,7 @@ expression: dumped
# close closes the underlying socket.
def close(self):
// ^^^^^ definition scip-ctags RemoteCollector#close().
// ^^^^^ definition(Method) scip-ctags RemoteCollector#close().
self.sock.close()
self.sock = None

View File

@ -0,0 +1,101 @@
---
source: crates/scip-syntax/src/lib.rs
expression: dumped
---
SOME_CONSTANT = 2.718
//^^^^^^^^^^^^^ definition(Constant) scip-ctags SOME_CONSTANT.
if true
a = 1
elsif false
b = 2
else
c = 3
end
(1..5).each do |counter|
z = 3
end
for counter in 1..5
y = 10
end
counter = 1
//^^^^^^^ definition scip-ctags counter.
while counter <= 5 do
no = true
counter += 1
end
begin
raise NoMemoryError, 'Z.'
rescue NoMemoryError => exception_variable
puts 'A', exception_variable
rescue RuntimeError => other_exception_variable
puts 'K'
else
puts 'L'
ensure
puts 'O'
end
grade = 42
//^^^^^ definition scip-ctags grade.
case grade
when 0.100
shouldntgetcaptured = true
puts 'you got a grade i guess'
end
module MyModule
// ^^^^^^^^ definition(Module) scip-ctags MyModule/
def self.abc(base)
// ^^^ definition(SingletonMethod) scip-ctags MyModule/abc().
end
class MyClass
// ^^^^^^^ definition(Class) scip-ctags MyModule/MyClass#
def yay
// ^^^ definition(Method) scip-ctags MyModule/MyClass#yay().
end
def self.woo(base)
// ^^^ definition(SingletonMethod) scip-ctags MyModule/MyClass#woo().
end
end
end
class Foo
// ^^^ definition(Class) scip-ctags Foo#
attr_accessor :bar
// ^^^^ definition(Accessor) scip-ctags Foo#`bar=`().
// ^^^^ definition(Accessor) scip-ctags Foo#bar().
attr_reader :baz
// ^^^^ definition(Getter) scip-ctags Foo#baz().
attr_writer :qux
// ^^^^ definition(Setter) scip-ctags Foo#`qux=`().
end
class Aliased
// ^^^^^^^ definition(Class) scip-ctags Aliased#
def bar
// ^^^ definition(Method) scip-ctags Aliased#bar().
end
alias_method :baz, :bar
// ^^^^ definition(MethodAlias) scip-ctags Aliased#baz().
end
class Parental
// ^^^^^^^^ definition(Class) scip-ctags Parental#
def parental_func()
// ^^^^^^^^^^^^^ definition(Method) scip-ctags Parental#parental_func().
end
end
class Composed
// ^^^^^^^^ definition(Class) scip-ctags Composed#
include Parental
end

View File

@ -3,46 +3,49 @@ source: crates/scip-syntax/src/lib.rs
expression: dumped
---
pub trait Tag {
// ^^^ definition scip-ctags Tag#
// ^^^ definition(Trait) scip-ctags Tag#
// This is a pretty big thing
// And some more things here
fn name(&self) -> &str;
// ^^^^ definition scip-ctags Tag#name().
// ^^^^ definition(Function) scip-ctags Tag#name().
}
mod namespace {
// ^^^^^^^^^ definition scip-ctags namespace/
// ^^^^^^^^^ definition(Namespace) scip-ctags namespace/
mod nested {
// ^^^^^^ definition scip-ctags namespace/nested/
// ^^^^^^ definition(Namespace) scip-ctags namespace/nested/
mod even_more_nested {
// ^^^^^^^^^^^^^^^^ definition scip-ctags namespace/nested/even_more_nested/
// ^^^^^^^^^^^^^^^^ definition(Namespace) scip-ctags namespace/nested/even_more_nested/
pub struct CoolStruct {}
// ^^^^^^^^^^ definition scip-ctags namespace/nested/even_more_nested/CoolStruct#
// ^^^^^^^^^^ definition(Struct) scip-ctags namespace/nested/even_more_nested/CoolStruct#
impl Tag for CoolStruct {
// ^^^^^^^^^^ definition scip-ctags namespace/nested/even_more_nested/Tag#CoolStruct#
// ^^^ definition(Trait) scip-ctags namespace/nested/even_more_nested/Tag#
// ^^^^^^^^^^ definition(Struct) scip-ctags namespace/nested/even_more_nested/Tag#CoolStruct#
fn name(&self) -> &str {}
// ^^^^ definition scip-ctags namespace/nested/even_more_nested/Tag#CoolStruct#name().
// ^^^^ definition(Function) scip-ctags namespace/nested/even_more_nested/Tag#CoolStruct#name().
}
}
}
}
fn something() {}
// ^^^^^^^^^ definition scip-ctags something().
// ^^^^^^^^^ definition(Function) scip-ctags something().
impl X for Y {}
// ^ definition scip-ctags X#Y#
// ^ definition(Trait) scip-ctags X#
// ^ definition(Struct) scip-ctags X#Y#
impl<T> X<T> for Y<T<X>> {}
// ^ definition scip-ctags X#Y#
// ^ definition(Trait) scip-ctags X#
// ^ definition(Struct) scip-ctags X#Y#
enum MyEnum {
// ^^^^^^ definition scip-ctags MyEnum#
// ^^^^^^ definition(Enum) scip-ctags MyEnum#
Dog,
// ^^^ definition scip-ctags MyEnum#Dog.
// ^^^ definition(EnumMember) scip-ctags MyEnum#Dog.
Cat(u8),
// ^^^ definition scip-ctags MyEnum#Cat.
// ^^^ definition(EnumMember) scip-ctags MyEnum#Cat.
Bat(String),
// ^^^ definition scip-ctags MyEnum#Bat.
// ^^^ definition(EnumMember) scip-ctags MyEnum#Bat.
}

View File

@ -2,12 +2,18 @@
source: crates/scip-syntax/src/lib.rs
expression: "String::from_utf8_lossy(buf_writer.buffer())"
---
{"_type":"tag","name":"Arguments","path":"ctags-empty-scope.rs","language":"rust","line":10,"kind":"type","scope":null}
{"_type":"tag","name":"root_dir","path":"ctags-empty-scope.rs","language":"rust","line":12,"kind":"variable","scope":"Arguments"}
{"_type":"tag","name":"ParseTiming","path":"ctags-empty-scope.rs","language":"rust","line":15,"kind":"type","scope":null}
{"_type":"tag","name":"duration","path":"ctags-empty-scope.rs","language":"rust","line":17,"kind":"variable","scope":"ParseTiming"}
{"_type":"tag","name":"filepath","path":"ctags-empty-scope.rs","language":"rust","line":16,"kind":"variable","scope":"ParseTiming"}
{"_type":"tag","name":"main","path":"ctags-empty-scope.rs","language":"rust","line":28,"kind":"method","scope":null}
{"_type":"tag","name":"measure_parsing","path":"ctags-empty-scope.rs","language":"rust","line":24,"kind":"method","scope":null}
{"_type":"tag","name":"parse_files","path":"ctags-empty-scope.rs","language":"rust","line":20,"kind":"method","scope":null}
{"_type":"tag","name":"Yay","path":"ctags-empty-scope.rs","language":"rust","line":11,"kind":"trait","scope":null}
{"_type":"tag","name":"Arguments","path":"ctags-empty-scope.rs","language":"rust","line":15,"kind":"struct","scope":null}
{"_type":"tag","name":"root_dir","path":"ctags-empty-scope.rs","language":"rust","line":17,"kind":"field","scope":"Arguments"}
{"_type":"tag","name":"parse","path":"ctags-empty-scope.rs","language":"rust","line":21,"kind":"function","scope":"Arguments"}
{"_type":"tag","name":"Arguments","path":"ctags-empty-scope.rs","language":"rust","line":24,"kind":"struct","scope":"Yay"}
{"_type":"tag","name":"pog","path":"ctags-empty-scope.rs","language":"rust","line":25,"kind":"function","scope":"Yay.Arguments"}
{"_type":"tag","name":"ParseTiming","path":"ctags-empty-scope.rs","language":"rust","line":28,"kind":"struct","scope":null}
{"_type":"tag","name":"duration","path":"ctags-empty-scope.rs","language":"rust","line":30,"kind":"field","scope":"ParseTiming"}
{"_type":"tag","name":"filepath","path":"ctags-empty-scope.rs","language":"rust","line":29,"kind":"field","scope":"ParseTiming"}
{"_type":"tag","name":"main","path":"ctags-empty-scope.rs","language":"rust","line":41,"kind":"function","scope":null}
{"_type":"tag","name":"measure_parsing","path":"ctags-empty-scope.rs","language":"rust","line":37,"kind":"function","scope":null}
{"_type":"tag","name":"parse_files","path":"ctags-empty-scope.rs","language":"rust","line":33,"kind":"function","scope":null}
{"_type":"tag","name":"THRESHOLD","path":"ctags-empty-scope.rs","language":"rust","line":9,"kind":"constant","scope":null}
{"_type":"tag","name":"LANGUAGE","path":"ctags-empty-scope.rs","language":"rust","line":8,"kind":"variable","scope":null}

View File

@ -0,0 +1,39 @@
---
source: crates/scip-syntax/src/lib.rs
expression: "String::from_utf8_lossy(buf_writer.buffer())"
---
{"_type":"tag","name":"Longer.Namespace","path":"globals.cs","language":"c_sharp","line":5,"kind":"namespace","scope":null}
{"_type":"tag","name":"Class","path":"globals.cs","language":"c_sharp","line":7,"kind":"class","scope":"Longer.Namespace"}
{"_type":"tag","name":"Coords","path":"globals.cs","language":"c_sharp","line":34,"kind":"struct","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"ToString","path":"globals.cs","language":"c_sharp","line":45,"kind":"method","scope":"Longer.Namespace.Class.Coords"}
{"_type":"tag","name":"Y","path":"globals.cs","language":"c_sharp","line":43,"kind":"property","scope":"Longer.Namespace.Class.Coords"}
{"_type":"tag","name":"X","path":"globals.cs","language":"c_sharp","line":42,"kind":"property","scope":"Longer.Namespace.Class.Coords"}
{"_type":"tag","name":"Coords","path":"globals.cs","language":"c_sharp","line":36,"kind":"constructor","scope":"Longer.Namespace.Class.Coords"}
{"_type":"tag","name":"Swag","path":"globals.cs","language":"c_sharp","line":57,"kind":"enum","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"Pants","path":"globals.cs","language":"c_sharp","line":62,"kind":"enumMember","scope":"Longer.Namespace.Class.Swag"}
{"_type":"tag","name":"Socks","path":"globals.cs","language":"c_sharp","line":61,"kind":"enumMember","scope":"Longer.Namespace.Class.Swag"}
{"_type":"tag","name":"Sweater","path":"globals.cs","language":"c_sharp","line":60,"kind":"enumMember","scope":"Longer.Namespace.Class.Swag"}
{"_type":"tag","name":"Shirt","path":"globals.cs","language":"c_sharp","line":59,"kind":"enumMember","scope":"Longer.Namespace.Class.Swag"}
{"_type":"tag","name":"ZigFeatureSet","path":"globals.cs","language":"c_sharp","line":67,"kind":"enum","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"FullPackage","path":"globals.cs","language":"c_sharp","line":75,"kind":"enumMember","scope":"Longer.Namespace.Class.ZigFeatureSet"}
{"_type":"tag","name":"CoolCommunity","path":"globals.cs","language":"c_sharp","line":74,"kind":"enumMember","scope":"Longer.Namespace.Class.ZigFeatureSet"}
{"_type":"tag","name":"BuildSystem","path":"globals.cs","language":"c_sharp","line":73,"kind":"enumMember","scope":"Longer.Namespace.Class.ZigFeatureSet"}
{"_type":"tag","name":"Comptime","path":"globals.cs","language":"c_sharp","line":72,"kind":"enumMember","scope":"Longer.Namespace.Class.ZigFeatureSet"}
{"_type":"tag","name":"Errors","path":"globals.cs","language":"c_sharp","line":71,"kind":"enumMember","scope":"Longer.Namespace.Class.ZigFeatureSet"}
{"_type":"tag","name":"None","path":"globals.cs","language":"c_sharp","line":70,"kind":"enumMember","scope":"Longer.Namespace.Class.ZigFeatureSet"}
{"_type":"tag","name":"Syntax","path":"globals.cs","language":"c_sharp","line":78,"kind":"method","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"SourcegraphSwag","path":"globals.cs","language":"c_sharp","line":65,"kind":"field","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"LambdaFunction","path":"globals.cs","language":"c_sharp","line":55,"kind":"property","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"PublicImplicitGetterSetter","path":"globals.cs","language":"c_sharp","line":53,"kind":"property","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"_speed","path":"globals.cs","language":"c_sharp","line":52,"kind":"field","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"Changed","path":"globals.cs","language":"c_sharp","line":50,"kind":"event","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"MyDelegate","path":"globals.cs","language":"c_sharp","line":48,"kind":"delegate","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"ImplicitGetterPrivateSetter","path":"globals.cs","language":"c_sharp","line":28,"kind":"property","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"ImplicitGetterSetter","path":"globals.cs","language":"c_sharp","line":22,"kind":"property","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"_val","path":"globals.cs","language":"c_sharp","line":20,"kind":"field","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"ExplicitGetterSetter","path":"globals.cs","language":"c_sharp","line":9,"kind":"property","scope":"Longer.Namespace.Class"}
{"_type":"tag","name":"OneClass","path":"globals.cs","language":"c_sharp","line":82,"kind":"namespace","scope":null}
{"_type":"tag","name":"TheClass","path":"globals.cs","language":"c_sharp","line":84,"kind":"class","scope":"OneClass"}
{"_type":"tag","name":"Text","path":"globals.cs","language":"c_sharp","line":87,"kind":"property","scope":"OneClass.TheClass"}
{"_type":"tag","name":"ClickAction","path":"globals.cs","language":"c_sharp","line":86,"kind":"property","scope":"OneClass.TheClass"}
{"_type":"tag","name":"SurprisinglyValid","path":"globals.cs","language":"c_sharp","line":3,"kind":"function","scope":null}

View File

@ -2,37 +2,44 @@
source: crates/scip-syntax/src/lib.rs
expression: "String::from_utf8_lossy(buf_writer.buffer())"
---
{"_type":"tag","name":"MyKotlinClass","path":"globals.kt","language":"kotlin","line":14,"kind":"type","scope":null}
{"_type":"tag","name":"method","path":"globals.kt","language":"kotlin","line":17,"kind":"method","scope":"MyKotlinClass"}
{"_type":"tag","name":"prop","path":"globals.kt","language":"kotlin","line":15,"kind":"variable","scope":"MyKotlinClass"}
{"_type":"tag","name":"User","path":"globals.kt","language":"kotlin","line":23,"kind":"type","scope":null}
{"_type":"tag","name":"age","path":"globals.kt","language":"kotlin","line":23,"kind":"variable","scope":"User"}
{"_type":"tag","name":"name","path":"globals.kt","language":"kotlin","line":23,"kind":"variable","scope":"User"}
{"_type":"tag","name":"Days","path":"globals.kt","language":"kotlin","line":26,"kind":"type","scope":null}
{"_type":"tag","name":"SUNDAY","path":"globals.kt","language":"kotlin","line":33,"kind":"variable","scope":"Days"}
{"_type":"tag","name":"SATURDAY","path":"globals.kt","language":"kotlin","line":32,"kind":"variable","scope":"Days"}
{"_type":"tag","name":"FRIDAY","path":"globals.kt","language":"kotlin","line":31,"kind":"variable","scope":"Days"}
{"_type":"tag","name":"THURSDAY","path":"globals.kt","language":"kotlin","line":30,"kind":"variable","scope":"Days"}
{"_type":"tag","name":"WEDNESDAY","path":"globals.kt","language":"kotlin","line":29,"kind":"variable","scope":"Days"}
{"_type":"tag","name":"TUESDAY","path":"globals.kt","language":"kotlin","line":28,"kind":"variable","scope":"Days"}
{"_type":"tag","name":"MONDAY","path":"globals.kt","language":"kotlin","line":27,"kind":"variable","scope":"Days"}
{"_type":"tag","name":"MyObject","path":"globals.kt","language":"kotlin","line":37,"kind":"type","scope":null}
{"_type":"tag","name":"property","path":"globals.kt","language":"kotlin","line":38,"kind":"variable","scope":"MyObject"}
{"_type":"tag","name":"MyInterface","path":"globals.kt","language":"kotlin","line":42,"kind":"type","scope":null}
{"_type":"tag","name":"Result","path":"globals.kt","language":"kotlin","line":55,"kind":"type","scope":null}
{"_type":"tag","name":"Success","path":"globals.kt","language":"kotlin","line":56,"kind":"type","scope":"Result"}
{"_type":"tag","name":"message","path":"globals.kt","language":"kotlin","line":56,"kind":"variable","scope":"Result.Success"}
{"_type":"tag","name":"Error","path":"globals.kt","language":"kotlin","line":57,"kind":"type","scope":"Result"}
{"_type":"tag","name":"error","path":"globals.kt","language":"kotlin","line":57,"kind":"variable","scope":"Result.Error"}
{"_type":"tag","name":"Password","path":"globals.kt","language":"kotlin","line":61,"kind":"type","scope":null}
{"_type":"tag","name":"value","path":"globals.kt","language":"kotlin","line":61,"kind":"variable","scope":"Password"}
{"_type":"tag","name":"MyClassWithCompanion","path":"globals.kt","language":"kotlin","line":64,"kind":"type","scope":null}
{"_type":"tag","name":"CONSTANT","path":"globals.kt","language":"kotlin","line":66,"kind":"variable","scope":"MyClassWithCompanion"}
{"_type":"tag","name":"right","path":"globals.kt","language":"kotlin","line":72,"kind":"variable","scope":null}
{"_type":"tag","name":"left","path":"globals.kt","language":"kotlin","line":72,"kind":"variable","scope":null}
{"_type":"tag","name":"`Escaped`","path":"globals.kt","language":"kotlin","line":70,"kind":"method","scope":null}
{"_type":"tag","name":"print","path":"globals.kt","language":"kotlin","line":50,"kind":"method","scope":null}
{"_type":"tag","name":"printHello","path":"globals.kt","language":"kotlin","line":9,"kind":"method","scope":null}
{"_type":"tag","name":"version","path":"globals.kt","language":"kotlin","line":5,"kind":"variable","scope":null}
{"_type":"tag","name":"PI","path":"globals.kt","language":"kotlin","line":2,"kind":"variable","scope":null}
{"_type":"tag","name":"org.example","path":"globals.kt","language":"kotlin","line":1,"kind":"package","scope":null}
{"_type":"tag","name":"MyKotlinClass","path":"globals.kt","language":"kotlin","line":16,"kind":"class","scope":"org.example"}
{"_type":"tag","name":"method","path":"globals.kt","language":"kotlin","line":19,"kind":"method","scope":"org.example.MyKotlinClass"}
{"_type":"tag","name":"prop","path":"globals.kt","language":"kotlin","line":17,"kind":"property","scope":"org.example.MyKotlinClass"}
{"_type":"tag","name":"User","path":"globals.kt","language":"kotlin","line":25,"kind":"class","scope":"org.example"}
{"_type":"tag","name":"age","path":"globals.kt","language":"kotlin","line":25,"kind":"property","scope":"org.example.User"}
{"_type":"tag","name":"name","path":"globals.kt","language":"kotlin","line":25,"kind":"property","scope":"org.example.User"}
{"_type":"tag","name":"Days","path":"globals.kt","language":"kotlin","line":28,"kind":"enum","scope":"org.example"}
{"_type":"tag","name":"SUNDAY","path":"globals.kt","language":"kotlin","line":35,"kind":"enumMember","scope":"org.example.Days"}
{"_type":"tag","name":"SATURDAY","path":"globals.kt","language":"kotlin","line":34,"kind":"enumMember","scope":"org.example.Days"}
{"_type":"tag","name":"FRIDAY","path":"globals.kt","language":"kotlin","line":33,"kind":"enumMember","scope":"org.example.Days"}
{"_type":"tag","name":"THURSDAY","path":"globals.kt","language":"kotlin","line":32,"kind":"enumMember","scope":"org.example.Days"}
{"_type":"tag","name":"WEDNESDAY","path":"globals.kt","language":"kotlin","line":31,"kind":"enumMember","scope":"org.example.Days"}
{"_type":"tag","name":"TUESDAY","path":"globals.kt","language":"kotlin","line":30,"kind":"enumMember","scope":"org.example.Days"}
{"_type":"tag","name":"MONDAY","path":"globals.kt","language":"kotlin","line":29,"kind":"enumMember","scope":"org.example.Days"}
{"_type":"tag","name":"MyObject","path":"globals.kt","language":"kotlin","line":39,"kind":"object","scope":"org.example"}
{"_type":"tag","name":"property","path":"globals.kt","language":"kotlin","line":40,"kind":"property","scope":"org.example.MyObject"}
{"_type":"tag","name":"MyInterface","path":"globals.kt","language":"kotlin","line":44,"kind":"interface","scope":"org.example"}
{"_type":"tag","name":"interfaceMethod","path":"globals.kt","language":"kotlin","line":45,"kind":"method","scope":"org.example.MyInterface"}
{"_type":"tag","name":"SimpleSingleton","path":"globals.kt","language":"kotlin","line":48,"kind":"object","scope":"org.example"}
{"_type":"tag","name":"greet","path":"globals.kt","language":"kotlin","line":50,"kind":"method","scope":"org.example.SimpleSingleton"}
{"_type":"tag","name":"answer","path":"globals.kt","language":"kotlin","line":49,"kind":"property","scope":"org.example.SimpleSingleton"}
{"_type":"tag","name":"Result","path":"globals.kt","language":"kotlin","line":62,"kind":"class","scope":"org.example"}
{"_type":"tag","name":"Success","path":"globals.kt","language":"kotlin","line":63,"kind":"class","scope":"org.example.Result"}
{"_type":"tag","name":"message","path":"globals.kt","language":"kotlin","line":63,"kind":"property","scope":"org.example.Result.Success"}
{"_type":"tag","name":"Error","path":"globals.kt","language":"kotlin","line":64,"kind":"class","scope":"org.example.Result"}
{"_type":"tag","name":"error","path":"globals.kt","language":"kotlin","line":64,"kind":"property","scope":"org.example.Result.Error"}
{"_type":"tag","name":"Password","path":"globals.kt","language":"kotlin","line":68,"kind":"class","scope":"org.example"}
{"_type":"tag","name":"value","path":"globals.kt","language":"kotlin","line":68,"kind":"property","scope":"org.example.Password"}
{"_type":"tag","name":"MyClassWithCompanion","path":"globals.kt","language":"kotlin","line":71,"kind":"class","scope":"org.example"}
{"_type":"tag","name":"ConstantCompanion","path":"globals.kt","language":"kotlin","line":72,"kind":"object","scope":"org.example.MyClassWithCompanion"}
{"_type":"tag","name":"CONSTANT","path":"globals.kt","language":"kotlin","line":73,"kind":"constant","scope":"org.example.MyClassWithCompanion.ConstantCompanion"}
{"_type":"tag","name":"right","path":"globals.kt","language":"kotlin","line":80,"kind":"property","scope":"org.example"}
{"_type":"tag","name":"left","path":"globals.kt","language":"kotlin","line":80,"kind":"property","scope":"org.example"}
{"_type":"tag","name":"`Escaped`","path":"globals.kt","language":"kotlin","line":77,"kind":"method","scope":"org.example"}
{"_type":"tag","name":"print","path":"globals.kt","language":"kotlin","line":57,"kind":"method","scope":"org.example"}
{"_type":"tag","name":"UserList","path":"globals.kt","language":"kotlin","line":54,"kind":"typeAlias","scope":"org.example"}
{"_type":"tag","name":"printHello","path":"globals.kt","language":"kotlin","line":11,"kind":"method","scope":"org.example"}
{"_type":"tag","name":"version","path":"globals.kt","language":"kotlin","line":7,"kind":"property","scope":"org.example"}
{"_type":"tag","name":"PI","path":"globals.kt","language":"kotlin","line":4,"kind":"constant","scope":"org.example"}

View File

@ -0,0 +1,28 @@
---
source: crates/scip-syntax/src/lib.rs
expression: "String::from_utf8_lossy(buf_writer.buffer())"
---
{"_type":"tag","name":"Bruh","path":"globals.py","language":"python","line":6,"kind":"class","scope":null}
{"_type":"tag","name":"dab","path":"globals.py","language":"python","line":11,"kind":"method","scope":"Bruh"}
{"_type":"tag","name":"__init__","path":"globals.py","language":"python","line":8,"kind":"method","scope":"Bruh"}
{"_type":"tag","name":"a","path":"globals.py","language":"python","line":6,"kind":"variable","scope":"Bruh"}
{"_type":"tag","name":"SomeAsyncStuffs","path":"globals.py","language":"python","line":37,"kind":"class","scope":null}
{"_type":"tag","name":"__anext__","path":"globals.py","language":"python","line":43,"kind":"method","scope":"SomeAsyncStuffs"}
{"_type":"tag","name":"__aiter__","path":"globals.py","language":"python","line":40,"kind":"method","scope":"SomeAsyncStuffs"}
{"_type":"tag","name":"__init__","path":"globals.py","language":"python","line":37,"kind":"method","scope":"SomeAsyncStuffs"}
{"_type":"tag","name":"ClassWithDecorators","path":"globals.py","language":"python","line":61,"kind":"class","scope":null}
{"_type":"tag","name":"prints_something","path":"globals.py","language":"python","line":73,"kind":"method","scope":"ClassWithDecorators"}
{"_type":"tag","name":"class_method","path":"globals.py","language":"python","line":66,"kind":"method","scope":"ClassWithDecorators"}
{"_type":"tag","name":"static_method","path":"globals.py","language":"python","line":62,"kind":"method","scope":"ClassWithDecorators"}
{"_type":"tag","name":"bar","path":"globals.py","language":"python","line":80,"kind":"variable","scope":null}
{"_type":"tag","name":"foo","path":"globals.py","language":"python","line":80,"kind":"variable","scope":null}
{"_type":"tag","name":"baz","path":"globals.py","language":"python","line":77,"kind":"variable","scope":null}
{"_type":"tag","name":"bar","path":"globals.py","language":"python","line":77,"kind":"variable","scope":null}
{"_type":"tag","name":"foo","path":"globals.py","language":"python","line":77,"kind":"variable","scope":null}
{"_type":"tag","name":"func02","path":"globals.py","language":"python","line":57,"kind":"function","scope":null}
{"_type":"tag","name":"has_a_name","path":"globals.py","language":"python","line":53,"kind":"function","scope":null}
{"_type":"tag","name":"does_nothingwrapper","path":"globals.py","language":"python","line":49,"kind":"function","scope":null}
{"_type":"tag","name":"does_nothing","path":"globals.py","language":"python","line":46,"kind":"function","scope":null}
{"_type":"tag","name":"my_function","path":"globals.py","language":"python","line":32,"kind":"function","scope":null}
{"_type":"tag","name":"should_show_ifs","path":"globals.py","language":"python","line":19,"kind":"variable","scope":null}
{"_type":"tag","name":"bruh","path":"globals.py","language":"python","line":3,"kind":"variable","scope":null}

View File

@ -3,20 +3,21 @@ source: crates/scip-syntax/src/lib.rs
expression: "String::from_utf8_lossy(buf_writer.buffer())"
---
{"_type":"tag","name":"multierror","path":"go-globals.go","language":"go","line":1,"kind":"package","scope":null}
{"_type":"tag","name":"Group","path":"go-globals.go","language":"go","line":7,"kind":"type","scope":"multierror"}
{"_type":"tag","name":"nested","path":"go-globals.go","language":"go","line":11,"kind":"type","scope":"multierror.Group"}
{"_type":"tag","name":"inner","path":"go-globals.go","language":"go","line":12,"kind":"variable","scope":"multierror.Group.nested"}
{"_type":"tag","name":"innerface","path":"go-globals.go","language":"go","line":15,"kind":"type","scope":"multierror.Group"}
{"_type":"tag","name":"Another","path":"go-globals.go","language":"go","line":16,"kind":"method","scope":"multierror.Group.innerface"}
{"_type":"tag","name":"wg","path":"go-globals.go","language":"go","line":10,"kind":"variable","scope":"multierror.Group"}
{"_type":"tag","name":"err","path":"go-globals.go","language":"go","line":9,"kind":"variable","scope":"multierror.Group"}
{"_type":"tag","name":"mutex","path":"go-globals.go","language":"go","line":8,"kind":"variable","scope":"multierror.Group"}
{"_type":"tag","name":"SomeInterface","path":"go-globals.go","language":"go","line":20,"kind":"type","scope":"multierror"}
{"_type":"tag","name":"Incredible","path":"go-globals.go","language":"go","line":22,"kind":"method","scope":"multierror.SomeInterface"}
{"_type":"tag","name":"Something","path":"go-globals.go","language":"go","line":21,"kind":"method","scope":"multierror.SomeInterface"}
{"_type":"tag","name":"RegularFunc","path":"go-globals.go","language":"go","line":57,"kind":"function","scope":"multierror"}
{"_type":"tag","name":"fileIdx","path":"go-globals.go","language":"go","line":54,"kind":"variable","scope":"multierror"}
{"_type":"tag","name":"diffPath","path":"go-globals.go","language":"go","line":53,"kind":"variable","scope":"multierror"}
{"_type":"tag","name":"Wait","path":"go-globals.go","language":"go","line":45,"kind":"method","scope":"multierror.Group"}
{"_type":"tag","name":"Go","path":"go-globals.go","language":"go","line":29,"kind":"method","scope":"multierror.Group"}
{"_type":"tag","name":"Group","path":"go-globals.go","language":"go","line":7,"kind":"struct","scope":"multierror"}
{"_type":"tag","name":"nested","path":"go-globals.go","language":"go","line":11,"kind":"struct","scope":"multierror.Group"}
{"_type":"tag","name":"inner","path":"go-globals.go","language":"go","line":12,"kind":"field","scope":"multierror.Group.nested"}
{"_type":"tag","name":"innerface","path":"go-globals.go","language":"go","line":15,"kind":"interface","scope":"multierror.Group"}
{"_type":"tag","name":"Another","path":"go-globals.go","language":"go","line":16,"kind":"methodSpec","scope":"multierror.Group.innerface"}
{"_type":"tag","name":"wg","path":"go-globals.go","language":"go","line":10,"kind":"field","scope":"multierror.Group"}
{"_type":"tag","name":"err","path":"go-globals.go","language":"go","line":9,"kind":"field","scope":"multierror.Group"}
{"_type":"tag","name":"mutex","path":"go-globals.go","language":"go","line":8,"kind":"field","scope":"multierror.Group"}
{"_type":"tag","name":"SomeInterface","path":"go-globals.go","language":"go","line":20,"kind":"interface","scope":"multierror"}
{"_type":"tag","name":"Incredible","path":"go-globals.go","language":"go","line":22,"kind":"methodSpec","scope":"multierror.SomeInterface"}
{"_type":"tag","name":"Something","path":"go-globals.go","language":"go","line":21,"kind":"methodSpec","scope":"multierror.SomeInterface"}
{"_type":"tag","name":"RegularFunc","path":"go-globals.go","language":"go","line":60,"kind":"function","scope":"multierror"}
{"_type":"tag","name":"fileIdx","path":"go-globals.go","language":"go","line":57,"kind":"variable","scope":"multierror"}
{"_type":"tag","name":"diffPath","path":"go-globals.go","language":"go","line":56,"kind":"variable","scope":"multierror"}
{"_type":"tag","name":"Wait","path":"go-globals.go","language":"go","line":48,"kind":"method","scope":"multierror.Group"}
{"_type":"tag","name":"Go","path":"go-globals.go","language":"go","line":32,"kind":"method","scope":"multierror.Group"}
{"_type":"tag","name":"TypeAlias","path":"go-globals.go","language":"go","line":26,"kind":"typeAlias","scope":"multierror"}
{"_type":"tag","name":"TypeDef","path":"go-globals.go","language":"go","line":25,"kind":"typeAlias","scope":"multierror"}

View File

@ -0,0 +1,23 @@
---
source: crates/scip-syntax/src/lib.rs
expression: "String::from_utf8_lossy(buf_writer.buffer())"
---
{"_type":"tag","name":"MyModule","path":"ruby-globals.rb","language":"ruby","line":44,"kind":"module","scope":null}
{"_type":"tag","name":"MyClass","path":"ruby-globals.rb","language":"ruby","line":48,"kind":"class","scope":"MyModule"}
{"_type":"tag","name":"woo","path":"ruby-globals.rb","language":"ruby","line":52,"kind":"singletonMethod","scope":"MyModule.MyClass"}
{"_type":"tag","name":"yay","path":"ruby-globals.rb","language":"ruby","line":49,"kind":"method","scope":"MyModule.MyClass"}
{"_type":"tag","name":"abc","path":"ruby-globals.rb","language":"ruby","line":45,"kind":"singletonMethod","scope":"MyModule"}
{"_type":"tag","name":"Foo","path":"ruby-globals.rb","language":"ruby","line":57,"kind":"class","scope":null}
{"_type":"tag","name":"qux=","path":"ruby-globals.rb","language":"ruby","line":60,"kind":"setter","scope":"Foo"}
{"_type":"tag","name":"baz","path":"ruby-globals.rb","language":"ruby","line":59,"kind":"getter","scope":"Foo"}
{"_type":"tag","name":"bar=","path":"ruby-globals.rb","language":"ruby","line":58,"kind":"accessor","scope":"Foo"}
{"_type":"tag","name":"bar","path":"ruby-globals.rb","language":"ruby","line":58,"kind":"accessor","scope":"Foo"}
{"_type":"tag","name":"Aliased","path":"ruby-globals.rb","language":"ruby","line":63,"kind":"class","scope":null}
{"_type":"tag","name":"baz","path":"ruby-globals.rb","language":"ruby","line":67,"kind":"methodAlias","scope":"Aliased"}
{"_type":"tag","name":"bar","path":"ruby-globals.rb","language":"ruby","line":64,"kind":"method","scope":"Aliased"}
{"_type":"tag","name":"Parental","path":"ruby-globals.rb","language":"ruby","line":70,"kind":"class","scope":null}
{"_type":"tag","name":"parental_func","path":"ruby-globals.rb","language":"ruby","line":71,"kind":"method","scope":"Parental"}
{"_type":"tag","name":"Composed","path":"ruby-globals.rb","language":"ruby","line":75,"kind":"class","scope":null}
{"_type":"tag","name":"grade","path":"ruby-globals.rb","language":"ruby","line":37,"kind":"variable","scope":null}
{"_type":"tag","name":"counter","path":"ruby-globals.rb","language":"ruby","line":19,"kind":"variable","scope":null}
{"_type":"tag","name":"SOME_CONSTANT","path":"ruby-globals.rb","language":"ruby","line":1,"kind":"constant","scope":null}

View File

@ -21,9 +21,32 @@ pub fn captures_to_kind(kind: &Option<&String>) -> symbol_information::Kind {
use symbol_information::Kind::*;
kind.map_or(UnspecifiedKind, |kind| match kind.as_str() {
"kind.accessor" => Accessor,
"kind.class" => Class,
"kind.constant" => Constant,
"kind.package" => Package,
"kind.constructor" => Constructor,
"kind.delegate" => Delegate,
"kind.enum" => Enum,
"kind.enummember" => EnumMember,
"kind.event" => Event,
"kind.field" => Field,
"kind.function" => Function,
"kind.getter" => Getter,
"kind.interface" => Interface,
"kind.method" => Method,
"kind.methodalias" => MethodAlias,
"kind.methodspec" => MethodSpecification,
"kind.module" => Module,
"kind.namespace" => Namespace,
"kind.object" => Object,
"kind.package" => Package,
"kind.property" => Property,
"kind.setter" => Setter,
"kind.singletonmethod" => SingletonMethod,
"kind.struct" => Struct,
"kind.typealias" => TypeAlias,
"kind.trait" => Trait,
// "kind.implementation" => Implementation, TODO
_ => UnspecifiedKind,
})
}
@ -32,9 +55,32 @@ pub fn symbol_kind_to_ctags_kind(kind: &symbol_information::Kind) -> Option<&'st
use symbol_information::Kind::*;
match kind {
Accessor => Some("accessor"),
Class => Some("class"),
Constant => Some("constant"),
Package => Some("package"),
Constructor => Some("constructor"),
Delegate => Some("delegate"),
Enum => Some("enum"),
EnumMember => Some("enumMember"),
Event => Some("event"),
Field => Some("field"),
Function => Some("function"),
Getter => Some("getter"),
Interface => Some("interface"),
Method => Some("method"),
MethodAlias => Some("methodAlias"),
MethodSpecification => Some("methodSpec"),
Module => Some("module"),
Namespace => Some("namespace"),
Object => Some("object"),
Package => Some("package"),
Property => Some("property"),
Setter => Some("setter"),
SingletonMethod => Some("singletonMethod"),
Struct => Some("struct"),
TypeAlias => Some("typeAlias"),
Trait => Some("trait"),
// Implementation => Some("implementation"), TODO
_ => None,
}
}

View File

@ -5,6 +5,11 @@ use scip_syntax::locals::parse_tree;
use scip_treesitter_languages::parsers::BundledParser;
use walkdir::WalkDir;
static LANGUAGE: &str = "Rust";
const THRESHOLD: i32 = 10;
trait Yay {}
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
struct Arguments {
@ -12,6 +17,14 @@ struct Arguments {
root_dir: String,
}
impl Arguments {
fn parse() {}
}
impl Yay for Arguments {
fn pog() {}
}
struct ParseTiming {
pub filepath: String,
pub duration: std::time::Duration,

View File

@ -1,3 +1,5 @@
package org.example
// Top level constant property
const val PI = 3.14
@ -43,6 +45,11 @@ interface MyInterface {
fun interfaceMethod(): String
}
object SimpleSingleton {
val answer = 42;
fun greet(name: String) = "Hello, $name!"
}
// Type alias
typealias UserList = List<User>
@ -62,11 +69,15 @@ inline class Password(val value: String)
// Companion object
class MyClassWithCompanion {
companion object {
companion object ConstantCompanion {
const val CONSTANT = "Companion constant"
}
}
fun `Escaped`() {}
// Multi-variable declaration
val (left, right) = directions()
// Anonymous function
fun(x: Int, y: Int): Int = x + y

View File

@ -22,6 +22,9 @@ type SomeInterface interface {
Incredible() int
}
type TypeDef uint8
type TypeAlias = uint8
// Go calls the given function in a new goroutine.
//
// If the function returns an error it is added to the group multierror which

View File

@ -1,3 +1,5 @@
SOME_CONSTANT = 2.718
if true
a = 1
elsif false

View File

@ -18,7 +18,7 @@ tree-sitter-highlight.workspace = true
tree-sitter-c = "0.20.2"
tree-sitter-c-sharp = "0.20.0"
tree-sitter-cpp = "0.20.3"
tree-sitter-go = "0.19.1"
tree-sitter-go = "0.20.0"
tree-sitter-java = "0.20.0"
tree-sitter-javascript = "0.20.0"
tree-sitter-scala = "0.20.1"

View File

@ -136,10 +136,8 @@
(package_identifier) @variable.module
(type_identifier) @type
(keyed_element . (field_identifier) @identifier.attribute)
(keyed_element . (literal_element (identifier) @identifier.attribute))
((identifier) @constant (#match? @constant "^[A-Z][A-Z\\d_]+$"))
((identifier) @constant (#eq? @constant "_"))
(identifier) @variable
(field_identifier) @identifier.property

View File

@ -1,6 +1,5 @@
---
source: crates/sg-syntax/src/sg_treesitter.rs
assertion_line: 362
expression: "snapshot_treesitter_syntax_kinds(&document, &contents)"
---
package main
@ -313,9 +312,9 @@ expression: "snapshot_treesitter_syntax_kinds(&document, &contents)"
func Min[T Comparable](a, b T) T {
//^^^^ Keyword
// ^^^ Identifier
// ^ Identifier
// ^^^^^^^^^^ IdentifierFunction
// ^^^ IdentifierFunction
// ^ IdentifierParameter
// ^^^^^^^^^^ IdentifierType
// ^ IdentifierParameter
// ^ IdentifierParameter
// ^ IdentifierType
@ -340,16 +339,16 @@ expression: "snapshot_treesitter_syntax_kinds(&document, &contents)"
fmt.Println(Min[int](5, 10)) // 5
// ^^^ Identifier
// ^^^^^^^ IdentifierFunction
// ^^^ Identifier
// ^^^ Identifier
// ^^^ IdentifierFunction
// ^^^ IdentifierBuiltinType
// ^ NumericLiteral
// ^^ NumericLiteral
// ^^^^ Comment
fmt.Println(Min[string]("a", "b")) // "a"
// ^^^ Identifier
// ^^^^^^^ IdentifierFunction
// ^^^ Identifier
// ^^^^^^ Identifier
// ^^^ IdentifierFunction
// ^^^^^^ IdentifierBuiltinType
// ^^^ StringLiteral
// ^^^ StringLiteral
// ^^^^^^ Comment