@@ -3224,9 +3224,7 @@ func (c *Checker) checkImportType(node *ast.Node) {
32243224func (c *Checker) getResolutionModeOverride(node *ast.ImportAttributes, reportErrors bool) core.ResolutionMode {
32253225 if len(node.Attributes.Nodes) != 1 {
32263226 if reportErrors {
3227- c.grammarErrorOnNode(node.AsNode(), core.IfElse(node.Token == ast.KindWithKeyword,
3228- diagnostics.Type_import_attributes_should_have_exactly_one_key_resolution_mode_with_value_import_or_require,
3229- diagnostics.Type_import_assertions_should_have_exactly_one_key_resolution_mode_with_value_import_or_require))
3227+ c.grammarErrorOnNode(node.AsNode(), diagnostics.Type_import_attributes_should_have_exactly_one_key_resolution_mode_with_value_import_or_require)
32303228 }
32313229 return core.ResolutionModeNone
32323230 }
@@ -3236,9 +3234,7 @@ func (c *Checker) getResolutionModeOverride(node *ast.ImportAttributes, reportEr
32363234 }
32373235 if elem.Name().Text() != "resolution-mode" {
32383236 if reportErrors {
3239- c.grammarErrorOnNode(elem.Name(), core.IfElse(node.Token == ast.KindWithKeyword,
3240- diagnostics.X_resolution_mode_is_the_only_valid_key_for_type_import_attributes,
3241- diagnostics.X_resolution_mode_is_the_only_valid_key_for_type_import_assertions))
3237+ c.grammarErrorOnNode(elem.Name(), diagnostics.X_resolution_mode_is_the_only_valid_key_for_type_import_attributes)
32423238 }
32433239 return core.ResolutionModeNone
32443240 }
@@ -5203,14 +5199,11 @@ func (c *Checker) checkExternalImportOrExportDeclaration(node *ast.Node) bool {
52035199 if !ast.IsImportEqualsDeclaration(node) {
52045200 attributes := ast.GetImportAttributes(node)
52055201 if attributes != nil {
5206- diagnostic := core.IfElse(attributes.AsImportAttributes().Token == ast.KindWithKeyword,
5207- diagnostics.Import_attribute_values_must_be_string_literal_expressions,
5208- diagnostics.Import_assertion_values_must_be_string_literal_expressions)
52095202 hasError := false
52105203 for _, attr := range attributes.AsImportAttributes().Attributes.Nodes {
52115204 if !ast.IsStringLiteral(attr.AsImportAttribute().Value) {
52125205 hasError = true
5213- c.error(attr.AsImportAttribute().Value, diagnostic )
5206+ c.error(attr.AsImportAttribute().Value, diagnostics.Import_attribute_values_must_be_string_literal_expressions )
52145207 }
52155208 }
52165209 return !hasError
@@ -5256,40 +5249,24 @@ func (c *Checker) checkImportAttributes(declaration *ast.Node) {
52565249 }
52575250 isTypeOnly := ast.IsExclusivelyTypeOnlyImportOrExport(declaration)
52585251 override := c.getResolutionModeOverride(node.AsImportAttributes(), isTypeOnly)
5259- isImportAttributes := node.AsImportAttributes().Token == ast.KindWithKeyword
52605252 if isTypeOnly && override != core.ResolutionModeNone {
5261- return // Other grammar checks do not apply to type-only imports with resolution mode assertions
5253+ return // Other grammar checks do not apply to type-only imports with resolution mode attributes
52625254 }
52635255
52645256 if !c.moduleKind.SupportsImportAttributes() {
5265- if isImportAttributes {
5266- c.grammarErrorOnNode(node, diagnostics.Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext_or_preserve)
5267- } else {
5268- c.grammarErrorOnNode(node, diagnostics.Import_assertions_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext_or_preserve)
5269- }
5270- return
5271- }
5272-
5273- if core.ModuleKindNode20 <= c.moduleKind && c.moduleKind <= core.ModuleKindNodeNext && !isImportAttributes {
5274- c.grammarErrorOnNode(node, diagnostics.Import_assertions_have_been_replaced_by_import_attributes_Use_with_instead_of_assert)
5257+ c.grammarErrorOnNode(node, diagnostics.Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext_or_preserve)
52755258 return
52765259 }
52775260
52785261 if moduleSpecifier := getModuleSpecifierFromNode(declaration); moduleSpecifier != nil {
52795262 if c.getEmitSyntaxForModuleSpecifierExpression(moduleSpecifier) == core.ModuleKindCommonJS {
5280- if isImportAttributes {
5281- c.grammarErrorOnNode(node, diagnostics.Import_attributes_are_not_allowed_on_statements_that_compile_to_CommonJS_require_calls)
5282- } else {
5283- c.grammarErrorOnNode(node, diagnostics.Import_assertions_are_not_allowed_on_statements_that_compile_to_CommonJS_require_calls)
5284- }
5263+ c.grammarErrorOnNode(node, diagnostics.Import_attributes_are_not_allowed_on_statements_that_compile_to_CommonJS_require_calls)
52855264 return
52865265 }
52875266 }
52885267
52895268 if isTypeOnly {
5290- c.grammarErrorOnNode(node, core.IfElse(isImportAttributes,
5291- diagnostics.Import_attributes_cannot_be_used_with_type_only_imports_or_exports,
5292- diagnostics.Import_assertions_cannot_be_used_with_type_only_imports_or_exports))
5269+ c.grammarErrorOnNode(node, diagnostics.Import_attributes_cannot_be_used_with_type_only_imports_or_exports)
52935270 return
52945271 }
52955272 if override != core.ResolutionModeNone {
@@ -8063,6 +8040,14 @@ func (c *Checker) checkImportCallExpression(node *ast.Node) *Type {
80638040 if importCallOptionsType != c.emptyObjectType {
80648041 c.checkTypeAssignableTo(optionsType, c.getNullableType(importCallOptionsType, TypeFlagsUndefined), args[1], nil)
80658042 }
8043+ if ast.IsObjectLiteralExpression(args[1]) {
8044+ for _, prop := range args[1].AsObjectLiteralExpression().Properties.Nodes {
8045+ if ast.IsPropertyAssignment(prop) && ast.IsIdentifier(prop.Name()) && prop.Name().Text() == "assert" {
8046+ c.error(prop.Name(), diagnostics.Import_assertions_have_been_replaced_by_import_attributes_Use_with_instead_of_assert)
8047+ break
8048+ }
8049+ }
8050+ }
80668051 }
80678052 // resolveExternalModuleName will return undefined if the moduleReferenceExpression is not a string literal
80688053 moduleSymbol := c.resolveExternalModuleName(node, specifier, false /*ignoreErrors*/)
0 commit comments