rescript-lang / rescript-lang/rescript
Invalid function call in generated output
Offen
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- OCaml
- Sterne
- 7.5k
- Forks
- 485
- Ø Merge
- 1 T. 2 Std.
- Gemergte PRs (30 T.)
- 55
Beschreibung
// External binding to global "test"
@val external _test: (string, (unit => unit) => unit) => unit = "test"
// Wrapper function shadows the external's target name
let test = (name, callback) => {
_test(name, _done => callback())
}
// BUG: This should call global test(), but calls local wrapper instead
let broken = () => {
_test("async", done => done())
}
Generates:
// Generated by ReScript, PLEASE EDIT WITH CARE
function test(name, callback) {
globalThis.test(name, _done => callback());
}
function broken() {
test("async", done => done());
}
export {
test,
broken,
}
/* No side effect */
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduziere Issue 8153 mit dem eingebetteten ReScript-Quelltext und untersuche das vom Compiler generierte JavaScript im Umfeld von test und broken. Vergleiche den erzeugten Aufruf mit dem globalen Ziel des externen Bindings; abgeschlossen ist es, wenn broken() den beabsichtigten globalThis.test()-Aufruf beibehält, statt ihn zum lokalen Wrapper aufzulösen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, ocaml
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100