已合并
fix(unittest): indirect interface default static methods #2091
fix(unittest): indirect interface default static methods #2091
已合并
Ilya Yaroshevskiy创建于 8月28日
Ilya Yaroshevskiy
Ilya Yaroshevskiy仓颉Developer
8月28日

Change Details (Required)

Implement default interface methods accessors in classes which are indirect subtypes of interface

Change Type (Required)

Self-Check of Changes (Required)

Platform Differences:

Affected Components:

Local Compilation Verification Results:

Local Test Case Verification Results:

image.png

https://gitcode.com/Cangjie/cangjie_compiler/issues/1110

likedislike
Pull Request已成功合入, 合并人@cangjie-ci
(感谢 Ilya Yaroshevskiy 的贡献)
cangjie-ci成员
8月28日 评论:

PR创建成功通知 | 感谢您的贡献 🎉

您好!系统已检测到您成功创建 Pull Request(PR),感谢您对项目的支持与参与!以下几点需要您着重关注:

一、PR必须关联Issue ❗️

触发门禁检查的必要步骤:在PR描述框输入Issue完整链接,完成Issue关联。

请注意,一个 Issue 不能同时关联同一 base 仓库内同一个分支的多个开启状态的 PR

二、门禁触发规则 🔧

  1. 门禁类型判定:由Issue关联的PR所属代码仓数量决定
    • 关联多个代码仓PR:触发「多仓联合门禁」
    • 关联单个代码仓PR:触发「单仓门禁」
  2. 启动指令与检查范围:需主动回复指令:
    • 回复 "start build":执行Cangjie的主要基础检查,包含commit格式检查、静态告警分析、OAT开源声明检查、多平台构建、单元/集成测试等
    • 关联同一issue的多个PR,仅需在任意一个PR里回复触发一次门禁,该PR门禁通过后,所有PR都会添加Label和测试人
    • 每个pr只能同时运行一条CI流水线,如需重新启动,请先关闭运行中的,再评论触发门禁
    • Markdown修改仅触发文档类构建测试门禁,不会触发Cangjie的编译测试门禁
    • commit 信息格式请遵循:Conventional Commits 规范
    • 请保证每一条 commit 都已添加 Signed-Off-By 信息
    • 回复 "start build cov":执行覆盖率构建工程,生成该提交的增量代码覆盖率报告

三、合入条件 ⚠️

  • 满足最低评审人数,且评审问题需全部解决;
  • 禁止合入本人创建的PR,需由其他协作者操作;
  • 合并前确保关联流水线任务运行成功(build-test-passed);
  • 需求类覆盖率门禁:当关联的 Issue 标题以 [feature]: 开头(需求类 Issue)时,联合提交中属于 cangjie_compiler、cangjie_runtime、cangjie_stdx、cangjie_tools、llvm-project 仓库的 PR,必须先回复 "start build cov" 触发增量覆盖率流水线并通过,使 PR 获得 cov-test-passed 标签后方可合入。

四、合并PR ✅

回复 "start merge",CI流水线会自动检查所有关联PR的状态、版本号标签、检视意见密度、兼容性、需求类覆盖率门禁,若所有PR都满足合并条件,则将会同时合并所有PR。若存在不满足合并条件的PR,则不会合并任何PR。

如果希望不进行兼容性相关的检测,请任一合法审查人复制以下内容,在 start merge 前提交评论:

本 pr 不需要兼容性相关检测,对于引发的任何兼容性问题(即由于本 pr 合入将导致用户需适配代码的话),由本人承担。

If you wish to avoid compatibility-related checks, please have any approver copy the following content and submit it as a comment before sending start merge:

This PR does not require compatibility-related checks. For any compatibility issues caused by this PR (i.e., if the integration of this PR will require users to adapt their code), I will take full responsibility.

五、补充说明 📢

likedislike
Ccangjie-ci维护者
8月28日 添加了label:1.3.0-alpha.04waiting-start-build
此处折叠了5条事件消息 查看更多
Ilya YaroshevskiyIlya Yaroshevskiy仓颉Developer
8月31日 修改了pull request 的描述
Ilya Yaroshevskiy
Ilya Yaroshevskiy成员
8月31日 评论:

