Wrap hash postfix type in parentheses. (#15355)

* Wrap hash postfix type in parentheses.

* Only add parentheses if there are any typeInstantiations.

* Trigger CI

* Update module names.
This commit is contained in:
Florian Verdonck 2023-06-12 12:51:58 +02:00 коммит произвёл GitHub
Родитель 01ee95517d
Коммит dbe12dab78
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
7 изменённых файлов: 53 добавлений и 4 удалений

Просмотреть файл

@ -708,7 +708,15 @@ module PrintTypes =
match Zmap.tryFind typar env.inplaceConstraints with
| Some typarConstraintTy ->
if Zset.contains typar env.singletons then
leftL (tagPunctuation "#") ^^ layoutTypeWithInfo denv env typarConstraintTy
let tyLayout =
match typarConstraintTy with
| TType_app (tyconRef = tc; typeInstantiation = ti)
when ti.Length > 0 && not (usePrefix denv tc) ->
layoutTypeWithInfo denv env typarConstraintTy
|> bracketL
| _ -> layoutTypeWithInfo denv env typarConstraintTy
leftL (tagPunctuation "#") ^^ tyLayout
else
(varL ^^ sepL (tagPunctuation ":>") ^^ layoutTypeWithInfo denv env typarConstraintTy) |> bracketL

Просмотреть файл

@ -251,6 +251,7 @@
<Compile Include="Signatures\SigGenerationRoundTripTests.fs" />
<Compile Include="Signatures\NestedTypeTests.fs" />
<Compile Include="Signatures\MissingDiagnostic.fs" />
<Compile Include="Signatures\HashConstraintTests.fs" />
<Compile Include="StaticLinking\StaticLinking.fs" />
<Compile Include="FSharpChecker\CommonWorkflows.fs" />
<Compile Include="FSharpChecker\SymbolUse.fs" />

Просмотреть файл

@ -1,4 +1,4 @@
module Signatures.SignatureTests
module Signatures.ArrayTests
open Xunit
open Signatures.TestHelpers

Просмотреть файл

@ -0,0 +1,33 @@
module Signatures.HashConstraintTests
open Xunit
open FsUnit
open FSharp.Test.Compiler
open Signatures.TestHelpers
[<Fact>]
let ``Optional hash constraint`` () =
FSharp
"""
module Foo
[<Interface>]
type Node =
abstract Children: int array
let noa<'n when 'n :> Node> (n: 'n option) =
match n with
| None -> Array.empty
| Some n -> [| n :> Node |]
"""
|> printSignatures
|> should
equal
"""
module Foo
type Node =
abstract Children: int array
val noa: n: #Node option -> Node array"""

Просмотреть файл

@ -1,4 +1,4 @@
module FSharp.Compiler.ComponentTests.Signatures.MissingDiagnostic
module Signatures.MissingDiagnostic
open Xunit
open FSharp.Test

Просмотреть файл

@ -28,7 +28,7 @@ let ``Generate and compile`` implFileName =
|> withLangVersionPreview
|> withDefines ["TESTS_AS_APP";"COMPILED"]
|> ignoreWarnings
|> withOptions [ "--warnaserror:64" ]
|> asExe
|> compile
|> shouldSucceed

Просмотреть файл

@ -0,0 +1,7 @@
module Foo
open System
open System.Threading.Tasks
let mapWithAdditionalDependenies
(mapping: 'a -> 'b * #seq<#IDisposable>) = 0