From 6d26c9c6e4b5adf4d5e298a705d41bcb913a676a Mon Sep 17 00:00:00 2001 From: Chris Hansen Date: Wed, 4 Dec 2019 15:22:27 -0500 Subject: [PATCH] Fix blocking due to very slow regex execution in "parseFunction" --- src/lib/functions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/functions.ts b/src/lib/functions.ts index b289a944..579e74c8 100644 --- a/src/lib/functions.ts +++ b/src/lib/functions.ts @@ -74,7 +74,7 @@ export const parseSubroutine = (line: TextLine) => { return _parse(line, MethodType.Subroutine); }; export const _parse = (line: TextLine, type: MethodType) => { - const functionRegEx = /([a-zA-Z]+(\([\w.=]+\))*)*\s*\bfunction\b\s*([a-zA-Z_][a-z0-9_]*)\s*\((\s*[a-z_][a-z0-9_,\s]*)*\s*(\)|\&)\s*(result\([a-z_][\w]*(\)|\&))*/i; + const functionRegEx = /(?<=([a-zA-Z]+(\([\w.=]+\))*)*)\s*\bfunction\b\s*([a-zA-Z_][a-z0-9_]*)\s*\((\s*[a-z_][a-z0-9_,\s]*)*\s*(?:\)|\&)\s*(result\([a-z_][\w]*(?:\)|\&))*/i; const subroutineRegEx = /^\s*(?!\bend\b)\w*\s*\bsubroutine\b\s*([a-z][a-z0-9_]*)\s*(?:\((\s*[a-z][a-z0-9_,\s]*)*\s*(\)|\&))*/i; const regEx = type === MethodType.Subroutine ? subroutineRegEx : functionRegEx;