start build

likedislike
Ccangjie-ci维护者
8月31日 删除了label:waiting-start-build
Ccangjie-ci维护者
8月31日 添加了label:CI-running
cangjie-ci成员
8月31日 评论:

🔨 构建/测试门禁流水线

已启动,正在后台运行中,您可以点击构建/测试门禁详情查看运行状态。

构建/测试门禁执行流程:

graph LR
    A[PR检测] --> B[联合构建]
    B[联合构建] --> C[测试运行]

检查内容包括

  • commitlint检查
  • 构建任务
    • linux x64、mac aarch64、windows x64
  • 测试任务
    • UT、HLT、LLT

构建/测试门禁产物归档路径: obs://cangjie103/CangjieDaily/pub/ci/gate/main/cangjie_compiler/2091

likedislike
Ccangjie-ci维护者
8月31日 添加了label:commitlint-passedsign-off-passed
cangjie-ci成员
8月31日 评论:

PR&issue 合规检查结果 / PR & Issue Compliance Check Results

Item Target Result Notes
PR template Cangjie/cangjie_compiler#2091 PASS 必填章节齐全、复选框已勾选 / required sections filled, checkboxes checked
PR-Issue consistency Cangjie/cangjie_compiler#2091 PASS 声明与实际一致 (#1110) / declared matches actual (#1110)
PR template Cangjie/cangjie_test#2083 PASS 必填章节齐全、复选框已勾选 / required sections filled, checkboxes checked
PR-Issue consistency Cangjie/cangjie_test#2083 PASS 声明与实际一致 (#1110) / declared matches actual (#1110)
Issue template Cangjie/cangjie_compiler#1110 PASS 必填字段已填、分支已选 / required fields filled, branch checked

检查结论 / Conclusion: PASS

likedislike
Ccangjie-ci维护者
8月31日 添加了label:OAT-passed
Ccangjie-ci维护者
8月31日 添加了label:codecheck-passed
Ccangjie-ci维护者
9月1日 通过测试
cangjie-ci成员
9月1日 评论:

🔨 构建/测试门禁

✅ 构建/测试门禁已通过

您提交的 PR 已顺利通过全部门禁检查流程,当前状态符合合入标准。具体检查结果如下:

  • Commit 检查:代码提交信息规范性、完整性、Signed Off信息验证通过,无格式或逻辑问题✓;
  • 代码构建:编译过程无报错,依赖项加载正常,构建产物完整性达标🔧;
  • 测试验证:单元测试、集成测试等各类用例执行完毕,全部通过验证🧪。

目前该 PR 已完全具备合入条件,可按项目流程推进后续合入操作。感谢您的严谨开发与协作,期待代码顺利合入🎉!

likedislike
Ccangjie-ci维护者
9月1日 删除了label:CI-running
此处折叠了6条事件消息 查看更多
Vval_krylov仓颉Developer
9月1日 通过了评审
Ilya Yaroshevskiy
Ilya Yaroshevskiy成员
9月1日 评论:

start merge

likedislike
cangjie-ci成员
9月1日 评论:

⏳ 正在进行兼容性检测中,可能需要2~3分钟,请稍候,若10分钟无检测结果,请重新回复 start merge。


⏳ Compatibility check in progress. It may take 2–3 minutes. Please wait. If there is no result after 10 minutes, please reply with start merge again.

likedislike
cangjie-ci成员
9月1日 评论:

✅ 合入前兼容性检测通过。
涉及仓库:Cangjie/cangjie_compiler, Cangjie/cangjie_test

