From 3b20e705e99b1a63559746e4d6d29c61ffa9a5ba Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Mon, 6 Feb 2023 13:03:41 -0800 Subject: [PATCH 1/3] Don't set NodeFlags.JavaScriptFile on JSON, avoid asking for JSDoc --- src/compiler/checker.ts | 5 ++--- src/compiler/parser.ts | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 62aab9ca5c062..a87215286d71a 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -546,7 +546,6 @@ import { isInitializedProperty, isInJSDoc, isInJSFile, - isInJsonFile, isInterfaceDeclaration, isInternalModuleImportEqualsDeclaration, isInTopLevelContext, @@ -29667,8 +29666,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { (contextualType.pattern.kind === SyntaxKind.ObjectBindingPattern || contextualType.pattern.kind === SyntaxKind.ObjectLiteralExpression); const inConstContext = isConstContext(node); const checkFlags = inConstContext ? CheckFlags.Readonly : 0; - const isInJavascript = isInJSFile(node) && !isInJsonFile(node); - const enumTag = getJSDocEnumTag(node); + const isInJavascript = isInJSFile(node); + const enumTag = isInJavascript ? getJSDocEnumTag(node) : undefined; const isJSObjectLiteral = !contextualType && isInJavascript && !enumTag; let objectFlags: ObjectFlags = freshObjectLiteralFlag; let patternWithComputedProperties = false; diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 0baf8b65bc412..7fee05520c1a6 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -1681,7 +1681,7 @@ namespace Parser { contextFlags = NodeFlags.JavaScriptFile; break; case ScriptKind.JSON: - contextFlags = NodeFlags.JavaScriptFile | NodeFlags.JsonFile; + contextFlags = NodeFlags.JsonFile; break; default: contextFlags = NodeFlags.None; From f6f3090a021c66823089608aa97313a68afde69e Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Mon, 6 Feb 2023 17:20:42 -0800 Subject: [PATCH 2/3] Temporarily revert JSON change for perf testing --- src/compiler/checker.ts | 3 ++- src/compiler/parser.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index a87215286d71a..67780b09b5b8a 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -546,6 +546,7 @@ import { isInitializedProperty, isInJSDoc, isInJSFile, + isInJsonFile, isInterfaceDeclaration, isInternalModuleImportEqualsDeclaration, isInTopLevelContext, @@ -29666,7 +29667,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { (contextualType.pattern.kind === SyntaxKind.ObjectBindingPattern || contextualType.pattern.kind === SyntaxKind.ObjectLiteralExpression); const inConstContext = isConstContext(node); const checkFlags = inConstContext ? CheckFlags.Readonly : 0; - const isInJavascript = isInJSFile(node); + const isInJavascript = isInJSFile(node) && !isInJsonFile(node); const enumTag = isInJavascript ? getJSDocEnumTag(node) : undefined; const isJSObjectLiteral = !contextualType && isInJavascript && !enumTag; let objectFlags: ObjectFlags = freshObjectLiteralFlag; diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 7fee05520c1a6..0baf8b65bc412 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -1681,7 +1681,7 @@ namespace Parser { contextFlags = NodeFlags.JavaScriptFile; break; case ScriptKind.JSON: - contextFlags = NodeFlags.JsonFile; + contextFlags = NodeFlags.JavaScriptFile | NodeFlags.JsonFile; break; default: contextFlags = NodeFlags.None; From 63141e46253c228027b810d68c42aa5e95c2c181 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Mon, 6 Mar 2023 10:54:55 -0800 Subject: [PATCH 3/3] Revert "Temporarily revert JSON change for perf testing" This reverts commit f6f3090a021c66823089608aa97313a68afde69e. --- src/compiler/checker.ts | 3 +-- src/compiler/parser.ts | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 67780b09b5b8a..a87215286d71a 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -546,7 +546,6 @@ import { isInitializedProperty, isInJSDoc, isInJSFile, - isInJsonFile, isInterfaceDeclaration, isInternalModuleImportEqualsDeclaration, isInTopLevelContext, @@ -29667,7 +29666,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { (contextualType.pattern.kind === SyntaxKind.ObjectBindingPattern || contextualType.pattern.kind === SyntaxKind.ObjectLiteralExpression); const inConstContext = isConstContext(node); const checkFlags = inConstContext ? CheckFlags.Readonly : 0; - const isInJavascript = isInJSFile(node) && !isInJsonFile(node); + const isInJavascript = isInJSFile(node); const enumTag = isInJavascript ? getJSDocEnumTag(node) : undefined; const isJSObjectLiteral = !contextualType && isInJavascript && !enumTag; let objectFlags: ObjectFlags = freshObjectLiteralFlag; diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 0baf8b65bc412..7fee05520c1a6 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -1681,7 +1681,7 @@ namespace Parser { contextFlags = NodeFlags.JavaScriptFile; break; case ScriptKind.JSON: - contextFlags = NodeFlags.JavaScriptFile | NodeFlags.JsonFile; + contextFlags = NodeFlags.JsonFile; break; default: contextFlags = NodeFlags.None;