mavka-ukr / jejalyk

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

[Типізація] Інференція типів для словників не працює для списків структур #9

Open sikrinick opened 6 months ago

sikrinick commented 6 months ago

Опис

Наприклад, список структур А з 4 елементів без явно вказаного типу має тип список<А або А або А або А>. Як користувач, я очікую, що через те, що тип А або А = А, то тип словника мають сплющуватись до список<А>.

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

0.91.3

Приклад коду

структура Покемон
  імʼя
кінець

відомі_покемони = [
  Покемон("Пікачу"),
  Покемон("Мяут"),
  Покемон("Меджікарп"),
  Покемон("Іві")
]

відомі_покемони[0].імʼя

Результат

Неможливо отримати властивість "імʼя" з типу "Покемон або Покемон або Покемон або Покемон".
dkostmii commented 6 months ago

Тимчасове рішення – вказувати тип списку вручну:

image

dkostmii commented 6 months ago

Конкретно даний випадок вирішено у ось цьому коміті форку:

image

Але необхідно більше схожих прикладів зі списками для впевненості.

dkostmii commented 6 months ago

Створено новий коміт форку. Він здатен сплющувати складніші типи:

image