Skip to content
This repository was archived by the owner on Mar 1, 2019. It is now read-only.

Commit cddf398

Browse files
authored
Merge pull request #92 from DSpeckhals/type-tests
Add type tests
2 parents e783b5b + 588ccf6 commit cddf398

File tree

3 files changed

+65
-29
lines changed

3 files changed

+65
-29
lines changed

src/test/mod.rs

+44-28
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ fn test_hello() {
196196
let hello_def = &defs[0];
197197
assert_eq!(hello_def.name, "print_hello");
198198
assert_eq!(hello_def.kind, DefKind::Function);
199-
assert_eq!(hello_def.span.range.row_start.0 , 0);
199+
assert_eq!(hello_def.span.range.row_start.0, 0);
200200

201201
let ids = host.search_for_id("main").unwrap();
202202
assert_eq!(ids.len(), 1);
@@ -217,7 +217,7 @@ fn test_hello() {
217217
let main_def = &defs[0];
218218
assert_eq!(main_def.name, "main");
219219
assert_eq!(main_def.kind, DefKind::Function);
220-
assert_eq!(main_def.span.range.row_start.0 , 5);
220+
assert_eq!(main_def.span.range.row_start.0, 5);
221221

222222
let ids = host.search_for_id("name").unwrap();
223223
assert_eq!(ids.len(), 1);
@@ -242,7 +242,7 @@ fn test_hello() {
242242
let name_def = &defs[0];
243243
assert_eq!(name_def.name, "name");
244244
assert_eq!(name_def.kind, DefKind::Local);
245-
assert_eq!(name_def.span.range.row_start.0 , 1);
245+
assert_eq!(name_def.span.range.row_start.0, 1);
246246
}
247247

248248
// TODO
@@ -251,33 +251,49 @@ fn test_hello() {
251251

252252
#[test]
253253
fn test_types() {
254-
// TODO test unit structs, structs with fields, enums, aliases, traits, etc.
254+
fn assert_type(
255+
host: &AnalysisHost<TestAnalysisLoader>,
256+
name: &str,
257+
def_kind: DefKind,
258+
expect_lines: &[u32],
259+
) {
260+
let ids = host.search_for_id(name).unwrap();
261+
println!("name: {}", name);
262+
assert_eq!(ids.len(), 1);
263+
264+
let id = ids[0];
265+
let def = host.get_def(id).unwrap();
266+
assert_eq!(def.name, name);
267+
assert_eq!(def.kind, def_kind);
268+
269+
let refs = host.find_all_refs_by_id(id).unwrap();
270+
assert_eq!(refs.len(), expect_lines.len());
271+
println!("{:?}", refs);
272+
273+
for (i, start) in expect_lines.iter().enumerate() {
274+
assert_eq!(refs[i].file, Path::new("test_data/types/src/main.rs"));
275+
assert_eq!(refs[i].range.row_start.0 + 1, *start);
276+
}
277+
}
278+
255279
let host = AnalysisHost::new_with_loader(TestAnalysisLoader::new(
256280
Path::new("test_data/types/save-analysis").to_owned(),
257281
));
258-
host.reload(
259-
Path::new("test_data/types"),
260-
Path::new("test_data/types"),
261-
).unwrap();
282+
host.reload(Path::new("test_data/types"), Path::new("test_data/types"))
283+
.unwrap();
262284

263-
let ids = host.search_for_id("Foo").unwrap();
264-
assert_eq!(ids.len(), 1);
265-
let id = ids[0];
266-
let def = host.get_def(id).unwrap();
267-
assert_eq!(def.name, "Foo");
268-
assert_eq!(def.kind, DefKind::Struct);
269-
270-
let refs = host.find_all_refs_by_id(id).unwrap();
271-
println!("{:?}", refs);
272-
assert_eq!(refs.len(), 5);
273-
assert_eq!(refs[0].file, Path::new("test_data/types/src/main.rs"));
274-
assert_eq!(refs[0].range.row_start.0, 0);
275-
assert_eq!(refs[1].file, Path::new("test_data/types/src/main.rs"));
276-
assert_eq!(refs[1].range.row_start.0, 5);
277-
assert_eq!(refs[2].file, Path::new("test_data/types/src/main.rs"));
278-
assert_eq!(refs[2].range.row_start.0, 6);
279-
assert_eq!(refs[3].file, Path::new("test_data/types/src/main.rs"));
280-
assert_eq!(refs[3].range.row_start.0, 9);
281-
assert_eq!(refs[4].file, Path::new("test_data/types/src/main.rs"));
282-
assert_eq!(refs[4].range.row_start.0, 9);
285+
assert_type(&host, "Foo", DefKind::Struct, &[1, 6, 7, 10, 10]);
286+
assert_type(&host, "f", DefKind::Field, &[2, 6]);
287+
assert_type(&host, "main", DefKind::Function, &[5]);
288+
assert_type(&host, "test_binding", DefKind::Local, &[11]);
289+
assert_type(&host, "TEST_CONST", DefKind::Const, &[12]);
290+
assert_type(&host, "TEST_STATIC", DefKind::Static, &[13]);
291+
assert_type(&host, "test_module", DefKind::Mod, &[17]);
292+
assert_type(&host, "TestType", DefKind::Type, &[18]);
293+
assert_type(&host, "TestTrait", DefKind::Trait, &[25]);
294+
assert_type(&host, "test_method", DefKind::Method, &[26]);
295+
assert_type(&host, "FooEnum", DefKind::Enum, &[29]);
296+
// TODO: TupleVariant and StructVariant DefKind when rustc uses rls-data 0.11
297+
assert_type(&host, "TupleVariant", DefKind::Tuple, &[30]);
298+
assert_type(&host, "StructVariant", DefKind::Struct, &[31]);
283299
}
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"config":{"output_file":null,"full_docs":false,"pub_only":false,"distro_crate":false,"signatures":false,"borrow_data":false},"prelude":{"crate_name":"types","crate_root":"src","external_crates":[{"name":"panic_unwind","num":11,"file_name":"/home/jbushart/projects/rls-analysis/test_data/types/src/main.rs"},{"name":"unwind","num":8,"file_name":"/home/jbushart/projects/rls-analysis/test_data/types/src/main.rs"},{"name":"std_unicode","num":5,"file_name":"/home/jbushart/projects/rls-analysis/test_data/types/src/main.rs"},{"name":"core","num":2,"file_name":"/home/jbushart/projects/rls-analysis/test_data/types/src/main.rs"},{"name":"alloc_jemalloc","num":10,"file_name":"/home/jbushart/projects/rls-analysis/test_data/types/src/main.rs"},{"name":"libc","num":7,"file_name":"/home/jbushart/projects/rls-analysis/test_data/types/src/main.rs"},{"name":"alloc","num":4,"file_name":"/home/jbushart/projects/rls-analysis/test_data/types/src/main.rs"},{"name":"std","num":1,"file_name":"/home/jbushart/projects/rls-analysis/test_data/types/src/main.rs"},{"name":"compiler_builtins","num":9,"file_name":"/home/jbushart/projects/rls-analysis/test_data/types/src/main.rs"},{"name":"alloc_system","num":6,"file_name":"/home/jbushart/projects/rls-analysis/test_data/types/src/main.rs"},{"name":"rand","num":3,"file_name":"/home/jbushart/projects/rls-analysis/test_data/types/src/main.rs"}],"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":0,"byte_end":129,"line_start":1,"line_end":12,"column_start":1,"column_end":2}},"imports":[],"defs":[{"kind":"Mod","id":{"krate":0,"index":0},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":0,"byte_end":129,"line_start":1,"line_end":12,"column_start":1,"column_end":2},"name":"","qualname":"::","value":"src/main.rs","parent":null,"children":[{"krate":0,"index":1},{"krate":0,"index":2},{"krate":0,"index":3},{"krate":0,"index":4},{"krate":0,"index":5}],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Struct","id":{"krate":0,"index":3},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":7,"byte_end":10,"line_start":1,"line_end":1,"column_start":8,"column_end":11},"name":"Foo","qualname":"::Foo","value":"Foo { f }","parent":null,"children":[{"krate":0,"index":2147483657}],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Field","id":{"krate":0,"index":2147483657},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":17,"byte_end":18,"line_start":2,"line_end":2,"column_start":5,"column_end":6},"name":"f","qualname":"::Foo::f","value":"u32","parent":{"krate":0,"index":3},"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Function","id":{"krate":0,"index":4},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":31,"byte_end":35,"line_start":5,"line_end":5,"column_start":4,"column_end":8},"name":"main","qualname":"::main","value":"fn () -> ()","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Local","id":{"krate":0,"index":2147483658},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":48,"byte_end":49,"line_start":6,"line_end":6,"column_start":9,"column_end":10},"name":"x","qualname":"x$13","value":"Foo","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Local","id":{"krate":0,"index":2147483659},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":97,"byte_end":98,"line_start":10,"line_end":10,"column_start":8,"column_end":9},"name":"x","qualname":"::foo::x","value":"Foo","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Function","id":{"krate":0,"index":5},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":93,"byte_end":96,"line_start":10,"line_end":10,"column_start":4,"column_end":7},"name":"foo","qualname":"::foo","value":"fn (x: Foo) -> Foo","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]}],"impls":[],"refs":[{"kind":"Type","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":52,"byte_end":55,"line_start":6,"line_end":6,"column_start":13,"column_end":16},"ref_id":{"krate":0,"index":3}},{"kind":"Variable","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":58,"byte_end":59,"line_start":6,"line_end":6,"column_start":19,"column_end":20},"ref_id":{"krate":0,"index":2147483657}},{"kind":"Type","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":78,"byte_end":81,"line_start":7,"line_end":7,"column_start":12,"column_end":15},"ref_id":{"krate":0,"index":3}},{"kind":"Variable","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":84,"byte_end":85,"line_start":7,"line_end":7,"column_start":18,"column_end":19},"ref_id":{"krate":0,"index":2147483658}},{"kind":"Type","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":100,"byte_end":103,"line_start":10,"line_end":10,"column_start":11,"column_end":14},"ref_id":{"krate":0,"index":3}},{"kind":"Type","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":108,"byte_end":111,"line_start":10,"line_end":10,"column_start":19,"column_end":22},"ref_id":{"krate":0,"index":3}}],"macro_refs":[{"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":118,"byte_end":127,"line_start":11,"line_end":11,"column_start":5,"column_end":14},"qualname":"panic","callee_span":{"file_name":[47,99,104,101,99,107,111,117,116,47,115,114,99,47,108,105,98,115,116,100,47,109,97,99,114,111,115,46,114,115],"byte_start":21333,"byte_end":22262,"line_start":54,"line_end":77,"column_start":1,"column_end":2}}],"relations":[]}
1+
{"config":{"output_file":null,"full_docs":false,"pub_only":false,"distro_crate":false,"signatures":false,"borrow_data":false},"prelude":{"crate_name":"types","crate_root":"src","external_crates":[{"name":"panic_unwind","num":11,"file_name":"/home/test/rls-analysis/test_data/types/src/main.rs"},{"name":"unwind","num":8,"file_name":"/home/test/rls-analysis/test_data/types/src/main.rs"},{"name":"std_unicode","num":5,"file_name":"/home/test/rls-analysis/test_data/types/src/main.rs"},{"name":"core","num":2,"file_name":"/home/test/rls-analysis/test_data/types/src/main.rs"},{"name":"alloc_jemalloc","num":10,"file_name":"/home/test/rls-analysis/test_data/types/src/main.rs"},{"name":"libc","num":7,"file_name":"/home/test/rls-analysis/test_data/types/src/main.rs"},{"name":"alloc","num":4,"file_name":"/home/test/rls-analysis/test_data/types/src/main.rs"},{"name":"std","num":1,"file_name":"/home/test/rls-analysis/test_data/types/src/main.rs"},{"name":"compiler_builtins","num":9,"file_name":"/home/test/rls-analysis/test_data/types/src/main.rs"},{"name":"alloc_system","num":6,"file_name":"/home/test/rls-analysis/test_data/types/src/main.rs"},{"name":"rand","num":3,"file_name":"/home/test/rls-analysis/test_data/types/src/main.rs"}],"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":0,"byte_end":419,"line_start":1,"line_end":32,"column_start":1,"column_end":2}},"imports":[],"defs":[{"kind":"Mod","id":{"krate":0,"index":0},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":0,"byte_end":419,"line_start":1,"line_end":32,"column_start":1,"column_end":2},"name":"","qualname":"::","value":"src/main.rs","parent":null,"children":[{"krate":0,"index":1},{"krate":0,"index":2},{"krate":0,"index":3},{"krate":0,"index":4},{"krate":0,"index":5},{"krate":0,"index":8},{"krate":0,"index":10},{"krate":0,"index":11},{"krate":0,"index":13}],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Struct","id":{"krate":0,"index":3},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":7,"byte_end":10,"line_start":1,"line_end":1,"column_start":8,"column_end":11},"name":"Foo","qualname":"::Foo","value":"Foo { f }","parent":null,"children":[{"krate":0,"index":2147483657}],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Field","id":{"krate":0,"index":2147483657},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":17,"byte_end":18,"line_start":2,"line_end":2,"column_start":5,"column_end":6},"name":"f","qualname":"::Foo::f","value":"u32","parent":{"krate":0,"index":3},"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Function","id":{"krate":0,"index":4},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":31,"byte_end":35,"line_start":5,"line_end":5,"column_start":4,"column_end":8},"name":"main","qualname":"::main","value":"fn () -> ()","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Local","id":{"krate":0,"index":4294967282},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":48,"byte_end":49,"line_start":6,"line_end":6,"column_start":9,"column_end":10},"name":"x","qualname":"x$13","value":"Foo","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Local","id":{"krate":0,"index":4294967272},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":97,"byte_end":98,"line_start":10,"line_end":10,"column_start":8,"column_end":9},"name":"x","qualname":"::foo::x","value":"Foo","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Function","id":{"krate":0,"index":5},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":93,"byte_end":96,"line_start":10,"line_end":10,"column_start":4,"column_end":7},"name":"foo","qualname":"::foo","value":"fn (x: Foo) -> Foo","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Local","id":{"krate":0,"index":4294967267},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":122,"byte_end":134,"line_start":11,"line_end":11,"column_start":9,"column_end":21},"name":"test_binding","qualname":"test_binding$28","value":"bool","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Const","id":{"krate":0,"index":6},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":153,"byte_end":163,"line_start":12,"line_end":12,"column_start":11,"column_end":21},"name":"TEST_CONST","qualname":"::foo::TEST_CONST","value":"bool","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Static","id":{"krate":0,"index":7},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":189,"byte_end":200,"line_start":13,"line_end":13,"column_start":12,"column_end":23},"name":"TEST_STATIC","qualname":"::foo::TEST_STATIC","value":"u32","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Mod","id":{"krate":0,"index":8},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":233,"byte_end":244,"line_start":17,"line_end":17,"column_start":5,"column_end":16},"name":"test_module","qualname":"::test_module","value":"src/main.rs","parent":null,"children":[{"krate":0,"index":9}],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Type","id":{"krate":0,"index":9},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":256,"byte_end":264,"line_start":18,"line_end":18,"column_start":10,"column_end":18},"name":"TestType","qualname":"::test_module::TestType","value":"u32","parent":null,"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Trait","id":{"krate":0,"index":11},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":314,"byte_end":323,"line_start":25,"line_end":25,"column_start":7,"column_end":16},"name":"TestTrait","qualname":"::TestTrait","value":"TestTrait","parent":null,"children":[{"krate":0,"index":12}],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Method","id":{"krate":0,"index":12},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":333,"byte_end":344,"line_start":26,"line_end":26,"column_start":8,"column_end":19},"name":"test_method","qualname":"::TestTrait::test_method","value":"fn (&self) -> ()","parent":{"krate":0,"index":11},"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Tuple","id":{"krate":0,"index":2147483659},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":375,"byte_end":387,"line_start":30,"line_end":30,"column_start":5,"column_end":17},"name":"TupleVariant","qualname":"::FooEnum::TupleVariant","value":"FooEnum::TupleVariant","parent":{"krate":0,"index":13},"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Struct","id":{"krate":0,"index":2147483660},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":393,"byte_end":406,"line_start":31,"line_end":31,"column_start":5,"column_end":18},"name":"StructVariant","qualname":"::FooEnum::StructVariant","value":"FooEnum::StructVariant { x }","parent":{"krate":0,"index":13},"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Field","id":{"krate":0,"index":2147483661},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":409,"byte_end":410,"line_start":31,"line_end":31,"column_start":21,"column_end":22},"name":"x","qualname":"::FooEnum::StructVariant::x","value":"u8","parent":{"krate":0,"index":2147483660},"children":[],"decl_id":null,"docs":"","sig":null,"attributes":[]},{"kind":"Enum","id":{"krate":0,"index":13},"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":361,"byte_end":368,"line_start":29,"line_end":29,"column_start":6,"column_end":13},"name":"FooEnum","qualname":"::FooEnum","value":"FooEnum::{TupleVariant, StructVariant}","parent":null,"children":[{"krate":0,"index":2147483659},{"krate":0,"index":2147483660}],"decl_id":null,"docs":"","sig":null,"attributes":[]}],"impls":[],"refs":[{"kind":"Mod","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1},"ref_id":{"krate":4294967295,"index":4294967295}},{"kind":"Mod","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1},"ref_id":{"krate":4294967295,"index":4294967295}},{"kind":"Mod","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1},"ref_id":{"krate":4294967295,"index":4294967295}},{"kind":"Type","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":52,"byte_end":55,"line_start":6,"line_end":6,"column_start":13,"column_end":16},"ref_id":{"krate":0,"index":3}},{"kind":"Variable","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":58,"byte_end":59,"line_start":6,"line_end":6,"column_start":19,"column_end":20},"ref_id":{"krate":0,"index":2147483657}},{"kind":"Type","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":78,"byte_end":81,"line_start":7,"line_end":7,"column_start":12,"column_end":15},"ref_id":{"krate":0,"index":3}},{"kind":"Variable","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":84,"byte_end":85,"line_start":7,"line_end":7,"column_start":18,"column_end":19},"ref_id":{"krate":0,"index":4294967282}},{"kind":"Type","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":100,"byte_end":103,"line_start":10,"line_end":10,"column_start":11,"column_end":14},"ref_id":{"krate":0,"index":3}},{"kind":"Type","span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":108,"byte_end":111,"line_start":10,"line_end":10,"column_start":19,"column_end":22},"ref_id":{"krate":0,"index":3}}],"macro_refs":[{"span":{"file_name":[115,114,99,47,109,97,105,110,46,114,115],"byte_start":216,"byte_end":225,"line_start":14,"line_end":14,"column_start":5,"column_end":14},"qualname":"panic","callee_span":{"file_name":[47,99,104,101,99,107,111,117,116,47,115,114,99,47,108,105,98,115,116,100,47,109,97,99,114,111,115,46,114,115],"byte_start":23167,"byte_end":23553,"line_start":64,"line_end":75,"column_start":1,"column_end":2}}],"relations":[]}

0 commit comments

Comments
 (0)