mavka-ukr / jejalyk

Компілятор Мавки в JavaScript
1 stars 0 forks source link

[Після Транспіляції] Компіляція в JavaScript зі збереженням у файл не створює нові каталоги у шляху до цільового файлу #3

Open sikrinick opened 4 months ago

sikrinick commented 4 months ago

Опис бага

Компіляція в JavaScript зі збереженням у файл не підтримує каталоги у шляху до цільового файлу, якщо повний шлях із каталогів до цього файлу не був створений заздалегіть.

Версія джеджалика

0.91.3

Як відтворити

  1. Створити тест.м з друк("Привіт")
  2. В консолі — джеджалик тест.м build/index.js

Результат консолі

node:fs:2343
    return binding.writeFileUtf8(
                   ^

Error: ENOENT: no such file or directory, open 'build/index.js'
    at Object.writeFileSync (node:fs:2343:20)
    at file:///Users/e-mtse/Dropbox/Volunteering/kids_programming/mavka_kurs/%D0%B1%D0%B0%D0%B7%D0%BE%D0%B2%D0%B8%D0%B8%CC%86_%D0%B1%D0%BE%D1%82/node_modules/jejalyk/%D0%B4%D0%B6%D0%B5%D0%B4%D0%B6%D0%B0%D0%BB%D0%B8%D0%BA/%D0%B4%D0%B6%D0%B5%D0%B4%D0%B6%D0%B0%D0%BB%D0%B8%D0%BA.js:375:12 {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: 'build/index.js'
}
dkostmii commented 4 months ago

Чи це дійсно очікувана поведінка? Наприклад, gcc теж не створює структуру папок, якщо переданий шлях вихідного обʼєкту не існує.

Поведінка `gcc`

sikrinick commented 4 months ago

GCC — так.

Але з іншої сторони, Джеджалик компілюється до JavaScript і можливо треба порівнювати з інструментарієм зі світу JS. Найпопулярнійшими тулзами які роблять прекомпіляцію або транспіляцію до JS є Babel і TypeScript. tsc та babel створюють каталоги.