cloudwego / cloudwego/abcoder

The import-reexport problem

オープン
#54 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Go
スター
391
フォーク
58
平均マージ
2日 21時間
マージ済み PR(30日)
1

説明

相关分支:https://github.com/cloudwego/abcoder/tree/fix/reexport

在 rust 和 python 中,存在一种情况是一个文件 import 了一个符号以后,从自己的位置 export 出去

```
// rust
// (文件是 cur.rs, pkgPath is cur)
mod foo; // 子模块是 private 的
pub use foo::bar; // 但是 bar 函数是 public 的
// 这个 pkg 的 user 应当通过 cur::bar 来访问 bar
// 不能通过 cur::foo::bar,会产生错误

// python
from math import cos // 当前文件 export 了 cos
```

在 Rust 的情况中,我们应当确保 cur::bar 是外部可见的.
现在的实现里,pkgPath=cur 的地方没有 bar,但是 pkgPath=cur::foo 里有 bar。
这可能让大模型认为 bar 的用法是 cur::foo::bar

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

リンクされた fix/reexport ブランチを出発点として使用し、次に pkgPath によってエクスポートされたシンボルを記録しているコードを特定してください。Rust の cur::bar の例と現在の cur::foo::bar の結果を比較し、Python のインポート・リエクスポートのケースを確認してください。現在のパッケージパスからリエクスポートされたシンボルを利用でき、プライベートなモジュールパスを公開していなければ完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
go, python, rust
領域
compilers, devtools
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。