Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

[TS] Bind lexical this when calling stored arrow functions

Fermée
#440 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
48/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
kotlin, typescript

Piste de recherche

Start with TsExprResolver.kt at the function-reference creation and indirect call resolution locations cited in the issue, and review the EtsIR dependency in UnitTestBot/jacodb#391. Replay lexicalThis through USVM and compare it with the TypeScript/Node.js result. Done means stored arrows return 12, ordinary stored functions retain dynamic receivers, and a focused test records both results.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

enhancement

Problem

A stored arrow function is called with the receiver of the property access instead of the this captured where the arrow was created. This is independent of the object-array symbolic-input problem that remains in #419.

Minimal TypeScript example

class Box {
  callback!: (value: number) => number;

  constructor(public offset: number) {}

  installOn(target: Box): void {
    target.callback = (value: number) => this.offset + value;
  }

  call(value: number): number {
    return this.callback(value);
  }
}

export function lexicalThis(): number {
  const source = new Box(11);
  const target = new Box(100);
  source.installOn(target);
  return target.call(1);
}

lexicalThis() returns 12 in TypeScript/Node.js. The related StoredFunctionCall test reported in #419 on the #418 head returned 101 in USVM, using the target receiver instead of the source receiver. This standalone snippet has not yet been replayed through USVM.

Dependency and source evidence

  • UnitTestBot/jacodb#391 tracks preserving the arrow/function distinction and lexical receiver in EtsIR. This issue owns the USVM call binding after that representation is available.
  • Function-reference creation constructs the reference from the lifted method and closure environment.
  • Indirect call resolution uses callee.thisInstance for the call.

The source links are pinned to USVM main 53dce8f3. The related failure was observed on the #418 head; it is not claimed as a fresh main-branch replay.

Acceptance criteria

  • A stored arrow retains its lexical this when assigned to and called through another object; the example returns 12.
  • An ordinary stored function expression still uses its dynamic call receiver.
  • A focused test checks the USVM result and confirms a concrete TypeScript/Node.js replay.
Langage dominant
Kotlin
Étoiles
33
Forks
27
Merge moyen
3 j 21 h
PR mergées (30 j)
88

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de UnitTestBot/usvm

Toutes les issues de UnitTestBot/usvm

Issues similaires

Plus d'issues Kotlin

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.