Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dotNET Platform
fsharp
提交
d598a05c
F
fsharp
项目概览
dotNET Platform
/
fsharp
大约 1 年 前同步成功
通知
0
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
fsharp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
d598a05c
编写于
3月 31, 2023
作者:
P
Petr Pokorny
提交者:
GitHub
3月 31, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Return type hints (#14998)
上级
18c79cff
变更
46
隐藏空白更改
内联
并排
Showing
46 changed file
with
351 addition
and
23 deletion
+351
-23
src/Compiler/Service/FSharpParseFileResults.fs
src/Compiler/Service/FSharpParseFileResults.fs
+29
-0
src/Compiler/Service/FSharpParseFileResults.fsi
src/Compiler/Service/FSharpParseFileResults.fsi
+4
-0
src/Compiler/Symbols/Symbols.fs
src/Compiler/Symbols/Symbols.fs
+14
-18
tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl
...harp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl
+1
-0
tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl
...rp.Compiler.Service.SurfaceArea.netstandard20.release.bsl
+1
-0
vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
+1
-0
vsintegration/src/FSharp.Editor/FSharp.Editor.resx
vsintegration/src/FSharp.Editor/FSharp.Editor.resx
+1
-0
vsintegration/src/FSharp.Editor/Hints/HintService.fs
vsintegration/src/FSharp.Editor/Hints/HintService.fs
+8
-1
vsintegration/src/FSharp.Editor/Hints/Hints.fs
vsintegration/src/FSharp.Editor/Hints/Hints.fs
+2
-0
vsintegration/src/FSharp.Editor/Hints/InlineReturnTypeHints.fs
...egration/src/FSharp.Editor/Hints/InlineReturnTypeHints.fs
+38
-0
vsintegration/src/FSharp.Editor/Hints/OptionParser.fs
vsintegration/src/FSharp.Editor/Hints/OptionParser.fs
+3
-0
vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
...tion/src/FSharp.Editor/LanguageService/LanguageService.fs
+4
-0
vsintegration/src/FSharp.Editor/Options/EditorOptions.fs
vsintegration/src/FSharp.Editor/Options/EditorOptions.fs
+2
-0
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.cs.xlf
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.cs.xlf
+2
-0
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.de.xlf
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.de.xlf
+2
-0
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.es.xlf
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.es.xlf
+2
-0
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.fr.xlf
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.fr.xlf
+2
-0
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.it.xlf
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.it.xlf
+2
-0
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.ja.xlf
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.ja.xlf
+2
-0
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.ko.xlf
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.ko.xlf
+2
-0
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.pl.xlf
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.pl.xlf
+2
-0
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.pt-BR.xlf
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.pt-BR.xlf
+2
-0
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.ru.xlf
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.ru.xlf
+2
-0
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.tr.xlf
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.tr.xlf
+2
-0
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.zh-Hans.xlf
...tegration/src/FSharp.Editor/xlf/FSharp.Editor.zh-Hans.xlf
+2
-0
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.zh-Hant.xlf
...tegration/src/FSharp.Editor/xlf/FSharp.Editor.zh-Hant.xlf
+2
-0
vsintegration/src/FSharp.UIResources/AdvancedOptionsControl.xaml
...ration/src/FSharp.UIResources/AdvancedOptionsControl.xaml
+2
-0
vsintegration/src/FSharp.UIResources/Strings.Designer.cs
vsintegration/src/FSharp.UIResources/Strings.Designer.cs
+9
-0
vsintegration/src/FSharp.UIResources/Strings.resx
vsintegration/src/FSharp.UIResources/Strings.resx
+3
-0
vsintegration/src/FSharp.UIResources/xlf/Strings.cs.xlf
vsintegration/src/FSharp.UIResources/xlf/Strings.cs.xlf
+5
-0
vsintegration/src/FSharp.UIResources/xlf/Strings.de.xlf
vsintegration/src/FSharp.UIResources/xlf/Strings.de.xlf
+5
-0
vsintegration/src/FSharp.UIResources/xlf/Strings.es.xlf
vsintegration/src/FSharp.UIResources/xlf/Strings.es.xlf
+5
-0
vsintegration/src/FSharp.UIResources/xlf/Strings.fr.xlf
vsintegration/src/FSharp.UIResources/xlf/Strings.fr.xlf
+5
-0
vsintegration/src/FSharp.UIResources/xlf/Strings.it.xlf
vsintegration/src/FSharp.UIResources/xlf/Strings.it.xlf
+5
-0
vsintegration/src/FSharp.UIResources/xlf/Strings.ja.xlf
vsintegration/src/FSharp.UIResources/xlf/Strings.ja.xlf
+5
-0
vsintegration/src/FSharp.UIResources/xlf/Strings.ko.xlf
vsintegration/src/FSharp.UIResources/xlf/Strings.ko.xlf
+5
-0
vsintegration/src/FSharp.UIResources/xlf/Strings.pl.xlf
vsintegration/src/FSharp.UIResources/xlf/Strings.pl.xlf
+5
-0
vsintegration/src/FSharp.UIResources/xlf/Strings.pt-BR.xlf
vsintegration/src/FSharp.UIResources/xlf/Strings.pt-BR.xlf
+5
-0
vsintegration/src/FSharp.UIResources/xlf/Strings.ru.xlf
vsintegration/src/FSharp.UIResources/xlf/Strings.ru.xlf
+5
-0
vsintegration/src/FSharp.UIResources/xlf/Strings.tr.xlf
vsintegration/src/FSharp.UIResources/xlf/Strings.tr.xlf
+5
-0
vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hans.xlf
vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hans.xlf
+5
-0
vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hant.xlf
vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hant.xlf
+5
-0
vsintegration/tests/FSharp.Editor.Tests/FSharp.Editor.Tests.fsproj
...tion/tests/FSharp.Editor.Tests/FSharp.Editor.Tests.fsproj
+1
-0
vsintegration/tests/FSharp.Editor.Tests/Hints/HintTestFramework.fs
...tion/tests/FSharp.Editor.Tests/Hints/HintTestFramework.fs
+8
-3
vsintegration/tests/FSharp.Editor.Tests/Hints/InlineReturnTypeHintTests.fs
...ts/FSharp.Editor.Tests/Hints/InlineReturnTypeHintTests.fs
+120
-0
vsintegration/tests/FSharp.Editor.Tests/Hints/OverallHintExperienceTests.fs
...s/FSharp.Editor.Tests/Hints/OverallHintExperienceTests.fs
+9
-1
未找到文件。
src/Compiler/Service/FSharpParseFileResults.fs
浏览文件 @
d598a05c
...
...
@@ -398,6 +398,35 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput,
SyntaxTraversal
.
Traverse
(
expressionPos
,
input
,
visitor
)
member
_.
TryRangeOfReturnTypeHint
(
symbolUseStart
:
pos
,
?
skipLambdas
)
=
let
skipLambdas
=
defaultArg
skipLambdas
true
SyntaxTraversal
.
Traverse
(
symbolUseStart
,
input
,
{
new
SyntaxVisitorBase
<_>()
with
member
_.
VisitExpr
(_
path
,
_
traverseSynExpr
,
defaultTraverse
,
expr
)
=
defaultTraverse
expr
override
_.
VisitBinding
(_
path
,
defaultTraverse
,
binding
)
=
match
binding
with
|
SynBinding
(
expr
=
SynExpr
.
Lambda
_)
when
skipLambdas
->
defaultTraverse
binding
// Skip manually type-annotated bindings
|
SynBinding
(
returnInfo
=
Some
(
SynBindingReturnInfo
(
typeName
=
SynType
.
LongIdent
_)))
->
defaultTraverse
binding
// Let binding
|
SynBinding
(
trivia
=
{
EqualsRange
=
Some
equalsRange
};
range
=
range
)
when
range
.
Start
=
symbolUseStart
->
Some
equalsRange
.
StartRange
// Member binding
|
SynBinding
(
headPat
=
SynPat
.
LongIdent
(
longDotId
=
SynLongIdent
(
id
=
_
::
ident
::
_))
trivia
=
{
EqualsRange
=
Some
equalsRange
})
when
ident
.
idRange
.
Start
=
symbolUseStart
->
Some
equalsRange
.
StartRange
|
_
->
defaultTraverse
binding
}
)
member
_.
FindParameterLocations
pos
=
ParameterLocations
.
Find
(
pos
,
input
)
member
_.
IsPositionContainedInACurriedParameter
pos
=
...
...
src/Compiler/Service/FSharpParseFileResults.fsi
浏览文件 @
d598a05c
...
...
@@ -52,6 +52,10 @@ type public FSharpParseFileResults =
/// Gets the range of an expression being dereferenced. For `!expr`, gives the range of `expr`
member
TryRangeOfExpressionBeingDereferencedContainingPos
:
expressionPos
:
pos
->
range
option
/// Gets the range of where a return type hint could be placed for a function binding. This will be right in front of the equals sign.
/// Returns None if type annotation is present.
member
TryRangeOfReturnTypeHint
:
symbolUseStart
:
pos
*
?
skipLambdas
:
bool
->
range
option
/// Notable parse info for ParameterInfo at a given location
member
FindParameterLocations
:
pos
:
pos
->
ParameterLocations
option
...
...
src/Compiler/Symbols/Symbols.fs
浏览文件 @
d598a05c
...
...
@@ -2331,24 +2331,20 @@ type FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) =
|>
LayoutRender
.
toArray
member
x
.
GetReturnTypeLayout
(
displayContext
:
FSharpDisplayContext
)
=
match
x
.
IsMember
,
d
with
|
true
,
_
->
None
|
false
,
_
->
checkIsResolved
()
match
d
with
|
E
_
|
P
_
|
C
_
->
None
|
M
m
->
let
retTy
=
m
.
GetFSharpReturnType
(
cenv
.
amap
,
range0
,
m
.
FormalMethodInst
)
NicePrint
.
layoutType
(
displayContext
.
Contents
cenv
.
g
)
retTy
|>
LayoutRender
.
toArray
|>
Some
|
V
v
->
NicePrint
.
layoutOfValReturnType
(
displayContext
.
Contents
cenv
.
g
)
v
|>
LayoutRender
.
toArray
|>
Some
checkIsResolved
()
match
d
with
|
E
_
|
P
_
|
C
_
->
None
|
M
m
->
let
retTy
=
m
.
GetFSharpReturnType
(
cenv
.
amap
,
range0
,
m
.
FormalMethodInst
)
NicePrint
.
layoutType
(
displayContext
.
Contents
cenv
.
g
)
retTy
|>
LayoutRender
.
toArray
|>
Some
|
V
v
->
NicePrint
.
layoutOfValReturnType
(
displayContext
.
Contents
cenv
.
g
)
v
|>
LayoutRender
.
toArray
|>
Some
member
x
.
GetWitnessPassingInfo
()
=
let
witnessInfos
=
...
...
tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl
浏览文件 @
d598a05c
...
...
@@ -2091,6 +2091,7 @@ FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FShar
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] TryRangeOfNameOfNearestOuterBindingContainingPos(FSharp.Compiler.Text.Position)
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] TryRangeOfRecordExpressionContainingPos(FSharp.Compiler.Text.Position)
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] TryRangeOfRefCellDereferenceContainingPos(FSharp.Compiler.Text.Position)
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] TryRangeOfReturnTypeHint(FSharp.Compiler.Text.Position, Microsoft.FSharp.Core.FSharpOption`1[System.Boolean])
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] TryRangeOfStringInterpolationContainingPos(FSharp.Compiler.Text.Position)
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] ValidateBreakpointLocation(FSharp.Compiler.Text.Position)
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Text.Range]] GetAllArgumentsForFunctionApplicationAtPosition(FSharp.Compiler.Text.Position)
tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl
浏览文件 @
d598a05c
...
...
@@ -2091,6 +2091,7 @@ FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FShar
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] TryRangeOfNameOfNearestOuterBindingContainingPos(FSharp.Compiler.Text.Position)
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] TryRangeOfRecordExpressionContainingPos(FSharp.Compiler.Text.Position)
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] TryRangeOfRefCellDereferenceContainingPos(FSharp.Compiler.Text.Position)
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] TryRangeOfReturnTypeHint(FSharp.Compiler.Text.Position, Microsoft.FSharp.Core.FSharpOption`1[System.Boolean])
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] TryRangeOfStringInterpolationContainingPos(FSharp.Compiler.Text.Position)
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] ValidateBreakpointLocation(FSharp.Compiler.Text.Position)
FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Text.Range]] GetAllArgumentsForFunctionApplicationAtPosition(FSharp.Compiler.Text.Position)
vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
浏览文件 @
d598a05c
...
...
@@ -137,6 +137,7 @@
<Compile
Include=
"AutomaticCompletion\BraceCompletionSessionProvider.fs"
/>
<Compile
Include=
"Hints\Hints.fs"
/>
<Compile
Include=
"Hints\InlineTypeHints.fs"
/>
<Compile
Include=
"hints\InlineReturnTypeHints.fs"
/>
<Compile
Include=
"Hints\InlineParameterNameHints.fs"
/>
<Compile
Include=
"Hints\HintService.fs"
/>
<Compile
Include=
"Hints\NativeToRoslynHintConverter.fs"
/>
...
...
vsintegration/src/FSharp.Editor/FSharp.Editor.resx
浏览文件 @
d598a05c
...
...
@@ -224,6 +224,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</value>
...
...
vsintegration/src/FSharp.Editor/Hints/HintService.fs
浏览文件 @
d598a05c
...
...
@@ -17,6 +17,9 @@ module HintService =
Seq
.
filter
(
InlineTypeHints
.
isValidForHint
parseResults
symbol
)
>>
Seq
.
collect
(
InlineTypeHints
.
getHints
symbol
)
let
inline
private
getReturnTypeHints
parseResults
symbol
=
Seq
.
collect
(
InlineReturnTypeHints
(
parseResults
,
symbol
).
getHints
)
let
inline
private
getHintsForMemberOrFunctionOrValue
(
sourceText
:
SourceText
)
parseResults
symbol
:
NativeHintResolver
=
Seq
.
filter
(
InlineParameterNameHints
.
isMemberOrFunctionOrValueValidForHint
symbol
)
>>
Seq
.
collect
(
InlineParameterNameHints
.
getHintsForMemberOrFunctionOrValue
sourceText
parseResults
symbol
)
...
...
@@ -35,6 +38,10 @@ module HintService =
match
symbol
with
|
:?
FSharpMemberOrFunctionOrValue
as
symbol
->
getTypeHints
parseResults
symbol
|>
Some
|
_
->
None
|
HintKind
.
ReturnTypeHint
->
match
symbol
with
|
:?
FSharpMemberOrFunctionOrValue
as
symbol
->
getReturnTypeHints
parseResults
symbol
|>
Some
|
_
->
None
|
HintKind
.
ParameterNameHint
->
match
symbol
with
|
:?
FSharpMemberOrFunctionOrValue
as
symbol
->
...
...
@@ -45,7 +52,7 @@ module HintService =
::
resolvers
|>
resolve
hintKinds
in
resolve
hintKinds
[]
resolve
hintKinds
[]
let
private
getHintsForSymbol
(
sourceText
:
SourceText
)
parseResults
hintKinds
(
symbol
:
FSharpSymbol
,
symbolUses
:
FSharpSymbolUse
seq
)
=
symbol
...
...
vsintegration/src/FSharp.Editor/Hints/Hints.fs
浏览文件 @
d598a05c
...
...
@@ -9,6 +9,7 @@ module Hints =
type
HintKind
=
|
TypeHint
|
ParameterNameHint
|
ReturnTypeHint
// Relatively convenient for testing
type
NativeHint
=
...
...
@@ -22,3 +23,4 @@ module Hints =
match
kind
with
|
TypeHint
->
"type"
|
ParameterNameHint
->
"parameterName"
|
ReturnTypeHint
->
"returnType"
vsintegration/src/FSharp.Editor/Hints/InlineReturnTypeHints.fs
0 → 100644
浏览文件 @
d598a05c
// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
namespace
Microsoft
.
VisualStudio
.
FSharp
.
Editor
.
Hints
open
Microsoft
.
VisualStudio
.
FSharp
.
Editor
open
FSharp
.
Compiler
.
CodeAnalysis
open
FSharp
.
Compiler
.
Symbols
open
FSharp
.
Compiler
.
Text
open
Hints
type
InlineReturnTypeHints
(
parseFileResults
:
FSharpParseFileResults
,
symbol
:
FSharpMemberOrFunctionOrValue
)
=
let
getHintParts
(
symbolUse
:
FSharpSymbolUse
)
=
symbol
.
GetReturnTypeLayout
symbolUse
.
DisplayContext
|>
Option
.
map
(
fun
typeInfo
->
[
TaggedText
(
TextTag
.
Text
,
": "
)
yield
!
typeInfo
|>
Array
.
toList
TaggedText
(
TextTag
.
Space
,
" "
)
])
let
getHint
symbolUse
range
=
getHintParts
symbolUse
|>
Option
.
map
(
fun
parts
->
{
Kind
=
HintKind
.
ReturnTypeHint
Range
=
range
Parts
=
parts
})
member
_.
getHints
(
symbolUse
:
FSharpSymbolUse
)
=
[
if
symbol
.
IsFunction
then
yield
!
parseFileResults
.
TryRangeOfReturnTypeHint
symbolUse
.
Range
.
Start
|>
Option
.
bind
(
getHint
symbolUse
)
|>
Option
.
toList
]
vsintegration/src/FSharp.Editor/Hints/OptionParser.fs
浏览文件 @
d598a05c
...
...
@@ -15,4 +15,7 @@ module OptionParser =
if
options
.
IsInlineParameterNameHintsEnabled
then
HintKind
.
ParameterNameHint
if
options
.
IsInlineReturnTypeHintsEnabled
then
HintKind
.
ReturnTypeHint
]
vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
浏览文件 @
d598a05c
...
...
@@ -137,6 +137,9 @@ type internal FSharpWorkspaceServiceFactory [<System.Composition.ImportingConstr
let
isInlineTypeHintsEnabled
=
editorOptions
.
Advanced
.
IsInlineTypeHintsEnabled
let
isInlineReturnTypeHintsEnabled
=
editorOptions
.
Advanced
.
IsInlineReturnTypeHintsEnabled
let
enablePartialTypeChecking
=
editorOptions
.
LanguageServicePerformance
.
EnablePartialTypeChecking
...
...
@@ -169,6 +172,7 @@ type internal FSharpWorkspaceServiceFactory [<System.Composition.ImportingConstr
nameof
enableFastFindReferences
,
enableFastFindReferences
nameof
isInlineParameterNameHintsEnabled
,
isInlineParameterNameHintsEnabled
nameof
isInlineTypeHintsEnabled
,
isInlineTypeHintsEnabled
nameof
isInlineReturnTypeHintsEnabled
,
isInlineReturnTypeHintsEnabled
nameof
enablePartialTypeChecking
,
enablePartialTypeChecking
]
...
...
vsintegration/src/FSharp.Editor/Options/EditorOptions.fs
浏览文件 @
d598a05c
...
...
@@ -105,6 +105,7 @@ type AdvancedOptions =
IsOutliningEnabled
:
bool
IsInlineTypeHintsEnabled
:
bool
IsInlineParameterNameHintsEnabled
:
bool
IsInlineReturnTypeHintsEnabled
:
bool
IsLiveBuffersEnabled
:
bool
}
...
...
@@ -114,6 +115,7 @@ type AdvancedOptions =
IsOutliningEnabled
=
true
IsInlineTypeHintsEnabled
=
false
IsInlineParameterNameHintsEnabled
=
false
IsInlineReturnTypeHintsEnabled
=
false
IsLiveBuffersEnabled
=
FSharpExperimentalFeaturesEnabledAutomatically
}
...
...
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.cs.xlf
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</source>
...
...
@@ -43,6 +44,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</target>
...
...
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.de.xlf
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</source>
...
...
@@ -43,6 +44,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</target>
...
...
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.es.xlf
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</source>
...
...
@@ -43,6 +44,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</target>
...
...
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.fr.xlf
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</source>
...
...
@@ -43,6 +44,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</target>
...
...
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.it.xlf
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</source>
...
...
@@ -43,6 +44,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</target>
...
...
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.ja.xlf
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</source>
...
...
@@ -43,6 +44,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</target>
...
...
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.ko.xlf
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</source>
...
...
@@ -43,6 +44,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</target>
...
...
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.pl.xlf
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</source>
...
...
@@ -43,6 +44,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</target>
...
...
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.pt-BR.xlf
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</source>
...
...
@@ -43,6 +44,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</target>
...
...
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.ru.xlf
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</source>
...
...
@@ -43,6 +44,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</target>
...
...
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.tr.xlf
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</source>
...
...
@@ -43,6 +44,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</target>
...
...
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.zh-Hans.xlf
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</source>
...
...
@@ -43,6 +44,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</target>
...
...
vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.zh-Hant.xlf
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</source>
...
...
@@ -43,6 +44,7 @@ Outlining;
Show outlining and collapsible nodes for F# code;
Inline hints;
Display inline type hints (preview);
Display return type hints (preview);
Display inline parameter name hints (preview);Beer;
Live Buffers;
Use live (unsaved) buffers for checking
</target>
...
...
vsintegration/src/FSharp.UIResources/AdvancedOptionsControl.xaml
浏览文件 @
d598a05c
...
...
@@ -28,6 +28,8 @@
<StackPanel>
<CheckBox x:Name="toggleInlineTypeHints" IsChecked="{Binding IsInlineTypeHintsEnabled}"
Content="{x:Static local:Strings.Show_Inline_Type_Hints}"/>
<CheckBox x:Name="toggleReturnTypeHints" IsChecked="{Binding IsInlineReturnTypeHintsEnabled}"
Content="{x:Static local:Strings.Show_Return_Type_Hints}"/>
<CheckBox x:Name="toggleParameterNameHints" IsChecked="{Binding IsInlineParameterNameHintsEnabled}"
Content="{x:Static local:Strings.Show_Inline_Parameter_Name_Hints}"/>
</StackPanel>
...
...
vsintegration/src/FSharp.UIResources/Strings.Designer.cs
浏览文件 @
d598a05c
...
...
@@ -402,6 +402,15 @@ public class Strings {
}
}
/// <summary>
/// Looks up a localized string similar to Display return type hints (preview).
/// </summary>
public
static
string
Show_Return_Type_Hints
{
get
{
return
ResourceManager
.
GetString
(
"Show_Return_Type_Hints"
,
resourceCulture
);
}
}
/// <summary>
/// Looks up a localized string similar to Simplify names (remove unnecessary qualifiers).
/// </summary>
...
...
vsintegration/src/FSharp.UIResources/Strings.resx
浏览文件 @
d598a05c
...
...
@@ -261,4 +261,7 @@
<data
name=
"Tooltip_preferred_description_width_in_characters"
xml:space=
"preserve"
>
<value>
Format signature to the given width by adding line breaks conforming with F# syntax rules.
</value>
</data>
<data
name=
"Show_Return_Type_Hints"
xml:space=
"preserve"
>
<value>
Display return type hints (preview)
</value>
</data>
</root>
\ No newline at end of file
vsintegration/src/FSharp.UIResources/xlf/Strings.cs.xlf
浏览文件 @
d598a05c
...
...
@@ -107,6 +107,11 @@
<target
state=
"needs-review-translation"
>
Zobrazení tipů pro vložený typ (experimentální)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_Return_Type_Hints"
>
<source>
Display return type hints (preview)
</source>
<target
state=
"new"
>
Display return type hints (preview)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_all_symbols"
>
<source>
Show s_ymbols in unopened namespaces
</source>
<target
state=
"translated"
>
Zobrazit s_ymboly v neotevřených oborech názvů
</target>
...
...
vsintegration/src/FSharp.UIResources/xlf/Strings.de.xlf
浏览文件 @
d598a05c
...
...
@@ -107,6 +107,11 @@
<target
state=
"needs-review-translation"
>
Hinweise für Inlinetypen anzeigen (experimentell)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_Return_Type_Hints"
>
<source>
Display return type hints (preview)
</source>
<target
state=
"new"
>
Display return type hints (preview)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_all_symbols"
>
<source>
Show s_ymbols in unopened namespaces
</source>
<target
state=
"translated"
>
S_ymbole in nicht geöffneten Namespaces anzeigen
</target>
...
...
vsintegration/src/FSharp.UIResources/xlf/Strings.es.xlf
浏览文件 @
d598a05c
...
...
@@ -107,6 +107,11 @@
<target
state=
"needs-review-translation"
>
Mostrar sugerencias de tipo insertadas (experimental)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_Return_Type_Hints"
>
<source>
Display return type hints (preview)
</source>
<target
state=
"new"
>
Display return type hints (preview)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_all_symbols"
>
<source>
Show s_ymbols in unopened namespaces
</source>
<target
state=
"translated"
>
Mostrar sím_bolos en espacios de nombres sin abrir
</target>
...
...
vsintegration/src/FSharp.UIResources/xlf/Strings.fr.xlf
浏览文件 @
d598a05c
...
...
@@ -107,6 +107,11 @@
<target
state=
"needs-review-translation"
>
Afficher les indicateurs de type inline (expérimental)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_Return_Type_Hints"
>
<source>
Display return type hints (preview)
</source>
<target
state=
"new"
>
Display return type hints (preview)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_all_symbols"
>
<source>
Show s_ymbols in unopened namespaces
</source>
<target
state=
"translated"
>
Afficher les sym_boles dans les espaces de noms non ouverts
</target>
...
...
vsintegration/src/FSharp.UIResources/xlf/Strings.it.xlf
浏览文件 @
d598a05c
...
...
@@ -107,6 +107,11 @@
<target
state=
"needs-review-translation"
>
Visualizzare suggerimenti di tipo inline (sperimentale)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_Return_Type_Hints"
>
<source>
Display return type hints (preview)
</source>
<target
state=
"new"
>
Display return type hints (preview)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_all_symbols"
>
<source>
Show s_ymbols in unopened namespaces
</source>
<target
state=
"translated"
>
Mostra si_mboli in spazi dei nomi non aperti
</target>
...
...
vsintegration/src/FSharp.UIResources/xlf/Strings.ja.xlf
浏览文件 @
d598a05c
...
...
@@ -107,6 +107,11 @@
<target
state=
"needs-review-translation"
>
インライン型のヒントを表示する (試験段階)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_Return_Type_Hints"
>
<source>
Display return type hints (preview)
</source>
<target
state=
"new"
>
Display return type hints (preview)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_all_symbols"
>
<source>
Show s_ymbols in unopened namespaces
</source>
<target
state=
"translated"
>
開かれていない名前空間の記号を表示する(_Y)
</target>
...
...
vsintegration/src/FSharp.UIResources/xlf/Strings.ko.xlf
浏览文件 @
d598a05c
...
...
@@ -107,6 +107,11 @@
<target
state=
"needs-review-translation"
>
인라인 유형 힌트 표시(실험적)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_Return_Type_Hints"
>
<source>
Display return type hints (preview)
</source>
<target
state=
"new"
>
Display return type hints (preview)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_all_symbols"
>
<source>
Show s_ymbols in unopened namespaces
</source>
<target
state=
"translated"
>
열려 있지 않은 네임스페이스에 기호 표시(_Y)
</target>
...
...
vsintegration/src/FSharp.UIResources/xlf/Strings.pl.xlf
浏览文件 @
d598a05c
...
...
@@ -107,6 +107,11 @@
<target
state=
"needs-review-translation"
>
Wyświetl wskazówki typu wbudowanego (eksperymentalne)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_Return_Type_Hints"
>
<source>
Display return type hints (preview)
</source>
<target
state=
"new"
>
Display return type hints (preview)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_all_symbols"
>
<source>
Show s_ymbols in unopened namespaces
</source>
<target
state=
"translated"
>
Pokaż s_ymbole w nieotwartych przestrzeniach nazw
</target>
...
...
vsintegration/src/FSharp.UIResources/xlf/Strings.pt-BR.xlf
浏览文件 @
d598a05c
...
...
@@ -107,6 +107,11 @@
<target
state=
"needs-review-translation"
>
Exibir as dicas de tipo embutido (experimental)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_Return_Type_Hints"
>
<source>
Display return type hints (preview)
</source>
<target
state=
"new"
>
Display return type hints (preview)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_all_symbols"
>
<source>
Show s_ymbols in unopened namespaces
</source>
<target
state=
"translated"
>
Mostrar s_ímbolos em namespaces não abertos
</target>
...
...
vsintegration/src/FSharp.UIResources/xlf/Strings.ru.xlf
浏览文件 @
d598a05c
...
...
@@ -107,6 +107,11 @@
<target
state=
"needs-review-translation"
>
Отображать подсказки для встроенных типов (экспериментальная версия)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_Return_Type_Hints"
>
<source>
Display return type hints (preview)
</source>
<target
state=
"new"
>
Display return type hints (preview)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_all_symbols"
>
<source>
Show s_ymbols in unopened namespaces
</source>
<target
state=
"translated"
>
По_казать символы в неоткрытых пространствах имен
</target>
...
...
vsintegration/src/FSharp.UIResources/xlf/Strings.tr.xlf
浏览文件 @
d598a05c
...
...
@@ -107,6 +107,11 @@
<target
state=
"needs-review-translation"
>
Satır içi tür ipuçlarını göster (deneysel)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_Return_Type_Hints"
>
<source>
Display return type hints (preview)
</source>
<target
state=
"new"
>
Display return type hints (preview)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_all_symbols"
>
<source>
Show s_ymbols in unopened namespaces
</source>
<target
state=
"translated"
>
Açılmamış ad alanlarında s_embolleri göster
</target>
...
...
vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hans.xlf
浏览文件 @
d598a05c
...
...
@@ -107,6 +107,11 @@
<target
state=
"needs-review-translation"
>
显示内联类型提示(实验性)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_Return_Type_Hints"
>
<source>
Display return type hints (preview)
</source>
<target
state=
"new"
>
Display return type hints (preview)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_all_symbols"
>
<source>
Show s_ymbols in unopened namespaces
</source>
<target
state=
"translated"
>
显示未打开的命名空间中的符号(_Y)
</target>
...
...
vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hant.xlf
浏览文件 @
d598a05c
...
...
@@ -107,6 +107,11 @@
<target
state=
"needs-review-translation"
>
顯示內嵌類型提示 (實驗性)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_Return_Type_Hints"
>
<source>
Display return type hints (preview)
</source>
<target
state=
"new"
>
Display return type hints (preview)
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Show_all_symbols"
>
<source>
Show s_ymbols in unopened namespaces
</source>
<target
state=
"translated"
>
顯示未開啟之命名空間中的符號(_Y)
</target>
...
...
vsintegration/tests/FSharp.Editor.Tests/FSharp.Editor.Tests.fsproj
浏览文件 @
d598a05c
...
...
@@ -34,6 +34,7 @@
<Compile Include="Hints\OptionParserTests.fs" />
<Compile Include="Hints\InlineParameterNameHintTests.fs" />
<Compile Include="Hints\InlineTypeHintTests.fs" />
<Compile Include="hints\InlineReturnTypeHintTests.fs" />
<Compile Include="Hints\OverallHintExperienceTests.fs" />
<Compile Include="EditorFormattingServiceTests.fs" />
<Compile Include="RoslynSourceTextTests.fs" />
...
...
vsintegration/tests/FSharp.Editor.Tests/Hints/HintTestFramework.fs
浏览文件 @
d598a05c
...
...
@@ -64,11 +64,16 @@ module HintTestFramework =
|>
Async
.
RunSynchronously
let
getTypeHints
document
=
getHints
document
(
Set
.
empty
.
Add
(
HintKind
.
TypeHint
))
getHints
document
(
set
[
HintKind
.
TypeHint
])
let
getReturnTypeHints
document
=
getHints
document
(
set
[
HintKind
.
ReturnTypeHint
])
let
getParameterNameHints
document
=
getHints
document
(
Set
.
empty
.
Add
(
HintKind
.
ParameterNameHint
)
)
getHints
document
(
set
[
HintKind
.
ParameterNameHint
]
)
let
getAllHints
document
=
let
hintKinds
=
Set
.
empty
.
Add
(
HintKind
.
TypeHint
).
Add
(
HintKind
.
ParameterNameHint
)
let
hintKinds
=
set
[
HintKind
.
TypeHint
;
HintKind
.
ParameterNameHint
;
HintKind
.
ReturnTypeHint
]
getHints
document
hintKinds
vsintegration/tests/FSharp.Editor.Tests/Hints/InlineReturnTypeHintTests.fs
0 → 100644
浏览文件 @
d598a05c
// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
module
FSharp
.
Editor
.
Tests
.
Hints
.
InlineReturnTypeHintTests
open
Xunit
open
HintTestFramework
open
FSharp
.
Test
[<
Fact
>]
let
``Hints are shown for let-bound function return types``
()
=
let
code
=
"""
let func () = 3
let func2 x = x + 1
let setConsoleOut = System.Console.SetOut
"""
let
document
=
getFsDocument
code
let
result
=
getReturnTypeHints
document
let
expected
=
[
{
Content
=
": int "
Location
=
(
1
,
13
)
}
{
Content
=
": int "
Location
=
(
2
,
13
)
}
{
Content
=
": unit "
Location
=
(
3
,
19
)
}
]
Assert
.
Equal
(
expected
,
result
)
[<
Fact
>]
let
``Hints are shown for method return types``
()
=
let
code
=
"""
type Test() =
member this.Func() = 3
"""
let
document
=
getFsDocument
code
let
result
=
getReturnTypeHints
document
let
expected
=
[
{
Content
=
": int "
Location
=
(
2
,
24
)
}
]
Assert
.
Equal
(
expected
,
result
)
[<
Fact
>]
let
``Hints are shown for generic functions``
()
=
let
code
=
"let func _a = 5"
let
document
=
getFsDocument
code
let
result
=
getReturnTypeHints
document
let
expected
=
[
{
Content
=
": int "
Location
=
(
0
,
13
)
}
]
Assert
.
Equal
(
expected
,
result
)
[<
Fact
>]
let
``Hints are shown for functions within expressions``
()
=
let
code
=
"""
let _ =
let func () = 2
"""
let
document
=
getFsDocument
code
let
result
=
getReturnTypeHints
document
let
expected
=
[
{
Content
=
": int "
Location
=
(
2
,
21
)
}
]
Assert
.
Equal
(
expected
,
result
)
[<
Fact
>]
let
``Hints are not shown for lambda bindings``
()
=
let
code
=
"let func = fun () -> 3"
let
document
=
getFsDocument
code
let
result
=
getReturnTypeHints
document
Assert
.
Empty
result
[<
Fact
>]
let
``Hints are not shown when there's type annotation``
()
=
let
code
=
"let func x : int = x"
let
document
=
getFsDocument
code
let
result
=
getReturnTypeHints
document
Assert
.
Empty
result
vsintegration/tests/FSharp.Editor.Tests/Hints/OverallHintExperienceTests.fs
浏览文件 @
d598a05c
...
...
@@ -26,7 +26,7 @@ let a = Square 1
let b = Rectangle (1, 2)
type C (blahFirst: int) =
member _.Normal (what: string) = 1
member _.Normal (what: string) = 1
let a = C 1
let cc = a.Normal "
hmm
"
...
...
@@ -40,6 +40,10 @@ let cc = a.Normal "hmm"
Content
=
": Song"
Location
=
(
2
,
18
)
}
{
Content
=
": string "
Location
=
(
2
,
19
)
}
{
Content
=
"song = "
Location
=
(
4
,
23
)
...
...
@@ -68,6 +72,10 @@ let cc = a.Normal "hmm"
Content
=
": Shape"
Location
=
(
11
,
6
)
}
{
Content
=
": int "
Location
=
(
14
,
36
)
}
{
Content
=
"blahFirst = "
Location
=
(
16
,
11
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录