Skip to content

Commit 20b263a

Browse files
dotnet-botauduchinokdotnet-maestro[bot]psfinakidawedawe
authored
Merge main to release/dev17.10 (#16959)
* PrettyNaming: make DoesIdentifierNeedBackticks public (#16613) * Update dependencies from https://github.com/dotnet/arcade build (#16944) Microsoft.DotNet.Arcade.Sdk From Version 8.0.0-beta.24170.6 -> To Version 8.0.0-beta.24172.5 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> * Unskip a few tests (#16946) * Unskip a few tests * another one * Fix [<tailcall>] false positive with yield! (#16933) * add test case showing a false positive with yield! * add missing case in IsAppInLambdaBody that can happen with yield! * add release notes entry * update PR number * only bind to what we are interested in * add test expecting a warning for yield! in a list comprehension * add test case using yield! in a custom CE that overflows the stack * Add regression test for nameof type with generic parameters (#16827) Co-authored-by: Vlad Zarytovskii <vzaritovsky@hotmail.com> * Minor README update about proto (#16945) * Minor README update about proto It's Bootstrap actually. * Update DEVGUIDE.md Co-authored-by: Vlad Zarytovskii <vzaritovsky@hotmail.com> * Update DEVGUIDE.md --------- Co-authored-by: Vlad Zarytovskii <vzaritovsky@hotmail.com> * Compiled code benchmarks: easy benchmarking of `preview` against current (#16942) * Make it easy to bench preview against current * Revert EnableDefaultNoneItems false (#16953) * Exclude compiler service benchmark from VMR build when not building tests (#16955) * Exclude compiler service benchmark from VMR build when not building tests * remove Z --------- Co-authored-by: Petr <psfinaki@users.noreply.github.com> * Update dependencies from https://github.com/dotnet/arcade build 20240326.8 (#16957) Microsoft.DotNet.Arcade.Sdk From Version 8.0.0-beta.24172.5 -> To Version 8.0.0-beta.24176.8 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> --------- Co-authored-by: Eugene Auduchinok <eugene.auduchinok@jetbrains.com> Co-authored-by: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com> Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> Co-authored-by: Petr <psfinaki@users.noreply.github.com> Co-authored-by: dawe <dawedawe@posteo.de> Co-authored-by: Florian Verdonck <florian.verdonck@outlook.com> Co-authored-by: Vlad Zarytovskii <vzaritovsky@hotmail.com> Co-authored-by: Brian Rourke Boll <brianrourkeboll@users.noreply.github.com> Co-authored-by: Kevin Ransom (msft) <codecutter@hotmail.com> Co-authored-by: Matt Mitchell <mmitche@microsoft.com>
1 parent 483e551 commit 20b263a

File tree

22 files changed

+996
-28
lines changed

22 files changed

+996
-28
lines changed

DEVGUIDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ Running any of the above will build the latest changes and run tests against the
124124

125125
## Using your custom compiler to build this repository
126126

127-
By removing all the subfolders called `Proto` under `artifacts` and running the `build` script again, the proto compiler will include your changes.
127+
By removing all the subfolders called `Bootstrap` or `Proto` under `artifacts` and running the `build` script again, the proto compiler will include your changes.
128128

129129
Once the "proto" compiler is built, it won't be built again, so you may want to perform those steps again to ensure your changes don't break building the compiler itself.
130130

VisualFSharp.sln

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FSharp.Editor.IntegrationTe
191191
EndProject
192192
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Benchmarks.Common", "tests\benchmarks\FSharp.Benchmarks.Common\FSharp.Benchmarks.Common.fsproj", "{6734FC6F-B5F3-45E1-9A72-720378BB49C9}"
193193
EndProject
194+
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "MicroPerf", "tests\benchmarks\CompiledCodeBenchmarks\MicroPerf\MicroPerf.fsproj", "{601CD5C1-EAFA-4AE3-8FB9-F667B5728213}"
195+
EndProject
196+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MicroPerfCSharp", "tests\benchmarks\CompiledCodeBenchmarks\MicroPerf\CS\MicroPerfCSharp.csproj", "{9F9DD315-37DA-4413-928E-1CFC6924B64F}"
197+
EndProject
194198
Global
195199
GlobalSection(SolutionConfigurationPlatforms) = preSolution
196200
Debug|Any CPU = Debug|Any CPU
@@ -1005,6 +1009,30 @@ Global
10051009
{6734FC6F-B5F3-45E1-9A72-720378BB49C9}.Release|Any CPU.Build.0 = Release|Any CPU
10061010
{6734FC6F-B5F3-45E1-9A72-720378BB49C9}.Release|x86.ActiveCfg = Release|Any CPU
10071011
{6734FC6F-B5F3-45E1-9A72-720378BB49C9}.Release|x86.Build.0 = Release|Any CPU
1012+
{601CD5C1-EAFA-4AE3-8FB9-F667B5728213}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
1013+
{601CD5C1-EAFA-4AE3-8FB9-F667B5728213}.Debug|Any CPU.Build.0 = Debug|Any CPU
1014+
{601CD5C1-EAFA-4AE3-8FB9-F667B5728213}.Debug|x86.ActiveCfg = Debug|Any CPU
1015+
{601CD5C1-EAFA-4AE3-8FB9-F667B5728213}.Debug|x86.Build.0 = Debug|Any CPU
1016+
{601CD5C1-EAFA-4AE3-8FB9-F667B5728213}.Proto|Any CPU.ActiveCfg = Debug|Any CPU
1017+
{601CD5C1-EAFA-4AE3-8FB9-F667B5728213}.Proto|Any CPU.Build.0 = Debug|Any CPU
1018+
{601CD5C1-EAFA-4AE3-8FB9-F667B5728213}.Proto|x86.ActiveCfg = Debug|Any CPU
1019+
{601CD5C1-EAFA-4AE3-8FB9-F667B5728213}.Proto|x86.Build.0 = Debug|Any CPU
1020+
{601CD5C1-EAFA-4AE3-8FB9-F667B5728213}.Release|Any CPU.ActiveCfg = Release|Any CPU
1021+
{601CD5C1-EAFA-4AE3-8FB9-F667B5728213}.Release|Any CPU.Build.0 = Release|Any CPU
1022+
{601CD5C1-EAFA-4AE3-8FB9-F667B5728213}.Release|x86.ActiveCfg = Release|Any CPU
1023+
{601CD5C1-EAFA-4AE3-8FB9-F667B5728213}.Release|x86.Build.0 = Release|Any CPU
1024+
{9F9DD315-37DA-4413-928E-1CFC6924B64F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
1025+
{9F9DD315-37DA-4413-928E-1CFC6924B64F}.Debug|Any CPU.Build.0 = Debug|Any CPU
1026+
{9F9DD315-37DA-4413-928E-1CFC6924B64F}.Debug|x86.ActiveCfg = Debug|Any CPU
1027+
{9F9DD315-37DA-4413-928E-1CFC6924B64F}.Debug|x86.Build.0 = Debug|Any CPU
1028+
{9F9DD315-37DA-4413-928E-1CFC6924B64F}.Proto|Any CPU.ActiveCfg = Debug|Any CPU
1029+
{9F9DD315-37DA-4413-928E-1CFC6924B64F}.Proto|Any CPU.Build.0 = Debug|Any CPU
1030+
{9F9DD315-37DA-4413-928E-1CFC6924B64F}.Proto|x86.ActiveCfg = Debug|Any CPU
1031+
{9F9DD315-37DA-4413-928E-1CFC6924B64F}.Proto|x86.Build.0 = Debug|Any CPU
1032+
{9F9DD315-37DA-4413-928E-1CFC6924B64F}.Release|Any CPU.ActiveCfg = Release|Any CPU
1033+
{9F9DD315-37DA-4413-928E-1CFC6924B64F}.Release|Any CPU.Build.0 = Release|Any CPU
1034+
{9F9DD315-37DA-4413-928E-1CFC6924B64F}.Release|x86.ActiveCfg = Release|Any CPU
1035+
{9F9DD315-37DA-4413-928E-1CFC6924B64F}.Release|x86.Build.0 = Release|Any CPU
10081036
EndGlobalSection
10091037
GlobalSection(SolutionProperties) = preSolution
10101038
HideSolutionNode = FALSE
@@ -1084,6 +1112,8 @@ Global
10841112
{CBC96CC7-65AB-46EA-A82E-F6A788DABF80} = {F7876C9B-FB6A-4EFB-B058-D6967DB75FB2}
10851113
{E31F9B59-FCF1-4D04-8762-C7BB60285A7B} = {F7876C9B-FB6A-4EFB-B058-D6967DB75FB2}
10861114
{6734FC6F-B5F3-45E1-9A72-720378BB49C9} = {DFB6ADD7-3149-43D9-AFA0-FC4A818B472B}
1115+
{601CD5C1-EAFA-4AE3-8FB9-F667B5728213} = {DFB6ADD7-3149-43D9-AFA0-FC4A818B472B}
1116+
{9F9DD315-37DA-4413-928E-1CFC6924B64F} = {DFB6ADD7-3149-43D9-AFA0-FC4A818B472B}
10871117
EndGlobalSection
10881118
GlobalSection(ExtensibilityGlobals) = postSolution
10891119
SolutionGuid = {48EDBBBE-C8EE-4E3C-8B19-97184A487B37}

docs/release-notes/.FSharp.Compiler.Service/8.0.300.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
### Fixed
22

3+
* Fix a false positive of the `[<TailCall>]` analysis in combination with `yield!`. ([PR #16933](https://github.com/dotnet/fsharp/pull/16933))
34
* Don't blow the stack when traversing deeply nested sequential expressions. ([PR #16882](https://github.com/dotnet/fsharp/pull/16882))
45
* Fix wrong range start of INTERP_STRING_END. ([PR #16774](https://github.com/dotnet/fsharp/pull/16774), [PR #16785](https://github.com/dotnet/fsharp/pull/16785))
56
* Fix missing warning for recursive calls in list comprehensions. ([PR #16652](https://github.com/dotnet/fsharp/pull/16652))
@@ -35,6 +36,7 @@
3536
* Parser recovers on complex primary constructor patterns, better tree representation for primary constructor patterns. ([PR #16425](https://github.com/dotnet/fsharp/pull/16425))
3637
* Name resolution: keep type vars in subsequent checks ([PR #16456](https://github.com/dotnet/fsharp/pull/16456))
3738
* Higher-order-function-based API for working with the untyped abstract syntax tree. ([PR #16462](https://github.com/dotnet/fsharp/pull/16462))
39+
* PrettyNaming: make `DoesIdentifierNeedBackticks` public ([PR #16613](https://github.com/dotnet/fsharp/pull/16613))
3840
* Add switch to generate types and members with IL visibility that accurately represents their F# visibility. ([PR #15484](https://github.com/dotnet/fsharp/pull/15484)
3941
* Allow returning bool instead of unit option for partial active patterns. ([Language suggestion #1041](https://github.com/fsharp/fslang-suggestions/issues/1041), [PR #16473](https://github.com/dotnet/fsharp/pull/16473))
4042
* Symbols: Add GenericArguments to FSharpEntity ([PR #16470](https://github.com/dotnet/fsharp/pull/16470))

eng/Version.Details.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
</Dependency>
3131
</ProductDependencies>
3232
<ToolsetDependencies>
33-
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="8.0.0-beta.24170.6">
33+
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="8.0.0-beta.24176.8">
3434
<Uri>https://github.com/dotnet/arcade</Uri>
35-
<Sha>8e3e00a76f467cc262dc14f6466ab884b2c4eb96</Sha>
35+
<Sha>48e9e0d2164de0535446809364724da8962123a6</Sha>
3636
<SourceBuild RepoName="arcade" ManagedOnly="true" />
3737
</Dependency>
3838
<Dependency Name="Microsoft.DotNet.XliffTasks" Version="1.0.0-beta.23475.1" CoherentParentDependency="Microsoft.DotNet.Arcade.Sdk">

eng/common/templates-official/job/job.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,15 @@ jobs:
128128

129129
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
130130
- ${{ if eq(parameters.enableMicrobuild, 'true') }}:
131-
- task: MicroBuildSigningPlugin@3
131+
- task: MicroBuildSigningPlugin@4
132132
displayName: Install MicroBuild plugin
133133
inputs:
134134
signType: $(_SignType)
135135
zipSources: false
136136
feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
137137
env:
138138
TeamName: $(_TeamName)
139+
MicroBuildOutputFolderOverride: '$(Agent.TempDirectory)'
139140
continueOnError: ${{ parameters.continueOnError }}
140141
condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
141142

global.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"perl": "5.38.0.1"
1818
},
1919
"msbuild-sdks": {
20-
"Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24170.6",
20+
"Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24176.8",
2121
"Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
2222
}
2323
}

src/Compiler/Checking/TailCallChecks.fs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,13 @@ and CheckCall cenv args ctxts (tailCall: TailCall) =
222222
| Expr.App _ -> Some(TailCall.YesFromExpr cenv.g e)
223223
| IsAppInLambdaBody t -> Some t
224224
| _ -> None
225+
| Expr.App(args = args) ->
226+
args
227+
|> List.tryPick (fun a ->
228+
match a with
229+
| IsAppInLambdaBody t -> Some t
230+
| _ -> None)
231+
225232
| _ -> None
226233

227234
// if we haven't already decided this is no tail call, try to detect CPS-like expressions

src/Compiler/SyntaxTree/PrettyNaming.fsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ val IsIdentifierName: name: string -> bool
5858
/// TBD: needs unit testing
5959
val IsActivePatternName: name: string -> bool
6060

61-
val internal DoesIdentifierNeedBackticks: string -> bool
61+
val DoesIdentifierNeedBackticks: string -> bool
6262

6363
/// Adds double backticks if necessary to make a valid identifier, e.g.
6464
/// op_Addition --> op_Addition

src/FSharp.Build/Microsoft.FSharp.NetSdk.props

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,14 @@ WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and
3030
</Choose>
3131

3232
<PropertyGroup>
33-
<EnableDefaultCompileItems Condition=" '$(EnableDefaultCompileItems)' == '' ">false</EnableDefaultCompileItems> <!-- Do not glob F# source files -->
33+
<EnableDefaultCompileItems Condition=" '$(EnableDefaultCompileItems)' == '' ">false</EnableDefaultCompileItems> <!-- Do not glob F# source files -->
34+
<!--
35+
It turns out that the project system discovers Folders as a consequence of <SomeItem Include="path to files" />
36+
''''EnableDefaultNoneItems true'''' causes folders and .fsi files to be displayed in the wrong order. because
37+
Discovers Folders as a consequence of ````<SomeItem Include="path to files" />```` which EnableDefaultNoneItems causes folders and .fsi files to be located in the solution folder
38+
prior to the ````<Compile Include="" />```` in the .fsproj which messes with the display order in solution explorer.
39+
-->
40+
<EnableDefaultNoneItems Condition=" '$(EnableDefaultNoneItems)' == '' ">false</EnableDefaultNoneItems> <!-- Do not glob F# none items-->
3441
</PropertyGroup>
3542

3643
<PropertyGroup>

tests/FSharp.Compiler.ComponentTests/CompilerOptions/fsc/flaterrors.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ module flaterrors =
5959

6060
[<InlineData("--FlatErrors")>] //Invalid case
6161
[<InlineData("--FLATERRORS")>] //Even more invalid case
62-
[<InlineData("--flaterrors-")>] // no + allowed
62+
[<InlineData("--flaterrors+")>] // no + allowed
6363
[<InlineData("--flaterrors-")>] // no - allowed
6464
[<Theory>]
6565
let ``E_MultiLine04_fs`` (option: string) =

tests/FSharp.Compiler.ComponentTests/ErrorMessages/TailCallAttribute.fs

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1522,3 +1522,164 @@ namespace N
15221522
Message =
15231523
"The member or function 'reverse' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way." }
15241524
]
1525+
1526+
[<FSharp.Test.FactForNETCOREAPP>]
1527+
let ``Don't warn for yield! call of rec func in seq`` () =
1528+
"""
1529+
namespace N
1530+
1531+
module M =
1532+
1533+
type SynExpr =
1534+
| Sequential of expr1 : SynExpr * expr2 : SynExpr
1535+
| NotSequential
1536+
member _.Range = 99
1537+
1538+
type SyntaxNode = SynExpr of SynExpr
1539+
1540+
type SyntaxVisitor () = member _.VisitExpr _ = None
1541+
1542+
let visitor = SyntaxVisitor ()
1543+
let dive expr range f = range, fun () -> Some expr
1544+
let traverseSynExpr _ expr = Some expr
1545+
1546+
[<TailCall>]
1547+
let rec traverseSequentials path expr =
1548+
seq {
1549+
match expr with
1550+
| SynExpr.Sequential(expr1 = expr1; expr2 = SynExpr.Sequential _ as expr2) ->
1551+
yield dive expr expr.Range (fun expr -> visitor.VisitExpr(path, traverseSynExpr path, (fun _ -> None), expr))
1552+
let path = SyntaxNode.SynExpr expr :: path
1553+
yield dive expr1 expr1.Range (traverseSynExpr path)
1554+
yield! traverseSequentials path expr2 // should not warn
1555+
1556+
| _ ->
1557+
yield dive expr expr.Range (traverseSynExpr path)
1558+
}
1559+
"""
1560+
|> FSharp
1561+
|> withLangVersion80
1562+
|> compile
1563+
|> shouldSucceed
1564+
1565+
[<FSharp.Test.FactForNETCOREAPP>]
1566+
let ``Warn for yield! call of rec func in list comprehension`` () =
1567+
"""
1568+
namespace N
1569+
1570+
module M =
1571+
1572+
type SynExpr =
1573+
| Sequential of expr1 : SynExpr * expr2 : SynExpr
1574+
| NotSequential
1575+
member _.Range = 99
1576+
1577+
type SyntaxNode = SynExpr of SynExpr
1578+
1579+
type SyntaxVisitor () = member _.VisitExpr _ = None
1580+
1581+
let visitor = SyntaxVisitor ()
1582+
let dive expr range f = range, fun () -> Some expr
1583+
let traverseSynExpr _ expr = Some expr
1584+
1585+
[<TailCall>]
1586+
let rec traverseSequentials path expr =
1587+
[
1588+
match expr with
1589+
| SynExpr.Sequential(expr1 = expr1; expr2 = SynExpr.Sequential _ as expr2) ->
1590+
// It's a nested sequential expression.
1591+
// Visit it, but make defaultTraverse do nothing,
1592+
// since we're going to traverse its descendants ourselves.
1593+
yield dive expr expr.Range (fun expr -> visitor.VisitExpr(path, traverseSynExpr path, (fun _ -> None), expr))
1594+
1595+
// Now traverse its descendants.
1596+
let path = SyntaxNode.SynExpr expr :: path
1597+
yield dive expr1 expr1.Range (traverseSynExpr path)
1598+
yield! traverseSequentials path expr2 // should warn
1599+
1600+
| _ ->
1601+
// It's not a nested sequential expression.
1602+
// Traverse it normally.
1603+
yield dive expr expr.Range (traverseSynExpr path)
1604+
]
1605+
"""
1606+
|> FSharp
1607+
|> withLangVersion80
1608+
|> compile
1609+
|> shouldFail
1610+
|> withResults [
1611+
{ Error = Warning 3569
1612+
Range = { StartLine = 32
1613+
StartColumn = 24
1614+
EndLine = 32
1615+
EndColumn = 54 }
1616+
Message =
1617+
"The member or function 'traverseSequentials' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way." }
1618+
]
1619+
1620+
[<FSharp.Test.FactForNETCOREAPP>]
1621+
let ``Warn for yield! call of rec func in custom CE`` () =
1622+
"""
1623+
namespace N
1624+
1625+
module M =
1626+
1627+
type SynExpr =
1628+
| Sequential of expr1 : SynExpr * expr2 : SynExpr
1629+
| NotSequential
1630+
member _.Range = 99
1631+
1632+
type SyntaxNode = SynExpr of SynExpr
1633+
1634+
type SyntaxVisitor () = member _.VisitExpr _ = None
1635+
1636+
let visitor = SyntaxVisitor ()
1637+
let dive expr range f = range, fun () -> Some expr
1638+
let traverseSynExpr _ expr = Some expr
1639+
1640+
type ThingsBuilder() =
1641+
1642+
member _.Yield(x) = [ x ]
1643+
1644+
member _.Combine(currentThings, newThings) = currentThings @ newThings
1645+
1646+
member _.Delay(f) = f ()
1647+
1648+
member _.YieldFrom(x) = x
1649+
1650+
let things = ThingsBuilder()
1651+
1652+
[<TailCall>]
1653+
let rec traverseSequentials path expr =
1654+
things {
1655+
match expr with
1656+
| SynExpr.Sequential(expr1 = expr1; expr2 = SynExpr.Sequential _ as expr2) ->
1657+
// It's a nested sequential expression.
1658+
// Visit it, but make defaultTraverse do nothing,
1659+
// since we're going to traverse its descendants ourselves.
1660+
yield dive expr expr.Range (fun expr -> visitor.VisitExpr(path, traverseSynExpr path, (fun _ -> None), expr))
1661+
1662+
// Now traverse its descendants.
1663+
let path = SyntaxNode.SynExpr expr :: path
1664+
yield dive expr1 expr1.Range (traverseSynExpr path)
1665+
yield! traverseSequentials path expr2 // should warn
1666+
1667+
| _ ->
1668+
// It's not a nested sequential expression.
1669+
// Traverse it normally.
1670+
yield dive expr expr.Range (traverseSynExpr path)
1671+
}
1672+
"""
1673+
|> FSharp
1674+
|> withLangVersion80
1675+
|> compile
1676+
|> shouldFail
1677+
|> withResults [
1678+
{ Error = Warning 3569
1679+
Range = { StartLine = 43
1680+
StartColumn = 17
1681+
EndLine = 43
1682+
EndColumn = 68 }
1683+
Message =
1684+
"The member or function 'traverseSequentials' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way." }
1685+
]

tests/FSharp.Compiler.ComponentTests/Language/ComputationExpressionTests.fs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ let x = lb {1; 2; if true then 3;}
9696

9797
[<Theory>]
9898
[<InlineData("preview","BindReturn")>]
99-
[<InlineData("preview","BindReturn")>]
10099
[<InlineData("preview","WithoutBindReturn")>]
101100
[<InlineData("4.7","BindReturn")>]
102101
[<InlineData("4.7","WithoutBindReturn")>]
@@ -135,4 +134,4 @@ let _pythags = seqbuilder {{
135134
code
136135
|> FSharp
137136
|> typecheck
138-
|> shouldSucceed
137+
|> shouldSucceed

tests/FSharp.Compiler.ComponentTests/TypeChecks/Graph/Scenarios.fs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -937,6 +937,30 @@ let v = 2
937937
module B
938938
939939
do ignore (match "" with | nameof X.Y.Z -> () | _ -> ())
940+
"""
941+
(set [| 0 |])
942+
]
943+
scenario
944+
"nameof type with generic parameters"
945+
[
946+
sourceFile
947+
"A.fs"
948+
"""
949+
namespace A
950+
951+
module B =
952+
module C =
953+
type D = class end
954+
"""
955+
Set.empty
956+
sourceFile
957+
"Z.fs"
958+
"""
959+
module Z
960+
961+
open System.Threading.Tasks
962+
963+
let _ = nameof Task<A.B.C.D>
940964
"""
941965
(set [| 0 |])
942966
]

tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6049,6 +6049,7 @@ FSharp.Compiler.Syntax.ParserDetail: Int32 GetHashCode(System.Collections.IEqual
60496049
FSharp.Compiler.Syntax.ParserDetail: Int32 Tag
60506050
FSharp.Compiler.Syntax.ParserDetail: Int32 get_Tag()
60516051
FSharp.Compiler.Syntax.ParserDetail: System.String ToString()
6052+
FSharp.Compiler.Syntax.PrettyNaming: Boolean DoesIdentifierNeedBackticks(System.String)
60526053
FSharp.Compiler.Syntax.PrettyNaming: Boolean IsActivePatternName(System.String)
60536054
FSharp.Compiler.Syntax.PrettyNaming: Boolean IsCompilerGeneratedName(System.String)
60546055
FSharp.Compiler.Syntax.PrettyNaming: Boolean IsIdentifierFirstCharacter(Char)

tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6049,6 +6049,7 @@ FSharp.Compiler.Syntax.ParserDetail: Int32 GetHashCode(System.Collections.IEqual
60496049
FSharp.Compiler.Syntax.ParserDetail: Int32 Tag
60506050
FSharp.Compiler.Syntax.ParserDetail: Int32 get_Tag()
60516051
FSharp.Compiler.Syntax.ParserDetail: System.String ToString()
6052+
FSharp.Compiler.Syntax.PrettyNaming: Boolean DoesIdentifierNeedBackticks(System.String)
60526053
FSharp.Compiler.Syntax.PrettyNaming: Boolean IsActivePatternName(System.String)
60536054
FSharp.Compiler.Syntax.PrettyNaming: Boolean IsCompilerGeneratedName(System.String)
60546055
FSharp.Compiler.Syntax.PrettyNaming: Boolean IsIdentifierFirstCharacter(Char)

tests/benchmarks/CompiledCodeBenchmarks/MicroPerf/Benchmarks.fs

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)