@@ -13,9 +13,6 @@ mt.type = 'vm.node'
1313mt .optional = nil
1414mt .lastInfer = nil
1515mt .data = nil
16- --- @type vm.node[]
17- mt ._childs = nil
18- mt ._locked = false
1916
2017--- @param node vm.node | vm.object
2118function mt :merge (node )
@@ -29,20 +26,10 @@ function mt:merge(node)
2926 if node :isOptional () then
3027 self .optional = true
3128 end
32- if node ._locked then
33- if not self ._childs then
34- self ._childs = {}
35- end
36- if not self ._childs [node ] then
37- self ._childs [# self ._childs + 1 ] = node
38- self ._childs [node ] = true
39- end
40- else
41- for _ , obj in ipairs (node ) do
42- if not self [obj ] then
43- self [obj ] = true
44- self [# self + 1 ] = obj
45- end
29+ for _ , obj in ipairs (node ) do
30+ if not self [obj ] then
31+ self [obj ] = true
32+ self [# self + 1 ] = obj
4633 end
4734 end
4835 else
@@ -53,84 +40,17 @@ function mt:merge(node)
5340 end
5441end
5542
56- function mt :_each (mark , callback )
57- if mark [self ] then
58- return
59- end
60- mark [self ] = true
61- for i = 1 , # self do
62- callback (self [i ])
63- end
64- local childs = self ._childs
65- if not childs then
66- return
67- end
68- for i = 1 , # childs do
69- local child = childs [i ]
70- if not child :isLocked () then
71- child :_each (mark , callback )
72- end
73- end
74- end
75-
76- function mt :_expand ()
77- local childs = self ._childs
78- if not childs then
79- return
80- end
81- self ._childs = nil
82-
83- local mark = {}
84- mark [self ] = true
85-
86- local function insert (obj )
87- if not self [obj ] then
88- self [obj ] = true
89- self [# self + 1 ] = obj
90- end
91- end
92-
93- for i = 1 , # childs do
94- local child = childs [i ]
95- if child :isLocked () then
96- if not self ._childs then
97- self ._childs = {}
98- end
99- if not self ._childs [child ] then
100- self ._childs [# self ._childs + 1 ] = child
101- self ._childs [child ] = true
102- end
103- else
104- child :_each (mark , insert )
105- end
106- end
107- end
108-
10943--- @return boolean
11044function mt :isEmpty ()
111- self :_expand ()
11245 return # self == 0
11346end
11447
11548--- @param n integer
11649--- @return vm.object ?
11750function mt :get (n )
118- self :_expand ()
11951 return self [n ]
12052end
12153
122- function mt :lock ()
123- self ._locked = true
124- end
125-
126- function mt :unlock ()
127- self ._locked = false
128- end
129-
130- function mt :isLocked ()
131- return self ._locked == true
132- end
133-
13454function mt :setData (k , v )
13555 if not self .data then
13656 self .data = {}
17595
17696--- @return fun (): vm.object
17797function mt :eachObject ()
178- self :_expand ()
17998 local i = 0
18099 return function ()
181100 i = i + 1
0 commit comments