Stepami / hydrascript

TypeScript & Go inspired open-source public research project written in C#
GNU General Public License v3.0
68 stars 4 forks source link

[feature request] Доработать проверку инициализированности переменной #84

Closed Stepami closed 1 month ago

Stepami commented 1 month ago

Is your feature request related to a problem? Please describe. Есть фрагмент кода:

let x = f()
function f() {
    print(x as string)
    return 5
}

Сейчас он сваливается с ошибкой: (3, 11)-(3, 12) Cannot define type

Однако, если я пропишу явно тип для переменной x, то программа дойдёт до кодгена.

Describe the solution you'd like При явном указании типа, а также в указанной ситуации статический анализ должен завершаться с ошибкой (3, 11)-(3, 12) Cannot access 'x' before initialization

Этого можно добиться, если отслеживать состояние инициализированности символа. По умолчанию, оно false и в момент объявления происходит инициализация. Исключения, когда сразу true:

Additional context https://github.com/Stepami/hydrascript/pull/4#issuecomment-1665987539