blob: 498af33c215bd8c1989d4c4560ed8ca433a13352 (
plain)
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
|
package server
import "core:log"
import "core:mem"
import "core:odin/ast"
import "base:runtime"
find_unused_imports :: proc(document: ^Document, allocator := context.temp_allocator) -> []Package {
arena: runtime.Arena
_ = runtime.arena_init(&arena, mem.Megabyte * 40, runtime.default_allocator())
defer runtime.arena_destroy(&arena)
context.allocator = runtime.arena_allocator(&arena)
symbols_and_nodes := resolve_entire_file(document)
pkgs := make(map[string]struct{}, context.temp_allocator)
for _, v in symbols_and_nodes {
pkgs[v.symbol.pkg] = {}
}
unused := make([dynamic]Package, allocator)
for imp in document.imports {
if imp.name not_in pkgs {
append(&unused, imp)
}
}
return unused[:]
}
|