chore: refactor

pull/13461/head
paoloricciuti 2 years ago
parent 6695a5eec9
commit bb4b7f46da

@ -103,13 +103,6 @@ export function migrate(source) {
walk(parsed.instance.content, state, instance_script);
}
for (let labeled_to_remove of state.derived_labeled_statements) {
state.str.remove(
/** @type {number} */ (labeled_to_remove.start),
/** @type {number} */ (labeled_to_remove.end)
);
}
state = { ...state, scope: analysis.template.scope };
walk(parsed.fragment, state, template);
@ -477,30 +470,24 @@ const instance_script = {
const possible_derived = bindings.every((binding) =>
binding.references.every((reference) => {
const declaration_idx = reference.path.findIndex(
(el) => el.type === 'VariableDeclaration'
);
const assignment_idx = reference.path.findIndex(
(el) => el.type === 'AssignmentExpression'
);
const update_idx = reference.path.findIndex((el) => el.type === 'UpdateExpression');
const labeled_idx = reference.path.findIndex(
const declaration_idx = reference.path.find((el) => el.type === 'VariableDeclaration');
const assignment_idx = reference.path.find((el) => el.type === 'AssignmentExpression');
const update_idx = reference.path.find((el) => el.type === 'UpdateExpression');
const labeled_idx = reference.path.find(
(el) => el.type === 'LabeledStatement' && el.label.name === '$'
);
if (assignment_idx !== -1 && labeled_idx !== -1) {
if (assignment_idx && labeled_idx) {
if (assignment_in_labeled) return false;
assignment_in_labeled = /** @type {AssignmentExpression} */ (
reference.path[assignment_idx]
);
labeled_statement = /** @type {LabeledStatement} */ (reference.path[labeled_idx]);
assignment_in_labeled = /** @type {AssignmentExpression} */ (assignment_idx);
labeled_statement = /** @type {LabeledStatement} */ (labeled_idx);
}
return (
update_idx === -1 &&
(declaration_idx !== -1 ||
(labeled_idx !== -1 && assignment_idx !== -1) ||
(labeled_idx === -1 && assignment_idx === -1))
!update_idx &&
(declaration_idx ||
(labeled_idx && assignment_idx) ||
(!labeled_idx && !assignment_idx))
);
})
);
@ -529,6 +516,10 @@ const instance_script = {
)
.toString()
);
state.str.remove(
/** @type {number} */ (labeled_statement.start),
/** @type {number} */ (labeled_statement.end)
);
state.str.appendRight(
/** @type {number} */ (declarator.id.typeAnnotation?.end ?? declarator.id.end),
')'

Loading…
Cancel
Save