documentationjs / documentationjs/documentation

TypeError when inferring this for anonymous class declarations

Aperta
#987 0 commenti 1 reazione 0 assegnatari Vedi su GitHub
Lingua principale
JavaScript
Stelle
5.8k
Fork
481
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

When using the `build` function from the documentation v5.3.5 API in Node.js v8.9.3, then the following source code causes a fatal exception:

```js
exports.Named = class {

constructor(name, score, foo, options = {}) {
/** @private */
this._score = score;
}

};
```

The error log:
```
[2018-01-01T07:39:01.605] [ERROR] TypeError: Cannot read property 'name' of null
at ThisExpression (/cargo/dep/service/node_modules/documentation/lib/infer/membership.js:67:67)
at NodePath._call (/cargo/dep/service/node_modules/babel-traverse/lib/path/context.js:76:18)
at NodePath.call (/cargo/dep/service/node_modules/babel-traverse/lib/path/context.js:48:17)
at NodePath.visit (/cargo/dep/service/node_modules/babel-traverse/lib/path/context.js:105:12)
at TraversalContext.visitQueue (/cargo/dep/service/node_modules/babel-traverse/lib/context.js:150:16)
at TraversalContext.visitSingle (/cargo/dep/service/node_modules/babel-traverse/lib/context.js:108:19)
at TraversalContext.visit (/cargo/dep/service/node_modules/babel-traverse/lib/context.js:192:19)
at Function.traverse.node (/cargo/dep/service/node_modules/babel-traverse/lib/index.js:114:17)
at traverse (/cargo/dep/service/node_modules/babel-traverse/lib/index.js:79:12)
at NodePath.traverse (/cargo/dep/service/node_modules/babel-traverse/lib/path/index.js:144:25)
```

There are probably good reasons for not declaring classes like in the offending source code, but it should not cause documentation to crash, I suppose.

Could it be that the class is not recognised because of the way it is declared, causing trouble when processing the 'this'-expression?

Regards,
Wouter

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Riproduci il crash con l’API di build v5.3.5 documentata e il codice sorgente della classe anonima mostrato nell’issue. Inizia da lib/infer/membership.js, in particolare da ThisExpression intorno alla riga 67, e segui come viene inferita la dichiarazione della classe. Il lavoro è completato quando l’input non solleva più il TypeError segnalato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
babel, javascript, node.js
Ambito
documentation, tooling
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.