Class names `eval` and `arguments` are not reported as invalid strict mode bindings
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 68/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- typescript
- Ambito
- compilers
Direzione di ricerca
Inizia nel binder da bindClassLikeDeclaration e confronta i suoi controlli dello strict mode con checkStrictModeFunctionName; l’issue individua il controllo mancante e la condizione del contesto ambient. Trova i test di regressione del binder e copri le dichiarazioni di classe, le espressioni di classe e i file .js con checkJs. Il lavoro è completato quando i nomi di classe eval e arguments generano la diagnostica prevista dello strict mode senza modificare i casi validi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Acknowledgement
- I acknowledge that issues using this template may be closed without further explanation at the maintainer's discretion.
Comment
🔎 Search Terms
class name eval arguments, class arguments strict mode, TS1210 class name, TS1215 class declaration, checkStrictModeEvalOrArguments class
🕗 Version & Regression Information
- This is the behavior in every version I tried (4.0.8, 5.0.4, 6.0.2, 7.1.0-dev.20261006.1), and I reviewed the FAQ for entries about strict mode and reserved words
⏯ Playground Link
💻 Code
class arguments {} // no error, expected TS1210
class eval {} // no error, expected TS1210
const C = class eval {}; // no error, expected TS1210
declare class eval {} // no error, expected TS1210
// For comparison, all other strict-mode bindings are reported:
function f() {
class D { m(arguments: number) {} } // TS1210
}
export {};
🙁 Actual behavior
No errors are reported for the class names. The emitted JavaScript is rejected at runtime:
$ node out.js
SyntaxError: Unexpected eval or arguments in strict mode
The same happens in a .js file with checkJs enabled.
🙂 Expected behavior
Each class name eval / arguments should be reported, as other strict mode bindings already are. Per the spec, all parts of a class are strict mode code (ECMA-262 §11.2.2), and it is an early error for a BindingIdentifier in strict mode code to be eval or arguments (§13.1.1). This applies to both class declarations and class expressions.
Additional information about the issue
In the binder, function names (checkStrictModeFunctionName), variable declarations (bindVariableDeclarationOrBindingElement) and parameters (bindParameter) all call checkStrictModeEvalOrArguments. bindClassLikeDeclaration never does, so class names skip this check.
bindWorker already sets inStrictMode = true for ClassDeclaration / ClassExpression before it calls bindClassLikeDeclaration. So a fix could follow checkStrictModeFunctionName: call checkStrictModeEvalOrArguments(node, node.name) in bindClassLikeDeclaration when not in an ambient context.
Found this issue while fixing the same bug in Babel's parser: https://github.com/babel/babel/pull/18315
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 15.5k
- Merge medio
- 1g 18h
- PR unite (30g)
- 156
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/TypeScript
-
Non-enum CLI options with multiple values separated by comma and space aren't whitespace trimmedForse già presa @RyanCavanaugh l’ha presa 2 giorni fa. ApertaBug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
microsoft/TypeScript#64618 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
TypeScript 7 VS Code extension: a workspace "typescript" 7.x package is not detected, only "@typescript/native-preview", which is no longer publishedForse già presa @jakebailey l’ha presa 2 giorni fa. ApertaNeeds Investigation
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
microsoft/TypeScript#64565 · 1 reazione · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
`EFNoLeadingComments` suppresses synthesized leading comments in tsgo; Strada only suppresses source commentsForse già presa @weswigham l’ha presa 9 giorni fa. ApertaNeeds Investigation
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
microsoft/TypeScript#64453 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
enhance: Add tests for premature caching of contextual parameter typesForse già presa @luchenxu73 l’ha presa 23 giorni fa. ApertaPossible Improvement
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
microsoft/TypeScript#64278 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
dom.generated.d.ts is missing from this repo while still referenced in the docsForse di nuovo libera @seanxuu l’ha presa 36 giorni fa e non c’è nessuna pull request aperta. ApertaDocs
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
microsoft/TypeScript#64118 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di microsoft/TypeScript
Issue simili
-
Idle compaction monitors LIST the replica every tick when the newest destination file spans more than one TXIDForse già presa @pishuv l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
benbjohnson/litestream#1563 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
agent-research agent-review-finding chore
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
jordansmall/spindrift#4922 ·
I maintainer di solito rispondono entro 1 giorno
-
gcsartifact: deleting a missing version returns an errorForse già presa @ktsoator l’ha presa oggi. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
govulncheck
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno