نظام الوحدات (حاجز الاستضافة ٤): انتشار أنواع المعاملات عبر الوحدات + «صدّر بنية» عبر الوحدات (ISSUE-026)#276
Open
SalehKadah wants to merge 2 commits into
Open
نظام الوحدات (حاجز الاستضافة ٤): انتشار أنواع المعاملات عبر الوحدات + «صدّر بنية» عبر الوحدات (ISSUE-026)#276SalehKadah wants to merge 2 commits into
SalehKadah wants to merge 2 commits into
Conversation
… — تقوية نظام الوحدات (حاجز الاستضافة ٤) العلّة: الدوالّ المستوردة تُبنى في الطور ٢ بعد طور الاستنتاج ١.٧، فلا تكون في functionTable_ حين يمسح inferParamTypesFromCallSites مواقع النداء ⇒ نوع المعامل غير المصرَّح يبقى Integer الافتراضيّ ⇒ الوسيط النصّيّ يُطبع مشوَّهًا عبر حدّ الوحدة (`مرحبا 140698...`). الإصلاح: preRegisterImportedSignatures يسجّل تواقيع الدوالّ المستوردة (المُصدَّرة المطلوبة فقط) في functionTable_ قبل الطور ١.٧، ويجمع أشجار الوحدات (متعدّيًا، بحارس دائريّة) كي يمسحها الاستنتاج أيضًا ⇒ ينتشر النوع عبر حدود الوحدات (رسالة⇒تحية) كما داخل وحدةٍ واحدة. الطور ٢ يبنيها بالنوع المصحَّح (حارس تخطٍّ يميّز البذرة عن المحلّيّ). الحواسم (مراجعتا أميليا): - حصر التسجيل بالرموز المُصدَّرة المطلوبة (لا كلّ دوالّ الوحدة) ⇒ لا تختطف دالّةٌ خاصّة باسم مدمَج (طول/حجم/جذر) المدمَجَ في الرئيسة. - مجموعة preRegisteredImportNames_ ⇒ حارس التخطّي يبني البذرة غير المبنيّة فقط، ويُبقي المحلّيّ فائزًا (لا بناء مزدوج). - 🔑 مفتاح الزيارة بـfrom_wstring(wstring) على ويندوز: path::string() على اسمٍ عربيّ يتعطّل (خارج ANSI) — يطابق ما يفعله module_resolver عمدًا. تحقّق: قسم الاستيراد المزدوج (مفسّر+مترجم) أخضر + اختباران جديدان (متعدٍّ ٣ مستويات + عدم اختطاف المدمَج). البوّابة الكاملة 95.7% بلا انحدار. دَينان سابقان (لم يُدخِلهما هذا التغيير): سياق الأنواع عند مسح الوحدات الأجنبيّة، والخريطة الساكنة s_numSeen (تسريب LSP). وقرارٌ لغويّ مؤجَّل للمالك: هل يُسمح استيراد رمزٍ غير مُصدَّر (لا يُستنتَج نوعه حاليًّا، كأساس origin/dev). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…تضافة ٤ العلّة: `StructDecl` عقدة AST متمايزة عن `ClassDecl`، ومعالِجا الاستيراد (`buildFromImportStmt`/`buildImportStmt`) كانا يلتقطان Function/Var/ClassDecl فقط ويُسقطان StructDecl صامتًا ⇒ البنية المستوردة لا تُسجَّل في جدول الأصناف ⇒ `نقطة()` في الرئيسة يفشل «استدعاء دالة غير معرّفة». الإصلاح: التقاط `StructDecl` في الفروع الثلاثة (ExportDecl/ExportStmt/عارٍ) في كلا المعالِجين، وإضافته لاختيار symbolName، وبناؤه بـ`buildStatement(structDecl)` الذي يوجّهه إلى statement_types.cpp (يحسب الحقول ويسجّل بـaddClass/classTable_) كما تفعل الوحدة الرئيسة في الطور 2أ-0 (ISSUE-051)، مع حارس `getClass` ضدّ التسجيل المزدوج. تخطيط حقول البنية ذاتيّ من حقولها المصرَّحة ⇒ لا حاجة لتسجيلٍ مسبق كالدوالّ. التحقّق: استيراد `نقطة` + `نقطة()` + وصول حقل عبر وحدة ⇒ المترجم = المفسّر (3/4/7). اختبار مزدوج جديد 062_import_exported_struct + اختبار الفجوة الأحاديّ 002 يمرّ. البوّابة الكاملة 95.6% — 136 فشلًا (= الأساس تمامًا، بنفس الاختبارات)، بلا انحدار. رفع قيد ISSUE-026 من SoT (20_declarations/30_oop) والتقارير. مراجعة أميليا: لا عيب حرِج. دَين سابق موثَّق (لم يُدخِله هذا التغيير): حقلٌ من نوع بنية (بنية متداخلة) ينهار إلى Integer في statement_types.cpp (خارطة الأنواع بلا حالة Struct + StructField بلا اسم نوع) ⇒ البنى المتداخلة عبر الوحدات فجوةٌ مستقلّة (اختبار 001_struct_field_nested، فاشل في الأساس). اختبار 062 يستعمل حقولًا قياسيّة (صحيح النطاق). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
📚 تذكير مزامنة دليل المطوّرين هذا الـPR يلمس مصادر موثَّقة في دليل المطوّرين. راجع الفصول الآتية وحدّثها إن تغيّر سلوكها، ثم ثبّت البصمات هناك (
بندٌ في معيار الإنجاز. تذكيرٌ آليّ — لا يحجب الدمج. |
|
📘 تذكير مزامنة التوثيق التقنيّ هذا الـPR يلمس مصادر يعرضها التوثيق التقنيّ. الصفحات المُولَّدة تُعاد بناؤها آليًّا عند الدمج/الإصدار؛ راجع الصفحات النثريّة إن تغيّر سلوكها:
تذكيرٌ آليّ — لا يحجب الدمج. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
تقوية نظام الوحدات ضمن حملة الاستضافة الذاتيّة (RFC #52، الحاجز ٤). إيداعان:
① انتشار أنواع المعاملات غير المصرَّحة عبر حدود الوحدات (متعدٍّ) —
0c2a67bcالعلّة: الدوالّ المستوردة تُبنى في الطور ٢ بعد استنتاج ١.٧ فلا تكون في
functionTable_⇒ معامل نصّيّ غير مصرَّح يُطبَع مشوَّهًا عبر الحدّ (مرحبا 140698...).الإصلاح:
preRegisterImportedSignaturesيسجّل تواقيع الرموز المُصدَّرة المطلوبة فقط قبل ١.٧ ويجمع أشجار الوحدات (متعدّيًا) فيimportedModuleBodies_؛inferParamTypesFromCallSitesيمسحها في تمريراته الثلاث ⇒ انتشار متعدٍّ (رسالة⇒تحية).حواسم أميليا ×٢: حصر التسجيل بالمُصدَّر المطلوب (لا اختطاف مدمَج طول/حجم/جذر) ·
preRegisteredImportNames_يميّز البذرة عن المحلّيّ · 🔑path::string()على اسمٍ عربيّ يتعطّل على ويندوز ⇒from_wstring(wstring).اختباران:
060_transitive_param_type_inference(16/8/مرحبا زيد!) ·061_import_does_not_hijack_builtin(5/14).② «صدّر بنية» تُترجَم عبر الوحدات (ISSUE-026 مُغلَق) —
7e889137العلّة:
StructDeclعقدة متمايزة عنClassDecl؛ معالِجا الاستيراد يلتقطان Function/Var/ClassDecl فقط ويُسقطان StructDecl ⇒ البنية المستوردة لا تُسجَّل ⇒نقطة()يفشل «دالة غير معرّفة».الإصلاح: التقاط
StructDeclفي الفروع الثلاثة بكلا المعالِجين + بناؤه بـbuildStatement(⇒ addClass/classTable_ كالوحدة الرئيسة في 2A-0/ISSUE-051) مع حارسgetClass.اختبار مزدوج:
062_import_exported_struct(استيرادنقطة+نقطة()+وصول حقل = 3/4/7). رفعُ قيد ISSUE-026 من SoT (20_declarations/30_oop) والتقارير. مراجعة أميليا: لا عيب حرِج.التحقّق العامّ
@gap/FAIL_INTERP/شبكة-واجهة سابقة).ديون معروفة (سابقة، لم يُدخِلها هذا الـPR)
statement_types.cpp(خارطة الأنواع بلا حالة Struct +StructFieldبلا اسم نوع) ⇒ البنى المتداخلة عبر الوحدات فجوةٌ مستقلّة (اختبار001_struct_field_nested، فاشل في الأساس). اختبار ② يستعمل حقولًا قياسيّة.s_numSeen(تسريب LSP).🤖 Generated with Claude Code