@@ -214,15 +214,25 @@ func parseOwnConfigOfJsonSourceFile(
214214 } else if keyText != "" && extraKeyDiagnostics (parentOption .Name ) != nil {
215215 unknownNameDiag := extraKeyDiagnostics (parentOption .Name )
216216 if parentOption .ElementOptions != nil {
217- // !!! TODO: support suggestion
218- propertySetErrors = append (propertySetErrors , createUnknownOptionError (
219- keyText ,
220- unknownNameDiag ,
221- "" , /*unknownOptionErrorText*/
222- propertyAssignment .Name (),
223- sourceFile ,
224- nil , /*alternateMode*/
225- ))
217+ possibleOption := parentOption .ElementOptions .Get (keyText )
218+ if possibleOption != nil && possibleOption .Name != keyText {
219+ propertySetErrors = append (propertySetErrors , CreateDiagnosticForNodeInSourceFileOrCompilerDiagnostic (
220+ sourceFile ,
221+ propertyAssignment .Name (),
222+ extraKeyDidYouMeanDiagnostics (parentOption .Name ),
223+ keyText ,
224+ possibleOption .Name ,
225+ ))
226+ } else {
227+ propertySetErrors = append (propertySetErrors , createUnknownOptionError (
228+ keyText ,
229+ unknownNameDiag ,
230+ "" , /*unknownOptionErrorText*/
231+ propertyAssignment .Name (),
232+ sourceFile ,
233+ nil , /*alternateMode*/
234+ ))
235+ }
226236 } else {
227237 // errors = append(errors, ast.NewCompilerDiagnostic(diagnostics.Unknown_compiler_option_0_Did_you_mean_1, keyText, core.FindKey(parentOption.ElementOptions, keyText)))
228238 }
@@ -611,8 +621,12 @@ func convertOptionsFromJson[O optionParser](optionsNameMap CommandLineOptionName
611621 var errors []* ast.Diagnostic
612622 for key , value := range jsonMap .Entries () {
613623 opt := optionsNameMap .Get (key )
624+ if opt != nil && opt .Name != key {
625+ // Case-insensitive match found but exact case doesn't match - provide "did you mean" suggestion
626+ errors = append (errors , CreateDiagnosticForNodeInSourceFileOrCompilerDiagnostic (nil , nil , result .UnknownDidYouMeanDiagnostic (), key , opt .Name ))
627+ continue
628+ }
614629 if opt == nil {
615- // !!! TODO?: support suggestion
616630 errors = append (errors , createUnknownOptionError (key , result .UnknownOptionDiagnostic (), "" , nil , nil , nil ))
617631 continue
618632 }
@@ -746,6 +760,9 @@ func convertObjectLiteralExpressionToJson(
746760 var option * CommandLineOption = nil
747761 if keyText != "" && objectOption != nil && objectOption .ElementOptions != nil {
748762 option = objectOption .ElementOptions .Get (keyText )
763+ if option != nil && option .Name != keyText {
764+ option = nil
765+ }
749766 }
750767 value , err := convertPropertyValueToJson (sourceFile , element .AsPropertyAssignment ().Initializer , option , returnValue , jsonConversionNotifier )
751768 errors = append (errors , err ... )
0 commit comments