From 9d8259212f1d7aaa0dbd2725571613176f07a7d0 Mon Sep 17 00:00:00 2001 From: Edgar Gonzalez Date: Thu, 3 Nov 2022 12:23:09 +0100 Subject: [PATCH] Use more a more accurate range when reporing an error on delegate type declaration (#14208) --- src/Compiler/Checking/CheckDeclarations.fs | 5 ++++- .../Conformance/DelegateTypes/DelegateDefinition.fs | 11 +++++++---- .../DelegateTypes/invalid_delegate_definition.fs | 5 ----- .../invalid_delegate_definition.fs.err.bsl | 3 --- 4 files changed, 11 insertions(+), 13 deletions(-) delete mode 100644 tests/FSharp.Compiler.ComponentTests/Conformance/DelegateTypes/invalid_delegate_definition.fs delete mode 100644 tests/FSharp.Compiler.ComponentTests/Conformance/DelegateTypes/invalid_delegate_definition.fs.err.bsl diff --git a/src/Compiler/Checking/CheckDeclarations.fs b/src/Compiler/Checking/CheckDeclarations.fs index e9272db3b..1b85fada4 100644 --- a/src/Compiler/Checking/CheckDeclarations.fs +++ b/src/Compiler/Checking/CheckDeclarations.fs @@ -3161,7 +3161,10 @@ module EstablishTypeDefinitionCores = | None -> () | Some spats -> let ctorArgNames, _ = TcSimplePatsOfUnknownType cenv true CheckCxs envinner tpenv spats - if not ctorArgNames.IsEmpty then errorR (Error(FSComp.SR.parsOnlyClassCanTakeValueArguments(), m)) + if not ctorArgNames.IsEmpty then + match spats with + | SynSimplePats.SimplePats(_, m) -> errorR (Error(FSComp.SR.parsOnlyClassCanTakeValueArguments(), m)) + | SynSimplePats.Typed(_, _, m) -> errorR (Error(FSComp.SR.parsOnlyClassCanTakeValueArguments(), m)) let envinner = AddDeclaredTypars CheckForDuplicateTypars (tycon.Typars m) envinner let envinner = MakeInnerEnvForTyconRef envinner thisTyconRef false diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/DelegateTypes/DelegateDefinition.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/DelegateTypes/DelegateDefinition.fs index df0857b3f..3e01c1723 100644 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/DelegateTypes/DelegateDefinition.fs +++ b/tests/FSharp.Compiler.ComponentTests/Conformance/DelegateTypes/DelegateDefinition.fs @@ -17,8 +17,9 @@ namespace FSharpTest """ |> compile |> shouldFail - |> withErrorCode 552 - |> withErrorMessage "Only class types may take value arguments" + |> withDiagnostics [ + (Error 552, Line 3, Col 11, Line 3, Col 19, "Only class types may take value arguments") + ] [] let ``Delegate definition with primary constructor no argument.`` () = @@ -30,8 +31,10 @@ namespace FSharpTest """ |> compile |> shouldFail - |> withErrorCode 552 - |> withErrorMessage "Only class types may take value arguments" + |> shouldFail + |> withDiagnostics [ + (Error 552, Line 3, Col 11, Line 3, Col 13, "Only class types may take value arguments") + ] [] let ``Delegate definition`` () = diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/DelegateTypes/invalid_delegate_definition.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/DelegateTypes/invalid_delegate_definition.fs deleted file mode 100644 index dd55759ff..000000000 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/DelegateTypes/invalid_delegate_definition.fs +++ /dev/null @@ -1,5 +0,0 @@ -type T(x: int) = - delegate of int -> int - -type T() = - delegate of int -> int \ No newline at end of file diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/DelegateTypes/invalid_delegate_definition.fs.err.bsl b/tests/FSharp.Compiler.ComponentTests/Conformance/DelegateTypes/invalid_delegate_definition.fs.err.bsl deleted file mode 100644 index c804d4302..000000000 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/DelegateTypes/invalid_delegate_definition.fs.err.bsl +++ /dev/null @@ -1,3 +0,0 @@ -invalid_delegate_definition.fs (1,6)-(1,15) Only class types may take value arguments -invalid_delegate_definition.fs (4,6)-(1,9) Only class types may take value arguments - -- GitLab