Size: a a a

2021 June 18

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
это два параллельных паттерн-матчинга по произвольным критериям, допустим по значениям полей source и target
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
а это вложенный матчинг значений с их помощью

fn(_, {src, target}) {
 src({
   unit() {
     target({
       tuple: () => 'unit to [a,b]',
       none: () => 'unit to new unit'
     })
   },
   tuple() {
     target({
       unit: () => '[c,d] to unit',
       tuple: () => '[c,d] to [a,b]',
       none: () => '[c,d] to new unit'
     })
   }
 })
}
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
на выходе даст массив
[unit, tuple, 'unit to [a,b]']
[unit, none, 'unit to new unit']
[tuple, unit, '[c,d] to unit']
[tuple, tuple, '[c,d] to [a,b]']
[tuple, none, '[c,d] to new unit']
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
при этом раз в первом вызове target нет кейса unit, то кейс [unit, unit, …] в результатах быть не должно
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
короче к моему удивлению. с этим условием задача оказалась крайне заковыристой
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от Egor Гуща
хм, очень стараюсь понять)
но выше ведь и нет кейса [unit, unit …]
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
в этом и смысл
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
убрать то что нужно убрать но не более
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
я перечислил результаты которые должны быть в итоге, и пояснил что это просто не получается
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
именно несоответствия с ожидаемыми результатами и считаются проблемами и багами
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
их фактически невозможно заметить потому что результаты — комбинаторно перемноженные и поэтому в реальности их не двенадцать а например сто
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
а ведь это даже не половина решения, сгенерированные тесты ещё предстоит свернуть обратно, чтобы рендерить не каждую ошибку а лишь ожидаемый её шаблон и кейсы которые ему не соответствуют
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от Egor Гуща
И даже близко нет подобных инструментов, чтобы облегчить генерацию тестов ?
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
инструменты закончились ещё на стадии ручных снапшотов типов
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
сейчас уже скорее стадия «не с кем обсудить даже саму постановку задачи»
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Переслано от 🚀🔬 🚀🔬🚀🔬...
я кстати не стал публиковать наработки по снапшотам типов потому что чувствовал, что это полумеры и что итоговое решение будет отличаться от ручных снапшотов так же сильно как ручные снапшоты от традиционного //@ts-expect-error
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
короче ситуация примерно такая👆
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
причём я не сомневаюсь, что генератор можно сделать проще, но сейчас генератор уже есть и он работает, поэтому альтернатива тоже должна работать не хуже, но: https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
собственно в том, что этот чувак из 2000 года вновь оказался прав, я убедился на собственном опыте
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
а, да, в целом это не чейнджлог а роадмап, все новые фичи могут сдвинуться как вперёд к 22.1 так и назад, к 21.9

мажор в плане новых фич не обязан быть выдающимся, но если фича становится готовой именно к нему, то откладывать или ускорять её смысла нет: merge и split были опубликованы в 20.0, потому что были написаны в это время и вышли сразу как были готовы
источник