From f39ba1d8c099524d84cff9b501533f719d4aa90b Mon Sep 17 00:00:00 2001 From: Eugene Auduchinok Date: Wed, 17 Jan 2024 14:36:32 +0100 Subject: [PATCH 1/4] Sort error numbers --- src/Compiler/Driver/CompilerDiagnostics.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Compiler/Driver/CompilerDiagnostics.fs b/src/Compiler/Driver/CompilerDiagnostics.fs index 3327aa0a635..6aa9859b90e 100644 --- a/src/Compiler/Driver/CompilerDiagnostics.fs +++ b/src/Compiler/Driver/CompilerDiagnostics.fs @@ -216,7 +216,6 @@ type Exception with // DO NOT CHANGE THESE NUMBERS | ErrorFromAddingTypeEquation _ -> 1 | FunctionExpected _ -> 2 - | NotAFunctionButIndexer _ -> 3217 | NotAFunction _ -> 3 | FieldNotMutable _ -> 5 | Recursion _ -> 6 @@ -320,7 +319,6 @@ type Exception with | BadEventTransformation _ -> 91 | HashLoadedScriptConsideredSource _ -> 92 | UnresolvedConversionOperator _ -> 93 - | ArgumentsInSigAndImplMismatch _ -> 3218 // avoid 94-100 for safety | ObsoleteError _ -> 101 #if !NO_TYPEPROVIDERS @@ -328,6 +326,8 @@ type Exception with | TypeProviders.ProvidedTypeResolution _ -> 103 #endif | PatternMatchCompilation.EnumMatchIncomplete _ -> 104 + | NotAFunctionButIndexer _ -> 3217 + | ArgumentsInSigAndImplMismatch _ -> 3218 // Strip TargetInvocationException wrappers | :? TargetInvocationException as e -> e.InnerException.DiagnosticNumber From 1a6647f89013b87396ffb3cfd68b2831ca18dcef Mon Sep 17 00:00:00 2001 From: Eugene Auduchinok Date: Wed, 17 Jan 2024 14:41:49 +0100 Subject: [PATCH 2/4] Cleanup --- src/Compiler/Symbols/FSharpDiagnostic.fs | 23 +++++++++++++---------- src/Compiler/Symbols/FSharpDiagnostic.fsi | 15 ++++++++++----- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/Compiler/Symbols/FSharpDiagnostic.fs b/src/Compiler/Symbols/FSharpDiagnostic.fs index 2c27e7e2ff3..4a40ffc93c8 100644 --- a/src/Compiler/Symbols/FSharpDiagnostic.fs +++ b/src/Compiler/Symbols/FSharpDiagnostic.fs @@ -68,8 +68,8 @@ module ExtendedData = type IFSharpDiagnosticExtendedData = interface end [] - type TypeMismatchDiagnosticExtendedData - internal (symbolEnv: SymbolEnv, dispEnv: DisplayEnv, expectedType: TType, actualType: TType, context: DiagnosticContextInfo) = + type TypeMismatchDiagnosticExtendedData(symbolEnv: SymbolEnv, dispEnv: DisplayEnv, expectedType: TType, actualType: TType, context: DiagnosticContextInfo) = + interface IFSharpDiagnosticExtendedData member x.ExpectedType = FSharpType(symbolEnv, expectedType) @@ -78,30 +78,33 @@ module ExtendedData = member x.DisplayContext = FSharpDisplayContext(fun _ -> dispEnv) [] - type ExpressionIsAFunctionExtendedData - internal (symbolEnv: SymbolEnv, actualType: TType) = + type ExpressionIsAFunctionExtendedData(symbolEnv: SymbolEnv, actualType: TType) = + interface IFSharpDiagnosticExtendedData member x.ActualType = FSharpType(symbolEnv, actualType) [] - type FieldNotContainedDiagnosticExtendedData - internal (symbolEnv: SymbolEnv, implTycon: Tycon, sigTycon: Tycon, signatureField: RecdField, implementationField: RecdField) = + type FieldNotContainedDiagnosticExtendedData(symbolEnv: SymbolEnv, implTycon: Tycon, sigTycon: Tycon, signatureField: RecdField, implementationField: RecdField) = + interface IFSharpDiagnosticExtendedData + member x.SignatureField = FSharpField(symbolEnv, RecdFieldRef.RecdFieldRef(mkLocalTyconRef sigTycon, signatureField.Id.idText)) member x.ImplementationField = FSharpField(symbolEnv, RecdFieldRef.RecdFieldRef(mkLocalTyconRef implTycon, implementationField.Id.idText)) [] - type ValueNotContainedDiagnosticExtendedData - internal (symbolEnv: SymbolEnv, signatureValue: Val, implValue: Val) = + type ValueNotContainedDiagnosticExtendedData(symbolEnv: SymbolEnv, signatureValue: Val, implValue: Val) = + interface IFSharpDiagnosticExtendedData + member x.SignatureValue = FSharpMemberOrFunctionOrValue(symbolEnv, mkLocalValRef signatureValue) member x.ImplementationValue = FSharpMemberOrFunctionOrValue(symbolEnv, mkLocalValRef implValue) [] - type ArgumentsInSigAndImplMismatchExtendedData - internal(sigArg: Ident, implArg: Ident) = + type ArgumentsInSigAndImplMismatchExtendedData(sigArg: Ident, implArg: Ident) = + interface IFSharpDiagnosticExtendedData + member x.SignatureName = sigArg.idText member x.ImplementationName = implArg.idText member x.SignatureRange = sigArg.idRange diff --git a/src/Compiler/Symbols/FSharpDiagnostic.fsi b/src/Compiler/Symbols/FSharpDiagnostic.fsi index 252a15a33c1..c233718c70c 100644 --- a/src/Compiler/Symbols/FSharpDiagnostic.fsi +++ b/src/Compiler/Symbols/FSharpDiagnostic.fsi @@ -46,14 +46,15 @@ module public ExtendedData = /// Contextually-relevant data to each particular diagnostic [] - type public IFSharpDiagnosticExtendedData = + type IFSharpDiagnosticExtendedData = interface end /// Additional data for type-mismatch-like (usually with ErrorNumber = 1) diagnostics [] - type public TypeMismatchDiagnosticExtendedData = + type TypeMismatchDiagnosticExtendedData = interface IFSharpDiagnosticExtendedData + /// Represents F# type expected in the current context member ExpectedType: FSharpType /// Represents F# type type actual in the current context @@ -65,15 +66,17 @@ module public ExtendedData = /// Additional data for 'This expression is a function value, i.e. is missing arguments' diagnostic [] - type public ExpressionIsAFunctionExtendedData = + type ExpressionIsAFunctionExtendedData = interface IFSharpDiagnosticExtendedData + /// Represents F# type of the expression member ActualType: FSharpType /// Additional data for diagnostics about a field whose declarations differ in signature and implementation [] - type public FieldNotContainedDiagnosticExtendedData = + type FieldNotContainedDiagnosticExtendedData = interface IFSharpDiagnosticExtendedData + /// Represents F# field in signature file member SignatureField: FSharpField /// Represents F# field in implementation file @@ -81,8 +84,9 @@ module public ExtendedData = /// Additional data for diagnostics about a value whose declarations differ in signature and implementation [] - type public ValueNotContainedDiagnosticExtendedData = + type ValueNotContainedDiagnosticExtendedData = interface IFSharpDiagnosticExtendedData + /// Represents F# value in signature file member SignatureValue: FSharpMemberOrFunctionOrValue /// Represents F# value in implementation file @@ -92,6 +96,7 @@ module public ExtendedData = [] type ArgumentsInSigAndImplMismatchExtendedData = interface IFSharpDiagnosticExtendedData + /// Argument name in signature file member SignatureName: string /// Argument name in implementation file From 4067ac2e8b5a17b995d18dc6a18aff14dfaee185 Mon Sep 17 00:00:00 2001 From: Eugene Auduchinok Date: Wed, 17 Jan 2024 15:06:37 +0100 Subject: [PATCH 3/4] Diagnostics/extended data: support NoConstructorsAvailableForType --- src/Compiler/Checking/NameResolution.fs | 4 +++- src/Compiler/Checking/NameResolution.fsi | 2 ++ src/Compiler/Driver/CompilerDiagnostics.fs | 5 +++++ src/Compiler/FSComp.txt | 1 - src/Compiler/FSStrings.resx | 3 +++ src/Compiler/Symbols/FSharpDiagnostic.fs | 7 +++++++ src/Compiler/Symbols/FSharpDiagnostic.fsi | 6 ++++++ src/Compiler/xlf/FSComp.txt.cs.xlf | 5 ----- src/Compiler/xlf/FSComp.txt.de.xlf | 5 ----- src/Compiler/xlf/FSComp.txt.es.xlf | 5 ----- src/Compiler/xlf/FSComp.txt.fr.xlf | 5 ----- src/Compiler/xlf/FSComp.txt.it.xlf | 5 ----- src/Compiler/xlf/FSComp.txt.ja.xlf | 5 ----- src/Compiler/xlf/FSComp.txt.ko.xlf | 5 ----- src/Compiler/xlf/FSComp.txt.pl.xlf | 5 ----- src/Compiler/xlf/FSComp.txt.pt-BR.xlf | 5 ----- src/Compiler/xlf/FSComp.txt.ru.xlf | 5 ----- src/Compiler/xlf/FSComp.txt.tr.xlf | 5 ----- src/Compiler/xlf/FSComp.txt.zh-Hans.xlf | 5 ----- src/Compiler/xlf/FSComp.txt.zh-Hant.xlf | 5 ----- src/Compiler/xlf/FSStrings.cs.xlf | 5 +++++ src/Compiler/xlf/FSStrings.de.xlf | 5 +++++ src/Compiler/xlf/FSStrings.es.xlf | 5 +++++ src/Compiler/xlf/FSStrings.fr.xlf | 5 +++++ src/Compiler/xlf/FSStrings.it.xlf | 5 +++++ src/Compiler/xlf/FSStrings.ja.xlf | 5 +++++ src/Compiler/xlf/FSStrings.ko.xlf | 5 +++++ src/Compiler/xlf/FSStrings.pl.xlf | 5 +++++ src/Compiler/xlf/FSStrings.pt-BR.xlf | 5 +++++ src/Compiler/xlf/FSStrings.ru.xlf | 5 +++++ src/Compiler/xlf/FSStrings.tr.xlf | 5 +++++ src/Compiler/xlf/FSStrings.zh-Hans.xlf | 5 +++++ src/Compiler/xlf/FSStrings.zh-Hant.xlf | 5 +++++ 33 files changed, 91 insertions(+), 67 deletions(-) diff --git a/src/Compiler/Checking/NameResolution.fs b/src/Compiler/Checking/NameResolution.fs index 21bfa7a2308..9a57c11c31a 100644 --- a/src/Compiler/Checking/NameResolution.fs +++ b/src/Compiler/Checking/NameResolution.fs @@ -2550,6 +2550,8 @@ let ResolveLongIdentAsModuleOrNamespaceThen sink atMostOne amap m fullyQualified // Bind name used in "new Foo.Bar(...)" constructs //------------------------------------------------------------------------- +exception NoConstructorsAvailableForType of TType * DisplayEnv * range + let private ResolveObjectConstructorPrim (ncenv: NameResolver) edenv resInfo m ad ty = let g = ncenv.g let amap = ncenv.amap @@ -2570,7 +2572,7 @@ let private ResolveObjectConstructorPrim (ncenv: NameResolver) edenv resInfo m a [DefaultStructCtor(g, ty)] else [] if (isNil defaultStructCtorInfo && isNil ctorInfos) || (not (isAppTy g ty) && not (isAnyTupleTy g ty)) then - raze (Error(FSComp.SR.nrNoConstructorsAvailableForType(NicePrint.minimalStringOfType edenv ty), m)) + raze (NoConstructorsAvailableForType(ty, edenv, m)) else let ctorInfos = ctorInfos |> List.filter (IsMethInfoAccessible amap m ad) let metadataTy = convertToTypeWithMetadataIfPossible g ty diff --git a/src/Compiler/Checking/NameResolution.fsi b/src/Compiler/Checking/NameResolution.fsi index c80125f1862..241a43f6106 100755 --- a/src/Compiler/Checking/NameResolution.fsi +++ b/src/Compiler/Checking/NameResolution.fsi @@ -673,6 +673,8 @@ exception internal IndeterminateType of range /// Used to report a warning condition for the use of upper-case identifiers in patterns exception internal UpperCaseIdentifierInPattern of range +exception internal NoConstructorsAvailableForType of TType * DisplayEnv * range + /// Generate a new reference to a record field with a fresh type instantiation val FreshenRecdFieldRef: NameResolver -> range -> RecdFieldRef -> RecdFieldInfo diff --git a/src/Compiler/Driver/CompilerDiagnostics.fs b/src/Compiler/Driver/CompilerDiagnostics.fs index 6aa9859b90e..a31e159399b 100644 --- a/src/Compiler/Driver/CompilerDiagnostics.fs +++ b/src/Compiler/Driver/CompilerDiagnostics.fs @@ -326,6 +326,7 @@ type Exception with | TypeProviders.ProvidedTypeResolution _ -> 103 #endif | PatternMatchCompilation.EnumMatchIncomplete _ -> 104 + | NoConstructorsAvailableForType _ -> 1133 | NotAFunctionButIndexer _ -> 3217 | ArgumentsInSigAndImplMismatch _ -> 3218 @@ -605,6 +606,7 @@ module OldStyleMessages = let MSBuildReferenceResolutionErrorE () = Message("MSBuildReferenceResolutionError", "%s%s") let TargetInvocationExceptionWrapperE () = Message("TargetInvocationExceptionWrapper", "%s") let ArgumentsInSigAndImplMismatchE () = Message("ArgumentsInSigAndImplMismatch", "%s%s") + let NoConstructorsAvailableForTypeE () = Message("NoConstructorsAvailableForType", "%s") #if DEBUG let mutable showParserStackOnParseError = false @@ -1857,6 +1859,9 @@ type Exception with | ArgumentsInSigAndImplMismatch(sigArg, implArg) -> os.AppendString(ArgumentsInSigAndImplMismatchE().Format sigArg.idText implArg.idText) + | NoConstructorsAvailableForType(ty, denv, _) -> + os.AppendString(NoConstructorsAvailableForTypeE().Format(NicePrint.stringOfTy denv ty)) + // Strip TargetInvocationException wrappers | :? TargetInvocationException as exn -> exn.InnerException.Output(os, suggestNames) diff --git a/src/Compiler/FSComp.txt b/src/Compiler/FSComp.txt index 8df6fecfdfb..35512ef7235 100644 --- a/src/Compiler/FSComp.txt +++ b/src/Compiler/FSComp.txt @@ -1010,7 +1010,6 @@ lexfltSeparatorTokensOfPatternMatchMisaligned,"The '|' tokens separating rules o 1129,nrRecordDoesNotContainSuchLabel,"The record type '%s' does not contain a label '%s'." 1130,nrInvalidFieldLabel,"Invalid field label" 1132,nrInvalidExpression,"Invalid expression '%s'" -1133,nrNoConstructorsAvailableForType,"No constructors are available for the type '%s'" 1134,nrUnionTypeNeedsQualifiedAccess,"The union type for union case '%s' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('%s') in the name you are using." 1135,nrRecordTypeNeedsQualifiedAccess,"The record type for the record field '%s' was defined with the RequireQualifiedAccessAttribute. Include the name of the record type ('%s') in the name you are using." 1136,ilwriteErrorCreatingPdb,"Unexpected error creating debug information file '%s'" diff --git a/src/Compiler/FSStrings.resx b/src/Compiler/FSStrings.resx index e24b4737742..1d4878dea79 100644 --- a/src/Compiler/FSStrings.resx +++ b/src/Compiler/FSStrings.resx @@ -1113,6 +1113,9 @@ The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + No constructors are available for the type '{0}' + keyword 'while!' diff --git a/src/Compiler/Symbols/FSharpDiagnostic.fs b/src/Compiler/Symbols/FSharpDiagnostic.fs index 4a40ffc93c8..92833156971 100644 --- a/src/Compiler/Symbols/FSharpDiagnostic.fs +++ b/src/Compiler/Symbols/FSharpDiagnostic.fs @@ -110,6 +110,13 @@ module ExtendedData = member x.SignatureRange = sigArg.idRange member x.ImplementationRange = implArg.idRange + [] + type TypeUsageErrorExtendedData(ty: TType, symbolEnv: SymbolEnv) = + + interface IFSharpDiagnosticExtendedData + + member x.Type = FSharpType(symbolEnv, ty) + open ExtendedData type FSharpDiagnostic(m: range, severity: FSharpDiagnosticSeverity, message: string, subcategory: string, errorNum: int, numberPrefix: string, extendedData: IFSharpDiagnosticExtendedData option) = diff --git a/src/Compiler/Symbols/FSharpDiagnostic.fsi b/src/Compiler/Symbols/FSharpDiagnostic.fsi index c233718c70c..fd7fcdc3780 100644 --- a/src/Compiler/Symbols/FSharpDiagnostic.fsi +++ b/src/Compiler/Symbols/FSharpDiagnostic.fsi @@ -106,6 +106,12 @@ module public ExtendedData = /// Argument identifier range within implementation file member ImplementationRange: range + [] + type TypeUsageErrorExtendedData = + interface IFSharpDiagnosticExtendedData + + member Type: FSharpType + open ExtendedData /// Represents a diagnostic produced by the F# compiler diff --git a/src/Compiler/xlf/FSComp.txt.cs.xlf b/src/Compiler/xlf/FSComp.txt.cs.xlf index c07ba0d7033..9e2bb196ff4 100644 --- a/src/Compiler/xlf/FSComp.txt.cs.xlf +++ b/src/Compiler/xlf/FSComp.txt.cs.xlf @@ -6287,11 +6287,6 @@ Neplatný výraz {0} - - No constructors are available for the type '{0}' - Pro typ {0} nejsou k dispozici žádné konstruktory. - - The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using. Typ sjednocení pro případ sjednocení {0} se definoval pomocí atributu RequireQualifiedAccessAttribute. Do jména, které používáte, přidejte název typu sjednocení ({1}). diff --git a/src/Compiler/xlf/FSComp.txt.de.xlf b/src/Compiler/xlf/FSComp.txt.de.xlf index d0feebf9d97..bba17929dd1 100644 --- a/src/Compiler/xlf/FSComp.txt.de.xlf +++ b/src/Compiler/xlf/FSComp.txt.de.xlf @@ -6287,11 +6287,6 @@ Ungültiger Ausdruck "{0}". - - No constructors are available for the type '{0}' - Für den Typ "{0}" sind keine Konstruktoren verfügbar. - - The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using. Der Union-Typ für Union-Fall "{0}" wurde mit RequireQualifiedAccessAttribute definiert. Fügen Sie den Union-Typnamen ("{1}") in den verwendeten Namen ein. diff --git a/src/Compiler/xlf/FSComp.txt.es.xlf b/src/Compiler/xlf/FSComp.txt.es.xlf index fae7ec8f032..e35c57a8aa0 100644 --- a/src/Compiler/xlf/FSComp.txt.es.xlf +++ b/src/Compiler/xlf/FSComp.txt.es.xlf @@ -6287,11 +6287,6 @@ Expresión '{0}' no válida. - - No constructors are available for the type '{0}' - No hay constructores disponibles para el tipo '{0}'. - - The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using. El tipo de unión del caso de unión "{0}" se definió con el atributo RequireQualifiedAccessAttribute. Incluya el nombre del tipo de unión ("{1}") en el nombre que esté usando. diff --git a/src/Compiler/xlf/FSComp.txt.fr.xlf b/src/Compiler/xlf/FSComp.txt.fr.xlf index 4a98252d56f..37c3d2bbb91 100644 --- a/src/Compiler/xlf/FSComp.txt.fr.xlf +++ b/src/Compiler/xlf/FSComp.txt.fr.xlf @@ -6287,11 +6287,6 @@ Expression non valide '{0}' - - No constructors are available for the type '{0}' - Aucun constructeur n'est disponible pour le type '{0}' - - The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using. Le type union du cas d'union '{0}' a été défini avec RequireQualifiedAccessAttribute. Incluez le nom du type union ('{1}') dans le nom que vous utilisez. diff --git a/src/Compiler/xlf/FSComp.txt.it.xlf b/src/Compiler/xlf/FSComp.txt.it.xlf index 969c6716e2f..7a8e285e89c 100644 --- a/src/Compiler/xlf/FSComp.txt.it.xlf +++ b/src/Compiler/xlf/FSComp.txt.it.xlf @@ -6287,11 +6287,6 @@ Espressione '{0}' non valida - - No constructors are available for the type '{0}' - Nessun costruttore disponibile per il tipo '{0}' - - The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using. Il tipo di unione per il case di unione '{0}' è stato definito con RequireQualifiedAccessAttribute. Includere il nome del tipo di unione ('{1}') nel nome da usare. diff --git a/src/Compiler/xlf/FSComp.txt.ja.xlf b/src/Compiler/xlf/FSComp.txt.ja.xlf index 440e83c32b9..2131b4a4e2a 100644 --- a/src/Compiler/xlf/FSComp.txt.ja.xlf +++ b/src/Compiler/xlf/FSComp.txt.ja.xlf @@ -6287,11 +6287,6 @@ 式 '{0}' は無効です - - No constructors are available for the type '{0}' - 型 '{0}' に使用できるコンストラクターがありません - - The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using. 共用体ケース '{0}' の共用体型が RequireQualifiedAccessAttribute によって定義されました。使用中の名前に共用体型 ('{1}') の名前を含めてください。 diff --git a/src/Compiler/xlf/FSComp.txt.ko.xlf b/src/Compiler/xlf/FSComp.txt.ko.xlf index 1a55695d885..b833401011c 100644 --- a/src/Compiler/xlf/FSComp.txt.ko.xlf +++ b/src/Compiler/xlf/FSComp.txt.ko.xlf @@ -6287,11 +6287,6 @@ '{0}' 식이 잘못되었습니다. - - No constructors are available for the type '{0}' - '{0}' 형식에 대해 사용할 수 있는 생성자가 없습니다. - - The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using. 공용 구조체 케이스 '{0}'에 대한 공용 구조체 형식은 RequireQualifiedAccessAttribute로 정의됩니다. 사용 중인 이름에 공용 구조체 형식('{1}') 이름을 포함하세요. diff --git a/src/Compiler/xlf/FSComp.txt.pl.xlf b/src/Compiler/xlf/FSComp.txt.pl.xlf index fdf34864db0..fef39fbe44e 100644 --- a/src/Compiler/xlf/FSComp.txt.pl.xlf +++ b/src/Compiler/xlf/FSComp.txt.pl.xlf @@ -6287,11 +6287,6 @@ Nieprawidłowe wyrażenie „{0}” - - No constructors are available for the type '{0}' - Brak konstruktorów dostępnych dla typu „{0}” - - The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using. Typ unii dla przypadku unii „{0}” został zdefiniowany z użyciem wartości RequireQualifiedAccessAttribute. Uwzględnij nazwę typu unii („{1}”) w używanej nazwie. diff --git a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf index 86ede3eed08..678b6ead6af 100644 --- a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf +++ b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf @@ -6287,11 +6287,6 @@ Expressão '{0}' inválida - - No constructors are available for the type '{0}' - Nenhum construtor está disponível para o tipo '{0}' - - The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using. O tipo de união para o caso de união '{0}' foi definido com o RequireQualifiedAccessAttribute. Inclua o nome do tipo de união ('{1}') no nome que você está usando. diff --git a/src/Compiler/xlf/FSComp.txt.ru.xlf b/src/Compiler/xlf/FSComp.txt.ru.xlf index e5844060d67..82b8fdbe650 100644 --- a/src/Compiler/xlf/FSComp.txt.ru.xlf +++ b/src/Compiler/xlf/FSComp.txt.ru.xlf @@ -6287,11 +6287,6 @@ Недопустимое выражение "{0}" - - No constructors are available for the type '{0}' - Недоступны конструкторы для типа "{0}" - - The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using. Тип объединения для ветви объединения "{0}" определен с RequireQualifiedAccessAttribute. Включите имя типа объединения ("{1}") в используемое имя. diff --git a/src/Compiler/xlf/FSComp.txt.tr.xlf b/src/Compiler/xlf/FSComp.txt.tr.xlf index 6e5505f1b7f..961fd261c9a 100644 --- a/src/Compiler/xlf/FSComp.txt.tr.xlf +++ b/src/Compiler/xlf/FSComp.txt.tr.xlf @@ -6287,11 +6287,6 @@ Geçersiz ifade: '{0}' - - No constructors are available for the type '{0}' - '{0}' türü için kullanılabilir bir oluşturucu yok - - The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using. {0}' birleşim durumunun birleşim türü RequireQualifiedAccessAttribute ile tanımlanmış. Kullandığınız ada birleşim türünün adını ('{1}') dahil edin. diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf index 3e5248d2115..e3ad246f1bf 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf @@ -6287,11 +6287,6 @@ 表达式“{0}”无效 - - No constructors are available for the type '{0}' - 没有对类型“{0}”可用的构造函数 - - The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using. 使用 RequireQualifiedAccessAttribute 定义联合用例“{0}”的联合类型。包括所使用的名称中联合类型 ('{1}') 的名称。 diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf index a1b3568925f..b551777be3b 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf @@ -6287,11 +6287,6 @@ 無效的運算式 '{0}' - - No constructors are available for the type '{0}' - 沒有可供類型 '{0}' 使用的建構函式 - - The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using. 聯集 '{0}' 的等位型別由 RequireQualifiedAccessAttribute 定義。請在您使用的名稱中,加入等位型別 '{1}' 的名稱。 diff --git a/src/Compiler/xlf/FSStrings.cs.xlf b/src/Compiler/xlf/FSStrings.cs.xlf index a3412bfc48c..1f36b0f5ab8 100644 --- a/src/Compiler/xlf/FSStrings.cs.xlf +++ b/src/Compiler/xlf/FSStrings.cs.xlf @@ -17,6 +17,11 @@ Nejméně jedna informační zpráva v načteném souboru\n + + No constructors are available for the type '{0}' + No constructors are available for the type '{0}' + + Lowercase discriminated union cases are only allowed when using RequireQualifiedAccess attribute Případy sjednocení s malými písmeny jsou povolené jenom při použití atributu RequireQualifiedAccess. diff --git a/src/Compiler/xlf/FSStrings.de.xlf b/src/Compiler/xlf/FSStrings.de.xlf index d1028719674..53eef21cfb1 100644 --- a/src/Compiler/xlf/FSStrings.de.xlf +++ b/src/Compiler/xlf/FSStrings.de.xlf @@ -17,6 +17,11 @@ Mindestens eine Informationsmeldung in der geladenen Datei.\n + + No constructors are available for the type '{0}' + No constructors are available for the type '{0}' + + Lowercase discriminated union cases are only allowed when using RequireQualifiedAccess attribute Diskriminierte Union-Fälle in Kleinbuchstaben sind nur zulässig, wenn das RequireQualifiedAccess-Attribut verwendet wird. diff --git a/src/Compiler/xlf/FSStrings.es.xlf b/src/Compiler/xlf/FSStrings.es.xlf index 213872bb8d7..f0494e86815 100644 --- a/src/Compiler/xlf/FSStrings.es.xlf +++ b/src/Compiler/xlf/FSStrings.es.xlf @@ -17,6 +17,11 @@ Uno o más mensajes informativos en el archivo cargado.\n + + No constructors are available for the type '{0}' + No constructors are available for the type '{0}' + + Lowercase discriminated union cases are only allowed when using RequireQualifiedAccess attribute Los casos de unión discriminada en minúsculas solo se permiten cuando se usa el atributo RequireQualifiedAccess diff --git a/src/Compiler/xlf/FSStrings.fr.xlf b/src/Compiler/xlf/FSStrings.fr.xlf index 7539cba3a7b..17ee8603bc9 100644 --- a/src/Compiler/xlf/FSStrings.fr.xlf +++ b/src/Compiler/xlf/FSStrings.fr.xlf @@ -17,6 +17,11 @@ Un ou plusieurs messages d’information dans le fichier chargé.\n + + No constructors are available for the type '{0}' + No constructors are available for the type '{0}' + + Lowercase discriminated union cases are only allowed when using RequireQualifiedAccess attribute Les cas d’union discriminée en minuscules sont uniquement autorisés lors de l’utilisation de l’attribut RequireQualifiedAccess. diff --git a/src/Compiler/xlf/FSStrings.it.xlf b/src/Compiler/xlf/FSStrings.it.xlf index b4e6abe8be9..b07517215c0 100644 --- a/src/Compiler/xlf/FSStrings.it.xlf +++ b/src/Compiler/xlf/FSStrings.it.xlf @@ -17,6 +17,11 @@ Uno o più messaggi informativi nel file caricato.\n + + No constructors are available for the type '{0}' + No constructors are available for the type '{0}' + + Lowercase discriminated union cases are only allowed when using RequireQualifiedAccess attribute I casi di unione discriminati minuscoli sono consentiti solo quando si usa l'attributo RequireQualifiedAccess diff --git a/src/Compiler/xlf/FSStrings.ja.xlf b/src/Compiler/xlf/FSStrings.ja.xlf index d465315dfa1..500d9f54161 100644 --- a/src/Compiler/xlf/FSStrings.ja.xlf +++ b/src/Compiler/xlf/FSStrings.ja.xlf @@ -17,6 +17,11 @@ 読み込まれたファイル内の 1 つ以上の情報メッセージ。\n + + No constructors are available for the type '{0}' + No constructors are available for the type '{0}' + + Lowercase discriminated union cases are only allowed when using RequireQualifiedAccess attribute 小文字で区別される和集合のケースは、RequireQualifiedAccess 属性を使用する場合にのみ許可されます diff --git a/src/Compiler/xlf/FSStrings.ko.xlf b/src/Compiler/xlf/FSStrings.ko.xlf index 1e4bb958ae6..6943862f855 100644 --- a/src/Compiler/xlf/FSStrings.ko.xlf +++ b/src/Compiler/xlf/FSStrings.ko.xlf @@ -17,6 +17,11 @@ 로드된 파일에 하나 이상의 정보 메시지가 있습니다.\n + + No constructors are available for the type '{0}' + No constructors are available for the type '{0}' + + Lowercase discriminated union cases are only allowed when using RequireQualifiedAccess attribute 소문자로 구분된 공용 구조체 케이스는 RequireQualifiedAccess 특성을 사용하는 경우에만 허용됩니다. diff --git a/src/Compiler/xlf/FSStrings.pl.xlf b/src/Compiler/xlf/FSStrings.pl.xlf index c7087e22b98..a22c5798fbb 100644 --- a/src/Compiler/xlf/FSStrings.pl.xlf +++ b/src/Compiler/xlf/FSStrings.pl.xlf @@ -17,6 +17,11 @@ Jeden lub więcej komunikatów informacyjnych w załadowanym pliku.\n + + No constructors are available for the type '{0}' + No constructors are available for the type '{0}' + + Lowercase discriminated union cases are only allowed when using RequireQualifiedAccess attribute Przypadki unii z dyskryminatorem z małymi literami są dozwolone tylko w przypadku używania atrybutu RequireQualifiedAccess diff --git a/src/Compiler/xlf/FSStrings.pt-BR.xlf b/src/Compiler/xlf/FSStrings.pt-BR.xlf index ba29b433934..fc389f7261d 100644 --- a/src/Compiler/xlf/FSStrings.pt-BR.xlf +++ b/src/Compiler/xlf/FSStrings.pt-BR.xlf @@ -17,6 +17,11 @@ Uma ou mais mensagens informativas no arquivo carregado.\n + + No constructors are available for the type '{0}' + No constructors are available for the type '{0}' + + Lowercase discriminated union cases are only allowed when using RequireQualifiedAccess attribute Os casos de união discriminados em letras minúsculas só são permitidos ao usar o atributo RequireQualifiedAccess diff --git a/src/Compiler/xlf/FSStrings.ru.xlf b/src/Compiler/xlf/FSStrings.ru.xlf index ecd597b4349..7bbd42e4eb8 100644 --- a/src/Compiler/xlf/FSStrings.ru.xlf +++ b/src/Compiler/xlf/FSStrings.ru.xlf @@ -17,6 +17,11 @@ Одно или несколько информационных сообщений в загруженном файле.\n + + No constructors are available for the type '{0}' + No constructors are available for the type '{0}' + + Lowercase discriminated union cases are only allowed when using RequireQualifiedAccess attribute Размеченные в нижнем регистре случаи объединения разрешены только при использовании атрибута RequireQualifiedAccess diff --git a/src/Compiler/xlf/FSStrings.tr.xlf b/src/Compiler/xlf/FSStrings.tr.xlf index e0b5f943f15..d06dbe2cdb4 100644 --- a/src/Compiler/xlf/FSStrings.tr.xlf +++ b/src/Compiler/xlf/FSStrings.tr.xlf @@ -17,6 +17,11 @@ Yüklenen dosyada bir veya daha fazla bilgi mesajı.\n + + No constructors are available for the type '{0}' + No constructors are available for the type '{0}' + + Lowercase discriminated union cases are only allowed when using RequireQualifiedAccess attribute Küçük harf ayrımlı birleşim durumlarına yalnızca RequireQualifiedAccess özniteliği kullanılırken izin verilir diff --git a/src/Compiler/xlf/FSStrings.zh-Hans.xlf b/src/Compiler/xlf/FSStrings.zh-Hans.xlf index 9525488aa9b..441802e3ce2 100644 --- a/src/Compiler/xlf/FSStrings.zh-Hans.xlf +++ b/src/Compiler/xlf/FSStrings.zh-Hans.xlf @@ -17,6 +17,11 @@ 加载文件 .\n 中有一条或多条信息性消息 + + No constructors are available for the type '{0}' + No constructors are available for the type '{0}' + + Lowercase discriminated union cases are only allowed when using RequireQualifiedAccess attribute 仅当使用 RequireQualifiedAccess 属性时才允许区分小写的联合事例 diff --git a/src/Compiler/xlf/FSStrings.zh-Hant.xlf b/src/Compiler/xlf/FSStrings.zh-Hant.xlf index c2181e3f317..a3005c50731 100644 --- a/src/Compiler/xlf/FSStrings.zh-Hant.xlf +++ b/src/Compiler/xlf/FSStrings.zh-Hant.xlf @@ -17,6 +17,11 @@ 已載入檔案中的一或多個資訊訊息。\n + + No constructors are available for the type '{0}' + No constructors are available for the type '{0}' + + Lowercase discriminated union cases are only allowed when using RequireQualifiedAccess attribute 只有在使用 RequireQualifiedAccess 屬性時,才允許小寫區分聯結案例 From a41cdb39c1c8c74e7f815a6f4b4bb8a9ea419977 Mon Sep 17 00:00:00 2001 From: Eugene Auduchinok Date: Wed, 17 Jan 2024 15:23:31 +0100 Subject: [PATCH 4/4] Release notes --- docs/release-notes/.FSharp.Compiler.Service/8.0.300.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md b/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md index d9acfde71ca..8340cbb90ef 100644 --- a/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md +++ b/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md @@ -6,6 +6,7 @@ * Parser recovers on complex primary constructor patterns, better tree representation for primary constructor patterns. ([PR #16425](https://github.com/dotnet/fsharp/pull/16425)) * Name resolution: keep type vars in subsequent checks ([PR #16456](https://github.com/dotnet/fsharp/pull/16456)) +* Diagnostics: extended data for NoConstructorsAvailableForType ([PR #16543](https://github.com/dotnet/fsharp/pull/16543)) ### Changed