1- import type { NodePath , Scope } from "@babel/traverse " ;
2- import traverse from "@babel/traverse " ;
1+ import type { File } from "@babel/core " ;
2+ import environmentVisitor from "@babel/helper-environment-visitor " ;
33import memberExpressionToFunctions from "@babel/helper-member-expression-to-functions" ;
44import type { HandlerState } from "@babel/helper-member-expression-to-functions" ;
55import optimiseCall from "@babel/helper-optimise-call-expression" ;
6- import environmentVisitor from "@babel/helper-environment-visitor" ;
6+ import template from "@babel/template" ;
7+ import traverse from "@babel/traverse" ;
8+ import type { NodePath , Scope } from "@babel/traverse" ;
79import {
810 assignmentExpression ,
911 booleanLiteral ,
@@ -16,7 +18,6 @@ import {
1618 thisExpression ,
1719} from "@babel/types" ;
1820import type * as t from "@babel/types" ;
19- import type { File } from "@babel/core" ;
2021
2122// TODO (Babel 8): Don't export this.
2223export {
@@ -107,7 +108,13 @@ type SuperMember = NodePath<
107108interface SpecHandler
108109 extends Pick <
109110 Handler ,
110- "get" | "set" | "destructureSet" | "call" | "optionalCall" | "memoise"
111+ | "memoise"
112+ | "get"
113+ | "set"
114+ | "destructureSet"
115+ | "call"
116+ | "optionalCall"
117+ | "delete"
111118 > {
112119 _get (
113120 this : Handler & SpecHandler ,
@@ -240,6 +247,23 @@ const specHandlers: SpecHandler = {
240247 true ,
241248 ) ;
242249 } ,
250+
251+ delete ( this : Handler & SpecHandler , superMember : SuperMember ) {
252+ if ( superMember . node . computed ) {
253+ return sequenceExpression ( [
254+ callExpression ( this . file . addHelper ( "toPropertyKey" ) , [
255+ cloneNode ( superMember . node . property ) ,
256+ ] ) ,
257+ template . expression . ast `
258+ function () { throw new ReferenceError("'delete super[expr]' is invalid"); }()
259+ ` ,
260+ ] ) ;
261+ } else {
262+ return template . expression . ast `
263+ function () { throw new ReferenceError("'delete super.prop' is invalid"); }()
264+ ` ;
265+ }
266+ } ,
243267} ;
244268
245269const looseHandlers = {
0 commit comments