rescript-lang / rescript-lang/rescript

Invalid function call in generated output

Offen
#8,153 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

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