Sorun: TypeChecker < > <= >= için tip kontrolü yapmıyordu; string
operandlarda VM sessizce intValue=0 karşılaştırıyordu.
Düzeltme: karşılaştırma bloğu ikiye ayrıldı:
== / != → string dahil herhangi tip (değişmedi)
< > <= >= → isNumeric() kontrolü; string veya diğer sayısal-olmayan
tipler E003 üretir, VM'e hiç ulaşmaz
Aritmetik (+ - * / %) zaten sayısal-olmayan tipler için E003 üretiyordu;
doğrulandı, değiştirilmedi.
Altyapı: cmake/run_golden_error.cmake + CMakeLists.txt'e .compile_error
desteği — derleme hatası bekleyen negatif golden testler için.
Testler (19/19 yeşil):
- string/ordering_error: string < → E003 (negatif test)
- string/equality: string == / != çalışmaya devam ediyor (regresyon)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| run_golden.cmake | ||
| run_golden_error.cmake | ||