التشخيص والتصحيح
لبات 0.7.0 · الإصدار الحالي
التشخيصات ومواضع المصدر والتصحيح والفرق بين نتائج الفشل.
محتويات الصفحة
حقول التشخيص
يحمل التشخيص مفتاح سبب ثابت وشدة ومعاملات ذات أنواع وموضعا أوليا ومواضع ثانوية مرتبة وتعديلا اختياريا. اللغة تغير الصياغة فقط، وتبقى أسماء الأنواع والعوامل والحدود والقيم التقنية ASCII كاملة العرض. التحذير لا يمنع التشغيل. يربط التشغيل المباشر التشخيص بالمصدر؛ البرامج المبنية لا تحتوي خريطة المصدر، لكنها تبلغ اسم الدالة وفهرس التعليمة النسبي للفخ. المثال الأول يحاول تعديل رابط ثابت. يستبدل المثال الثاني دع / let بـمتغير / var ويعيد الحالة 1 بصورة طبيعية.
موضع المصدر والتصحيح
اختر التشخيص لتحديد موضعه في نسخة المصدر التي فُحصت. مواضع النقل هي إزاحات بايت UTF-8 نصف مفتوحة، ويعرض المحرر التحديد في المصدر المنطقي. قد يتضمن التشخيص تعديلا مقترحا. في مثال الرابط الثابت يشير الموضع الأولي إلى المعرّف المسند إليه، والمواضع الثانوية فارغة، ولا يوجد تعديل تلقائي مقدم. استبدل يدويا دع / let بـمتغير / var. يمكن أن تتضمن تشخيصات أخرى مواضع ثانوية مرتبة. تطبيق التصحيح ثم إعادة الفحص لا يشغّل البرنامج تلقائيا. المصدر المصحح يرجع 1 بنجاح ولا يطبع شيئا.
للتصحيح التلقائي، ينتج unsafe print("text") التشخيص unsafe-on-safe-call مع تعديل يزيل علامة unsafe. طبق التعديل صراحة ثم أعد الفحص. يشير الموضع الأولي إلى العلامة ونص الاستبدال فارغ.
التنفيذ: المتصفح والمضيف الأصلي · لبات 0.7.0
- لا يتطلب معرفة سابقة لفتحه وفحصه.
الإدخال: لا يحتاج إلى أسطر إدخال.
دالة ابدأ_الرئيسية() -> ص64 {
دع قيمة = 0.
قيمة = 1.
أرجع قيمة.
}
النتائج المتوقعة
{
"browser": {
"check": "source-error",
"class": "source-error",
"output": "",
"reason": "immutable-assignment"
},
"native": {
"check": 1,
"status": 1,
"output": "",
"reason": "immutable-assignment"
}
}التنفيذ: المتصفح والمضيف الأصلي · لبات 0.7.0
- لا يتطلب معرفة سابقة لفتحه وفحصه.
الإدخال: لا يحتاج إلى أسطر إدخال.
دالة ابدأ_الرئيسية() -> ص64 {
متغير قيمة = 0.
قيمة = 1.
أرجع قيمة.
}
النتائج المتوقعة
{
"browser": {
"check": "success",
"class": "success",
"output": "",
"processStatus": 1
},
"native": {
"check": 0,
"status": 1,
"output": ""
}
}نتائج مختلفة
مثال let byte: u8 = 256 خطأ فحص لأن الحرفي السياقي خارج المدى. أما u8(256) فمعامله i64 افتراضي صالح ثم يوقف التنفيذ بفخ invalid-numeric-conversion إذا وصل إليه. وparse_u8("256") يعيد نتيجة فاشلة بالرمز number-out-of-range. لا يتحول واحد من هذه المخرجات إلى الآخر.
خطأ المصدر يمنع الترجمة. التحذير يسمح بها. result<T> الفاشلة قيمة يستطيع البرنامج فحصها. الفخ يوقف البرنامج ولا يمكن التقاطه. فشل التحميل يقع قبل التنفيذ. limit-stop وcancelled وhost-failure نتائج مستقلة. success مع الحالة 1 نجاح لغة، حتى لو فسرته أداة shell كحالة غير صفرية.
حقول الأعداد
حقول خطأ الفحص numeric-literal-out-of-range للأعداد الصحيحة هي spelling, type, minimum, maximum، وللعائم spelling, type, classification حيث التصنيف finite-overflow. وحقول numeric-operator-not-supported هي operator, type.
حقول الفخ العددية مرتبة: integer-overflow يحمل type, operation, operand-count, operands؛ وinteger-zero-divisor يحمل type, operation, dividend؛ وinvalid-shift-count يحمل left-type, count-type, count, width؛ وinvalid-numeric-conversion يحمل source-type, target-type, classification ثم source-value أو source-bits. تحمل القيم غير الموقعة حتى u64 كاملة بلا تقريب JavaScript.
نطاق الإصدار والمراجع
تصف هذه الصفحة لبات 0.7.0. نص MVP المرتبط سجل تاريخي، ولا يصف كل الإضافات الحالية.