1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#[cfg(test)]
mod test {
use crate::VirtualWorkspace;
#[test]
fn test_unorder_analysis() {
let mut ws = VirtualWorkspace::new();
let files = vec![
(
"rx.lua",
r#"
local subject = require("subject")
local rx = {
subject = subject,
}
return rx
"#,
),
(
"subject.lua",
r#"
---@class Subject
local subject = {}
---@return Subject
function subject.new()
end
return subject
"#,
),
];
ws.def_files(files);
let ty = ws.expr_ty("require('rx').subject.new()");
let expected = ws.ty("Subject");
assert_eq!(ty, expected);
}
#[test]
fn test_unorder_analysis_2() {
let mut ws = VirtualWorkspace::new();
let files = vec![
(
"meta.lua",
r#"
vim = {}
vim.o.a = 1
"#,
),
(
"options.lua",
r#"
require "meta"
vim.o = {}
"#,
),
];
ws.def_files(files);
let o_ty = ws.expr_ty("vim.o");
println!("{:?}", o_ty);
let a_ty = ws.expr_ty("vim.o.a");
println!("{:?}", a_ty);
// let expected = ws.ty("Subject");
// assert_eq!(ty, expected);
}
}