Skip to content

RFC: عمر متغيّر نمط المطابقة — قصرٌ صارم على الذراع في المحرّكين#33

Open
SalehKadah wants to merge 1 commit into
mainfrom
rfc/match-pattern-variable-lifetime
Open

RFC: عمر متغيّر نمط المطابقة — قصرٌ صارم على الذراع في المحرّكين#33
SalehKadah wants to merge 1 commit into
mainfrom
rfc/match-pattern-variable-lifetime

Conversation

@SalehKadah

Copy link
Copy Markdown
Contributor

الملخّص

حسمٌ دلاليّ لـISSUE-079: عمر متغيّر نمط طابق بعد الجملة. التحقيق الحيّ (٨ حالات) بيّن أنّها مسألة دلالة لغويّة غير محسومة في مصدر الحقيقة، لا علّة مترجم أحاديّة — لذا تُحسَم عبر RFC قبل أيّ تغييرٍ في المحرّكين.

التباعد (صامت)

متغير ق = 100
طابق (م)                         # م = [نتيجة.نجاح(42)]
    عندما [نتيجة.نجاح(ق)]: اطبع_سطر("داخل=" + نص(ق))
    افتراضي: اطبع_سطر("لا")
نهاية
اطبع_سطر("بعد=" + نص(ق))
  • المفسّر: بعد=42 (يُعيد إسناد الخارجيّ؛ جذره VariableManager::define الصاعد = ISSUE-028).
  • المترجم: «Undefined register» + بعد=0 (خروج 0 = نجاح صامت خاطئ).

المقترَح — الخيار (أ)

متغيّر النمط يُقصَر على ذراعه، يُظلِّل بلا إعادة إسناد، ويموت بعده (يوافق Rust/Swift/ML). المترجم يطبّقه سلفًا لنمط ADT المباشر ⇒ المطلوب تعميمه لا اختراعه. يلزمه بندٌ دلاليّ في language-truth/ ثمّ إصلاحان محصوران: (المفسّر) ربطٌ محلّيّ في visitMatchStmt دون مسّ define العامّ؛ (المترجم) وقف تسريب النمط البسيط + توحيد SEM001.

المصدر

نتيجةٌ مباشرةٌ لإصلاح ISSUE-078 (PR الكود #161، مدموج) الّذي كشف التباعد أثناء المراجعة العدائيّة. تقرير التحقيق الكامل موثّق داخليًّا، ومُلخَّصٌ في DISCOVERED_ISSUES.md تحت ISSUE-079.

مدقّق RFC (lint_rfcs.py) أخضر محلّيًّا.

🤖 Generated with Claude Code

يعالج ISSUE-079: استعمال اسمٍ مربوطٍ بنمط «طابق» بعد الجملة يُباعد المحرّكين
(تباعد صامت). التحقيق الحيّ (٨ حالات) بيّن أنّ المسألة دلاليّة لغويّة غير محسومة
في مصدر الحقيقة، لا علّة مترجم أحاديّة:
- المفسّر يُعيد إسناد الخارجيّ (جذره VariableManager::define الصاعد = ISSUE-028).
- المترجم ثلاثيّ السلوك: بسيط يتسرّب، ADT مباشر مقصورٌ صحيحًا (المعيار مُطبَّق)،
  قائمة/تعداد-داخل-قائمة ينهار codegen مع خروج 0 صامت.

المقترَح: الخيار (أ) — متغيّر النمط يُقصَر على ذراعه، يُظلِّل بلا إعادة إسناد،
ويموت بعده (يوافق Rust/Swift/ML؛ والمترجم يطبّقه سلفًا لـADT ⇒ تعميمٌ لا اختراع).
يلزمه بندٌ دلاليّ في SoT ثمّ إصلاحان محصوران بالمحرّكين. مدقّق RFC أخضر محلّيًّا.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant