From 64c3a5a1a11afaa4a2309ed7ade3bce0d0d41afa Mon Sep 17 00:00:00 2001 From: TrickyPi <530257315@qq.com> Date: Tue, 6 Dec 2022 13:17:59 +0800 Subject: [PATCH] feat: add sutiable RegExp prototype methods --- src/ast/values.ts | 11 +++++++++++ test/form/samples/builtin-prototypes/literal/main.js | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/src/ast/values.ts b/src/ast/values.ts index bb0297421aa..4d91b067f99 100644 --- a/src/ast/values.ts +++ b/src/ast/values.ts @@ -200,6 +200,14 @@ const literalNumberMembers: MemberDescriptions = assembleMemberDescriptions( objectMembers ); +const literalRegExpMembers: MemberDescriptions = assembleMemberDescriptions( + { + exec: returnsUnknown, + test: returnsBoolean + }, + objectMembers +); + export const literalStringMembers: MemberDescriptions = assembleMemberDescriptions( { anchor: returnsString, @@ -258,6 +266,9 @@ export const literalStringMembers: MemberDescriptions = assembleMemberDescriptio export function getLiteralMembersForValue( value: T ): MemberDescriptions { + if (value instanceof RegExp) { + return literalRegExpMembers; + } switch (typeof value) { case 'boolean': { return literalBooleanMembers; diff --git a/test/form/samples/builtin-prototypes/literal/main.js b/test/form/samples/builtin-prototypes/literal/main.js index d3add5bb105..e079316f4d7 100644 --- a/test/form/samples/builtin-prototypes/literal/main.js +++ b/test/form/samples/builtin-prototypes/literal/main.js @@ -48,6 +48,10 @@ const _numberHasOwnProperty = (1).hasOwnProperty('toString').valueOf(); const _numberIsPrototypeOf = (1).isPrototypeOf(1).valueOf(); const _numberPropertyIsEnumerable = (1).propertyIsEnumerable('toString').valueOf(); +// RegExp prototype +/1/.test(2); +/1/.exec(1); + // string prototype 'ab'.valueOf(); 'ab'.valueOf().valueOf();