From 8473db40b6229d81c8e4f40de2a80446681945bd Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Wed, 17 Apr 2024 14:47:26 +0200 Subject: [PATCH] test: Add fixture for defineProperty call with recursive property access This currently causes a Maximum call stack size exceeded exception within TypeScript's checker#typeToString method. --- .../linter/general/RecursiveDefineProperty.js | 4 ++++ test/lib/linter/snapshots/linter.ts.md | 22 ++++++++++++++++++ test/lib/linter/snapshots/linter.ts.snap | Bin 7850 -> 8000 bytes 3 files changed, 26 insertions(+) create mode 100644 test/fixtures/linter/general/RecursiveDefineProperty.js diff --git a/test/fixtures/linter/general/RecursiveDefineProperty.js b/test/fixtures/linter/general/RecursiveDefineProperty.js new file mode 100644 index 000000000..40d46f107 --- /dev/null +++ b/test/fixtures/linter/general/RecursiveDefineProperty.js @@ -0,0 +1,4 @@ +// See https://github.com/SAP/ui5-linter/issues/75 +Object.defineProperty(globalThis, "myProp", { + value: true || window.foo +}); diff --git a/test/lib/linter/snapshots/linter.ts.md b/test/lib/linter/snapshots/linter.ts.md index d333f62e9..da0201c90 100644 --- a/test/lib/linter/snapshots/linter.ts.md +++ b/test/lib/linter/snapshots/linter.ts.md @@ -203,6 +203,28 @@ Generated by [AVA](https://avajs.dev). }, ] +## General: RecursiveDefineProperty.js + +> Snapshot 1 + + [ + { + coverageInfo: [], + errorCount: 1, + fatalErrorCount: 1, + filePath: 'RecursiveDefineProperty.js', + messages: [ + { + fatal: true, + message: 'Maximum call stack size exceeded', + ruleId: 'ui5-linter-parsing-error', + severity: 2, + }, + ], + warningCount: 0, + }, + ] + ## General: TSLike.js > Snapshot 1 diff --git a/test/lib/linter/snapshots/linter.ts.snap b/test/lib/linter/snapshots/linter.ts.snap index 8341c582af937663412a1a2b99f651be9fb6b49e..fe34b54466e3395a803e5acfb5bb353da24e742c 100644 GIT binary patch literal 8000 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