Чтобы уточнить ответ Донала, Tcl не находит ошибок во время компиляции, потому что в общем случае это невозможно сделать, любой код, выполняемый до операции if, мог переопределить команду if, так что он мог бы быть действительным, единственным способомопределить, является ли это причиной запуска кода (т.е. это проблема остановки)
рассмотреть этот сценарий:
gets stdin input
if {$input == "fail"} {
rename if if_
proc if {arg1 arg2 arg3} {
puts "ha ha"
}
}
if {1} { puts "success"}
ясно, что невозможно статически определить, если {1} строка имеет правильное количество аргументов без запуска программы
TCL на самом деле практически не имеет синтаксиса, нет ничего, что компилятор может проверить, лучшее, что вы можете сделать, это предупреждения в стиле Lint, которые будут точны только в некоторыхслучаи