104bool GenericScriptElement::iterateDirectSubpaths(
const DomItem &self, DirectVisitor visitor)
const
107 for (
auto it = m_children.begin(); it != m_children.end(); ++it) {
109 [&self, &visitor, &it](
auto &&e) {
return wrap(self, visitor, it->first, e); },
112 for (
auto it = m_values.begin(); it != m_values.end(); ++it) {
113 cont &= self.dvValueField(visitor, it->first, it->second);
118void GenericScriptElement::updatePathFromOwner(
const Path &p)
120 BaseT::updatePathFromOwner(p);
121 for (
auto it = m_children.begin(); it != m_children.end(); ++it) {
122 std::visit(qOverloadedVisitor{ [&p, &it](ScriptElementVariant &e) {
123 e.base()->updatePathFromOwner(p.withField(it->first));
125 [&p, &it](ScriptList &list) {
126 list.updatePathFromOwner(p.withField(it->first));
132void GenericScriptElement::createFileLocations(
const FileLocations::Tree &base)
134 BaseT::createFileLocations(base);
135 for (
auto it = m_children.begin(); it != m_children.end(); ++it) {
138 [&base](ScriptElementVariant &e) { e.base()->createFileLocations(base); },
139 [&base](ScriptList &list) { list.createFileLocations(base); } },
144bool BlockStatement::iterateDirectSubpaths(
const DomItem &self, DirectVisitor visitor)
const
148 cont &= wrap(self, visitor, Fields::statements, m_statements);
164bool IdentifierExpression::iterateDirectSubpaths(
const DomItem &self, DirectVisitor visitor)
const
167 cont &= self.dvValueField(visitor, Fields::identifier, m_name);
171bool Literal::iterateDirectSubpaths(
const DomItem &self, DirectVisitor visitor)
const
174 std::visit([&cont, &visitor,
175 &self](
auto &&e) { cont &= self.dvValueField(visitor, Fields::value, e); },
180bool IfStatement::iterateDirectSubpaths(
const DomItem &self, DirectVisitor visitor)
const
184 cont &= wrap(self, visitor, Fields::condition, m_condition);
185 cont &= wrap(self, visitor, Fields::consequence, m_consequence);
186 cont &= wrap(self, visitor, Fields::alternative, m_alternative);
190void IfStatement::updatePathFromOwner(
const Path &p)
192 BaseT::updatePathFromOwner(p);
193 if (
auto ptr = m_condition.base())
194 ptr->updatePathFromOwner(p.withField(Fields::condition));
195 if (
auto ptr = m_consequence.base())
196 ptr->updatePathFromOwner(p.withField(Fields::consequence));
197 if (
auto ptr = m_alternative.base())
198 ptr->updatePathFromOwner(p.withField(Fields::alternative));
201void IfStatement::createFileLocations(
const FileLocations::Tree &base)
203 BaseT::createFileLocations(base);
204 if (
auto ptr = m_condition.base())
205 ptr->createFileLocations(base);
206 if (
auto ptr = m_consequence.base())
207 ptr->createFileLocations(base);
208 if (
auto ptr = m_alternative.base())
209 ptr->createFileLocations(base);
212bool ForStatement::iterateDirectSubpaths(
const DomItem &self, DirectVisitor visitor)
const
215 cont &= wrap(self, visitor, Fields::initializer, m_initializer);
216 cont &= wrap(self, visitor, Fields::declarations, m_declarations);
217 cont &= wrap(self, visitor, Fields::condition, m_condition);
218 cont &= wrap(self, visitor, Fields::expression, m_expression);
219 cont &= wrap(self, visitor, Fields::body, m_body);
223void ForStatement::updatePathFromOwner(
const Path &p)
225 BaseT::updatePathFromOwner(p);
226 if (
auto ptr = m_initializer.base())
227 ptr->updatePathFromOwner(p.withField(Fields::initializer));
228 if (
auto ptr = m_declarations.base())
229 ptr->updatePathFromOwner(p.withField(Fields::declarations));
230 if (
auto ptr = m_condition.base())
231 ptr->updatePathFromOwner(p.withField(Fields::condition));
232 if (
auto ptr = m_expression.base())
233 ptr->updatePathFromOwner(p.withField(Fields::expression));
234 if (
auto ptr = m_body.base())
235 ptr->updatePathFromOwner(p.withField(Fields::body));
238void ForStatement::createFileLocations(
const FileLocations::Tree &base)
240 BaseT::createFileLocations(base);
241 if (
auto ptr = m_initializer.base())
242 ptr->createFileLocations(base);
243 if (
auto ptr = m_declarations.base())
244 ptr->createFileLocations(base);
245 if (
auto ptr = m_condition.base())
246 ptr->createFileLocations(base);
247 if (
auto ptr = m_expression.base())
248 ptr->createFileLocations(base);
249 if (
auto ptr = m_body.base())
250 ptr->createFileLocations(base);
253bool BinaryExpression::iterateDirectSubpaths(
const DomItem &self, DirectVisitor visitor)
const
256 cont &= wrap(self, visitor, Fields::left, m_left);
257 cont &= self.dvValueField(visitor, Fields::operation, m_operator);
258 cont &= wrap(self, visitor, Fields::right, m_right);
271void BinaryExpression::createFileLocations(
const FileLocations::Tree &base)
273 BaseT::createFileLocations(base);
274 if (
auto ptr = m_left.base())
275 ptr->createFileLocations(base);
276 if (
auto ptr = m_right.base())
277 ptr->createFileLocations(base);
280bool VariableDeclarationEntry::iterateDirectSubpaths(
const DomItem &self, DirectVisitor visitor)
const
283 cont &= self.dvValueField(visitor, Fields::scopeType, m_scopeType);
284 cont &= wrap(self, visitor, Fields::identifier, m_identifier);
285 cont &= wrap(self, visitor, Fields::initializer, m_initializer);
289void VariableDeclarationEntry::updatePathFromOwner(
const Path &p)
291 BaseT::updatePathFromOwner(p);
292 if (
auto ptr = m_identifier.base())
293 ptr->updatePathFromOwner(p.withField(Fields::identifier));
294 if (
auto ptr = m_initializer.base())
295 ptr->updatePathFromOwner(p.withField(Fields::initializer));
298void VariableDeclarationEntry::createFileLocations(
const FileLocations::Tree &base)
300 BaseT::createFileLocations(base);
301 if (
auto ptr = m_identifier.base())
302 ptr->createFileLocations(base);
303 if (
auto ptr = m_initializer.base())
304 ptr->createFileLocations(base);
307bool VariableDeclaration::iterateDirectSubpaths(
const DomItem &self, DirectVisitor visitor)
const
310 cont &= wrap(self, visitor, Fields::declarations, m_declarations);
326bool ReturnStatement::iterateDirectSubpaths(
const DomItem &self, DirectVisitor visitor)
const
329 cont &= wrap(self, visitor, Fields::expression, m_expression);
340void ReturnStatement::createFileLocations(
const FileLocations::Tree &base)
342 BaseT::createFileLocations(base);
343 if (
auto ptr = m_expression.base())
344 ptr->createFileLocations(base);
347void ScriptList::replaceKindForGenericChildren(DomType oldType, DomType newType)
349 for (
auto &it : m_list) {
350 if (
auto current = it.data()) {
351 if (
auto genericElement =
352 std::get_if<std::shared_ptr<ScriptElements::GenericScriptElement>>(
354 if ((*genericElement)->kind() == oldType)
355 (*genericElement)->setKind(newType);