结论

  • 分析过程:分析对象为 Cangjie/cangjie_compiler#2091。核对了 PR 元数据、1 个提交及唯一变更文件 src/Sema/Test/MockSupportManager.cpp;检查 FindInterfacesWithDefaults 从直接 inheritedTypes 遍历改为 GetAllSuperDecls 全量父类型遍历,并反查该函数在 MockSupportManager::CollectDeclsToPrepare 中的使用及 GetAllSuperDecls 的实现。未发现 .cj 公开 API、ABI/符号、跨组件接口、构建打包入口、配置或文档契约变更。 / Analyzed Cangjie/cangjie_compiler#2091. Reviewed its metadata, single commit, and sole changed file; traced the FindInterfacesWithDefaults change and its call sites, and found no public .cj API, ABI/symbol, cross-component, build/package, configuration, or documentation contract change.
  • 原因:兼容。该 PR 仅将单元测试 Mock 支持逻辑对接口默认方法的搜索范围从直接父类型扩展到全部传递父类型,使间接实现接口的类也能生成既有 Mock 访问器;这是对原先失败或缺失支持路径的修复,不删除或收窄既有成功行为,也不改变受保护的公开或 SDK 组件间契约。 / Compatible. The PR only broadens unittest mock-support discovery from direct supertypes to all transitive supertypes so classes indirectly implementing an interface receive the existing mock accessors. It fixes a previously unsupported or failing path without removing or narrowing existing successful behavior or changing any protected public or SDK inter-component contract.
  • 结论:兼容
likedislike
cangjie-ci成员
9月1日 评论:

⚠️ 合入前检查失败:带有 "bug" label 的 issue 必须包含问题发现的版本号 label(语义化版本号,如 1.2.3)。

以下 issue 缺少版本号 label:

  • Issue #1110: [Bug]: Mocking indirect classes default methods accessors implementation

请为相关 issue 添加版本号 label 后重新触发合入。

⚠️ Merge check failed: issues with "bug" label must have the version label of the problem found (semantic version, e.g., 1.2.3).

The following issues are missing version labels:

  • Issue #1110: [Bug]: Mocking indirect classes default methods accessors implementation

Please add version labels to the related issues and retry the merge.

likedislike
Ilya Yaroshevskiy
Ilya Yaroshevskiy成员
9月1日 评论:

start merge

likedislike
cangjie-ci成员
9月1日 评论:

⏳ 正在进行兼容性检测中,可能需要2~3分钟,请稍候,若10分钟无检测结果,请重新回复 start merge。


⏳ Compatibility check in progress. It may take 2–3 minutes. Please wait. If there is no result after 10 minutes, please reply with start merge again.

likedislike
cangjie-ci成员
9月1日 评论:

✅ 合入前兼容性检测通过。
涉及仓库:Cangjie/cangjie_compiler, Cangjie/cangjie_test

结论

  • 分析过程:分析对象为 Cangjie/cangjie_compiler#2091。核对了 PR 元数据、1 个提交及唯一变更文件 src/Sema/Test/MockSupportManager.cpp;检查 FindInterfacesWithDefaults 从直接 inheritedTypes 遍历改为 GetAllSuperDecls 全量父类型遍历,并反查该函数在 MockSupportManager::CollectDeclsToPrepare 中的使用及 GetAllSuperDecls 的实现。未发现 .cj 公开 API、ABI/符号、跨组件接口、构建打包入口、配置或文档契约变更。 / Analyzed Cangjie/cangjie_compiler#2091. Reviewed its metadata, single commit, and sole changed file; traced the FindInterfacesWithDefaults change and its call sites, and found no public .cj API, ABI/symbol, cross-component, build/package, configuration, or documentation contract change.
  • 原因:兼容。该 PR 仅将单元测试 Mock 支持逻辑对接口默认方法的搜索范围从直接父类型扩展到全部传递父类型,使间接实现接口的类也能生成既有 Mock 访问器;这是对原先失败或缺失支持路径的修复,不删除或收窄既有成功行为,也不改变受保护的公开或 SDK 组件间契约。 / Compatible. The PR only broadens unittest mock-support discovery from direct supertypes to all transitive supertypes so classes indirectly implementing an interface receive the existing mock accessors. It fixes a previously unsupported or failing path without removing or narrowing existing successful behavior or changing any protected public or SDK inter-component contract.
  • 结论:兼容
likedislike
cangjie-ci成员
9月1日 评论:

✅ 以下PR将同时合入:

✅ The following PRs will be merged simultaneously:

likedislike
Ccangjie-ci维护者
9月1日 合入了pull request,合并节点 SHA:9de79e25bf9127f50bbf0840b52760abde018fa8