cloudwego / cloudwego/abcoder

The import-reexport problem

Offen
#54 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Go
Sterne
390
Forks
57
Ø Merge
2 T. 21 Std.
Gemergte PRs (30 T.)
1

Beschreibung

相关分支: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

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Verwende den verknüpften fix/reexport-Branch als Ausgangspunkt. Suche dann den Code, der exportierte Symbole anhand von pkgPath erfasst. Vergleiche das Rust-Beispiel cur::bar mit dem aktuellen Ergebnis cur::foo::bar und prüfe den Python-Fall für Import-Reexport. Die Aufgabe ist erledigt, wenn das re-exportierte Symbol über den aktuellen Paketpfad verfügbar ist, ohne den privaten Modulpfad offenzulegen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
go, python, rust
Bereich
compilers, devtools
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.