swiftwasm / swiftwasm/JavaScriptKit

Mutating functions are not supported on structs

Ouverte
#736 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Swift
Étoiles
986
Forks
76
Merge moyen
21 h 11 min
PR mergées (30 j)
4

Description

Marking a mutating function on a structure @JS results in a compilation failure in the generated code.

For example, this struct generates code which fails to compile.

@JS struct Counter {

    var number: Int

    @JS public mutating func increment() {
        number += 1
    }

}
@_expose(wasm, "bjs_Counter_increment")
@_cdecl("bjs_Counter_increment")
public func _bjs_Counter_increment() -> Void {
    #if arch(wasm32)
    Counter.bridgeJSLiftParameter().increment() // error: cannot use mutating member on immutable value: function call returns immutable value
    #else
    fatalError("Only available on WebAssembly")
    #endif
}

Guide de contribution

Ouvrir le guide de contribution

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.

Piste de recherche

Commencez par la gestion de @JS struct et du wrapper généré _bjs_Counter_increment présenté dans l’issue, puis reproduisez l’échec de compilation avec l’exemple Counter. C’est terminé lorsqu’une @JS struct avec une fonction mutante génère du code qui se compile correctement pour WebAssembly.

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

Évaluation

Stack technique
javascript, swift, wasm
Domaine
compilers, web-dev
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
52/100

Recevez les nouvelles issues par e-mail

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