diff --git a/.gitignore b/.gitignore index f542344247..c66b175e19 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ **/.DS_Store NuGet.Config -.gradle/ \ No newline at end of file +.gradle/ +ReSharper.Fsharp.sln.DotSettings.user diff --git a/ReSharper.FSharp/src/FSharp.Psi.Features/FSharp.Psi.Features.fsproj b/ReSharper.FSharp/src/FSharp.Psi.Features/FSharp.Psi.Features.fsproj index 86889c7aa4..457cb67b8c 100644 --- a/ReSharper.FSharp/src/FSharp.Psi.Features/FSharp.Psi.Features.fsproj +++ b/ReSharper.FSharp/src/FSharp.Psi.Features/FSharp.Psi.Features.fsproj @@ -122,6 +122,7 @@ + @@ -131,11 +132,12 @@ - + + QUICKFIX JetBrains.ReSharper.Plugins.FSharp.Psi.Features.Daemon.QuickFixes diff --git a/ReSharper.FSharp/src/FSharp.Psi.Features/src/Intentions/FunctionArgumentTypesAnnotationAction.fs b/ReSharper.FSharp/src/FSharp.Psi.Features/src/Intentions/FunctionArgumentTypesAnnotationAction.fs new file mode 100644 index 0000000000..1601e79c8a --- /dev/null +++ b/ReSharper.FSharp/src/FSharp.Psi.Features/src/Intentions/FunctionArgumentTypesAnnotationAction.fs @@ -0,0 +1,21 @@ +namespace JetBrains.ReSharper.Plugins.FSharp.Psi.Features.Intentions + +open JetBrains.ReSharper.Feature.Services.ContextActions +open JetBrains.ReSharper.Plugins.FSharp.Psi.Impl +open JetBrains.ReSharper.Plugins.FSharp.Psi.Tree + +[] +type FunctionArgumentTypesAnnotationAction(dataProvider: FSharpContextActionDataProvider) = + inherit SpecifyTypes.FunctionAnnotationActionBase(dataProvider) + + override this.IsAnnotated (binding: IBinding) = + match binding.HeadPattern with + | :? IParametersOwnerPat as parametersOwner -> + parametersOwner.ParametersEnumerable |> Seq.forall (fun pat -> pat.IgnoreInnerParens() :? ITypedPat) + | _ -> true + + override this.Text = "Add parameter type annotations" + override this.ApplyFunctionAnnotation parametersOwner binding mfv displayContext = + if isNotNull parametersOwner then + SpecifyTypes.specifyArgumentTypes parametersOwner binding mfv displayContext diff --git a/ReSharper.FSharp/src/FSharp.Psi.Features/src/Intentions/FunctionReturnTypeAnnotationAction.fs b/ReSharper.FSharp/src/FSharp.Psi.Features/src/Intentions/FunctionReturnTypeAnnotationAction.fs new file mode 100644 index 0000000000..2c618da8ea --- /dev/null +++ b/ReSharper.FSharp/src/FSharp.Psi.Features/src/Intentions/FunctionReturnTypeAnnotationAction.fs @@ -0,0 +1,16 @@ +namespace JetBrains.ReSharper.Plugins.FSharp.Psi.Features.Intentions + +open JetBrains.ReSharper.Feature.Services.ContextActions +open JetBrains.ReSharper.Plugins.FSharp.Psi.Tree + +[] +type FunctionReturnTypeAnnotationAction(dataProvider: FSharpContextActionDataProvider) = + inherit SpecifyTypes.FunctionAnnotationActionBase(dataProvider) + + override this.IsAnnotated (binding: IBinding) = isNotNull binding.ReturnTypeInfo + + override x.Text = "Add return type annotation" + override this.ApplyFunctionAnnotation _parametersOwner binding mfv displayContext = + if isNull binding.ReturnTypeInfo then + SpecifyTypes.specifyBindingReturnType binding mfv displayContext diff --git a/ReSharper.FSharp/src/FSharp.Psi.Features/src/Intentions/FunctionAnnotationAction.fs b/ReSharper.FSharp/src/FSharp.Psi.Features/src/Intentions/SpecifyTypes.fs similarity index 56% rename from ReSharper.FSharp/src/FSharp.Psi.Features/src/Intentions/FunctionAnnotationAction.fs rename to ReSharper.FSharp/src/FSharp.Psi.Features/src/Intentions/SpecifyTypes.fs index f0db101a8e..91bab96bcf 100644 --- a/ReSharper.FSharp/src/FSharp.Psi.Features/src/Intentions/FunctionAnnotationAction.fs +++ b/ReSharper.FSharp/src/FSharp.Psi.Features/src/Intentions/SpecifyTypes.fs @@ -2,7 +2,6 @@ open FSharp.Compiler.SourceCodeServices open JetBrains.Application.Settings -open JetBrains.ReSharper.Feature.Services.ContextActions open JetBrains.ReSharper.Plugins.FSharp.Psi open JetBrains.ReSharper.Plugins.FSharp.Psi.Features.Util open JetBrains.ReSharper.Plugins.FSharp.Psi.Impl @@ -12,49 +11,50 @@ open JetBrains.ReSharper.Plugins.FSharp.Services.Formatter open JetBrains.ReSharper.Psi.ExtensionsAPI open JetBrains.ReSharper.Psi.ExtensionsAPI.Tree open JetBrains.ReSharper.Psi.Tree +open JetBrains.ReSharper.Plugins.FSharp.Psi.Features.Intentions open JetBrains.ReSharper.Resources.Shell module SpecifyTypes = - let specifyBindingReturnType (binding: IBinding) (mfv: FSharpMemberOrFunctionOrValue) displayContext = - let typeString = - let fullType = mfv.FullType - if fullType.IsFunctionType then - let specifiedTypesCount = - match binding.HeadPattern with - | :? IParametersOwnerPat as pat -> pat.Parameters.Count - | _ -> 0 - - let types = FcsTypesUtil.getFunctionTypeArgs fullType - if types.Length <= specifiedTypesCount then mfv.ReturnParameter.Type.Format(displayContext) else - - let remainingTypes = types |> List.skip specifiedTypesCount - remainingTypes - |> List.map (fun fcsType -> - let typeString = fcsType.Format(displayContext) - if fcsType.IsFunctionType then sprintf "(%s)" typeString else typeString) - |> String.concat " -> " - else - mfv.ReturnParameter.Type.Format(displayContext) - + [] + type FunctionAnnotationActionBase(dataProvider: FSharpContextActionDataProvider) = + inherit FSharpContextActionBase(dataProvider) + + abstract member IsAnnotated: IBinding -> bool + abstract member ApplyFunctionAnnotation: IParametersOwnerPat -> IBinding -> FSharpMemberOrFunctionOrValue -> FSharpDisplayContext -> unit + + override this.IsAvailable _ = + let letBindings = dataProvider.GetSelectedElement() + if isNull letBindings then false else + + let bindings = letBindings.Bindings + if bindings.Count <> 1 then false else + + isAtLetExprKeywordOrNamedPat dataProvider letBindings && + bindings |> Seq.exactlyOne |> this.IsAnnotated |> not + override this.ExecutePsiTransaction _ = + let letBindings = dataProvider.GetSelectedElement() + let binding = letBindings.Bindings |> Seq.exactlyOne + + use writeCookie = WriteLockCookie.Create(binding.IsPhysical()) + use disableFormatter = new DisableCodeFormatter() + + let namedPat = binding.HeadPattern.As() + if isNull namedPat then () else + + let symbolUse = namedPat.GetFSharpSymbolUse() + if isNull symbolUse then () else + + let mfv = symbolUse.Symbol :?> FSharpMemberOrFunctionOrValue + let displayContext = symbolUse.DisplayContext + + let parametersOwner = namedPat.As() + this.ApplyFunctionAnnotation parametersOwner binding mfv displayContext + let specifyArgumentTypes + (parameterOwner: IParametersOwnerPat) + (binding: IBinding) + (mfv: FSharpMemberOrFunctionOrValue) + (displayContext: FSharpDisplayContext) = let factory = binding.CreateElementFactory() - let typeUsage = factory.CreateTypeUsage(typeString) - - let pat = binding.HeadPattern - let returnTypeInfo = ModificationUtil.AddChildAfter(pat, factory.CreateReturnTypeInfo(typeUsage)) - - let settingsStore = pat.GetSettingsStoreWithEditorConfig() - if settingsStore.GetValue(fun (key: FSharpFormatSettingsKey) -> key.SpaceBeforeColon) then - ModificationUtil.AddChildBefore(returnTypeInfo, Whitespace()) |> ignore - - -[] -type FunctionAnnotationAction(dataProvider: FSharpContextActionDataProvider) = - inherit FSharpContextActionBase(dataProvider) - - let specifyParameterTypes - (parameterOwner: IParametersOwnerPat) (factory: IFSharpElementFactory) - (mfv: FSharpMemberOrFunctionOrValue) displayContext = let addParens pattern = let parenPat = factory.CreateParenPat() @@ -79,45 +79,36 @@ type FunctionAnnotationAction(dataProvider: FSharpContextActionDataProvider) = replaceWithCopy parameter parenPat - let isAnnotated (binding: IBinding) = - isNotNull binding.ReturnTypeInfo && - - match binding.HeadPattern with - | :? IParametersOwnerPat as parametersOwner -> - parametersOwner.ParametersEnumerable |> Seq.forall (fun pat -> pat.IgnoreInnerParens() :? ITypedPat) - | _ -> true - - override x.Text = "Add type annotations" - - override x.IsAvailable _ = - let letBindings = dataProvider.GetSelectedElement() - if isNull letBindings then false else + let specifyBindingReturnType + (binding: IBinding) + (mfv: FSharpMemberOrFunctionOrValue) + (displayContext: FSharpDisplayContext) = + let typeString = + let fullType = mfv.FullType + if fullType.IsFunctionType then + let specifiedTypesCount = + match binding.HeadPattern with + | :? IParametersOwnerPat as pat -> pat.Parameters.Count + | _ -> 0 - let bindings = letBindings.Bindings - if bindings.Count <> 1 then false else + let types = FcsTypesUtil.getFunctionTypeArgs fullType + if types.Length <= specifiedTypesCount then mfv.ReturnParameter.Type.Format(displayContext) else - isAtLetExprKeywordOrNamedPat dataProvider letBindings && not (isAnnotated bindings.[0]) + let remainingTypes = types |> List.skip specifiedTypesCount + remainingTypes + |> List.map (fun fcsType -> + let typeString = fcsType.Format(displayContext) + if fcsType.IsFunctionType then sprintf "(%s)" typeString else typeString) + |> String.concat " -> " + else + mfv.ReturnParameter.Type.Format(displayContext) - override x.ExecutePsiTransaction _ = - let letBindings = dataProvider.GetSelectedElement() - let binding = letBindings.Bindings |> Seq.exactlyOne let factory = binding.CreateElementFactory() + let typeUsage = factory.CreateTypeUsage(typeString) - use writeCookie = WriteLockCookie.Create(binding.IsPhysical()) - use disableFormatter = new DisableCodeFormatter() - - let namedPat = binding.HeadPattern.As() - if isNull namedPat then () else - - let symbolUse = namedPat.GetFSharpSymbolUse() - if isNull symbolUse then () else - - let mfv = symbolUse.Symbol :?> FSharpMemberOrFunctionOrValue - let displayContext = symbolUse.DisplayContext - - let parametersOwner = namedPat.As() - if isNotNull parametersOwner then - specifyParameterTypes parametersOwner factory mfv displayContext + let pat = binding.HeadPattern + let returnTypeInfo = ModificationUtil.AddChildAfter(pat, factory.CreateReturnTypeInfo(typeUsage)) - if isNull binding.ReturnTypeInfo then - SpecifyTypes.specifyBindingReturnType binding mfv displayContext + let settingsStore = pat.GetSettingsStoreWithEditorConfig() + if settingsStore.GetValue(fun (key: FSharpFormatSettingsKey) -> key.SpaceBeforeColon) then + ModificationUtil.AddChildBefore(returnTypeInfo, Whitespace()) |> ignore \ No newline at end of file diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Caret on let binding.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Caret on let binding.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Caret on let binding.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Caret on let binding.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Caret on let binding.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Caret on let binding.fs.gold new file mode 100644 index 0000000000..07114fa4dd --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Caret on let binding.fs.gold @@ -0,0 +1,3 @@ +module Module + +let{caret} f (a: string) (b: int) = sprintf "%s %d" a b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Formatting - Add space.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Formatting - Add space.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Formatting - Add space.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Formatting - Add space.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Formatting - Add space.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Formatting - Add space.fs.gold new file mode 100644 index 0000000000..05047c1165 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Formatting - Add space.fs.gold @@ -0,0 +1,3 @@ +module Module + +let f{caret} (a : string) (b : int) = sprintf "%s %d" a b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Local 01.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Local 01.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Local 01.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Local 01.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Local 01.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Local 01.fs.gold new file mode 100644 index 0000000000..a03ae339e0 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Local 01.fs.gold @@ -0,0 +1,5 @@ +module Module + +do + let f{caret} (a: string) (b: int) = sprintf "%s %d" a b + () diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 01 - Tuple.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 01 - Tuple.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 01 - Tuple.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 01 - Tuple.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 01 - Tuple.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 01 - Tuple.fs.gold new file mode 100644 index 0000000000..9fbe4c3832 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 01 - Tuple.fs.gold @@ -0,0 +1,4 @@ +module Module + +let f{caret} ((a, b): int * int) = + a + b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 02 - Wild.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 02 - Wild.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 02 - Wild.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 02 - Wild.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 02 - Wild.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 02 - Wild.fs.gold new file mode 100644 index 0000000000..4748c4bcca --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 02 - Wild.fs.gold @@ -0,0 +1,4 @@ +module Module + +let f{caret} (_: 'a) = + () diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 03 - List.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 03 - List.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 03 - List.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 03 - List.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 03 - List.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 03 - List.fs.gold new file mode 100644 index 0000000000..e8624832af --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 03 - List.fs.gold @@ -0,0 +1,4 @@ +module Module + +let f{caret} ([]: 'a list) = + () diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 04 - As.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 04 - As.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 04 - As.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 04 - As.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 04 - As.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 04 - As.fs.gold new file mode 100644 index 0000000000..e3b06bde75 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 04 - As.fs.gold @@ -0,0 +1,4 @@ +module Module + +let f{caret} (a as b: int) = + a + b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 05 - Param owner.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 05 - Param owner.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 05 - Param owner.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 05 - Param owner.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 05 - Param owner.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 05 - Param owner.fs.gold new file mode 100644 index 0000000000..e611d79f72 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters - Pattern 05 - Param owner.fs.gold @@ -0,0 +1,4 @@ +module Module + +let f{caret} (Some 123: int option) = + () diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 01 - Parens.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 01 - Parens.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 01 - Parens.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 01 - Parens.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 01 - Parens.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 01 - Parens.fs.gold new file mode 100644 index 0000000000..45c5d7d73b --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 01 - Parens.fs.gold @@ -0,0 +1,3 @@ +module Module + +let f{caret} (a: string) (b: int) = sprintf "%s %d" a b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 03 - Tuple.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 03 - Tuple.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 03 - Tuple.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 03 - Tuple.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 03 - Tuple.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 03 - Tuple.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 03 - Tuple.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 03 - Tuple.fs.gold diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 04 - Nested tuple.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 04 - Nested tuple.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 04 - Nested tuple.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 04 - Nested tuple.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 04 - Nested tuple.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 04 - Nested tuple.fs.gold similarity index 54% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 04 - Nested tuple.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 04 - Nested tuple.fs.gold index 8583ae10c8..1357ef8dd6 100644 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 04 - Nested tuple.fs.gold +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 04 - Nested tuple.fs.gold @@ -1,5 +1,5 @@ module Module -let f{caret} (a: string) (b: int * ('a * string)): string = +let f{caret} (a: string) (b: int * ('a * string)) = let b1, (_, b3) = b sprintf "%s %d %s" a b1 b3 diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 05 - Nested parens.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 05 - Nested parens.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 05 - Nested parens.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function - Parameters 05 - Nested parens.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 02 - Recursive.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 01 - Recursive.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 02 - Recursive.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 01 - Recursive.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 01 - Recursive.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 01 - Recursive.fs.gold new file mode 100644 index 0000000000..6a70dc1698 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 01 - Recursive.fs.gold @@ -0,0 +1,3 @@ +module Module + +let rec f{caret} (a: string) = a + "" diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 03 - Generic types.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 02 - Generic types.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 03 - Generic types.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 02 - Generic types.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 02 - Generic types.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 02 - Generic types.fs.gold new file mode 100644 index 0000000000..fd974d6a8b --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 02 - Generic types.fs.gold @@ -0,0 +1,4 @@ +module Module + +let f{caret} (a: seq) = + String.concat ", " a diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 05 - Specified return.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 03 - Specified return.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 05 - Specified return.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 03 - Specified return.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 05 - Specified return.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 03 - Specified return.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 05 - Specified return.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 03 - Specified return.fs.gold diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 04 - Generalized.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 04 - Generalized.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 04 - Generalized.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 04 - Generalized.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 04 - Generalized.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 04 - Generalized.fs.gold new file mode 100644 index 0000000000..bc7263e423 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 04 - Generalized.fs.gold @@ -0,0 +1,3 @@ +module Module + +let f{caret} (a: 'a) (b: 'b) = a, b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 04 - Tuple.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 04 - Tuple.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 04 - Tuple.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/Function 04 - Tuple.fs.gold diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/availability/Class - member - 01.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/availability/Class - member - 01.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/availability/Class - member - 01.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/availability/Class - member - 01.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/availability/Let bindings - Expr 01.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/availability/Let bindings - Expr 01.fs new file mode 100644 index 0000000000..933261c8df --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/availability/Let bindings - Expr 01.fs @@ -0,0 +1,12 @@ +do + {off} + + let x{off} = 1 + let{off} x{off}: int = 1 + + let{off} (x{off}: int): int = 1 + let{off} ((x{off}: int)): int = 1 + let{off} ((x{off}: string)): int = 1 + + let{on} foo{on} {off}x {off}= {off}() + (){off} diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/availability/Let bindings - Module 01.fs b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/availability/Let bindings - Module 01.fs new file mode 100644 index 0000000000..c72ff01386 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyArgumentTypes/availability/Let bindings - Module 01.fs @@ -0,0 +1,12 @@ +module Module + +{off} + +let x1{off} = 1 +let{off} x2{off}: int = 1 + +let{off} (x3{off}: int): int = 1 +let{off} ((x4{off}: int)): int = 1 + +{off}[]{off} +let{on} foo{on} {off}x {off}= {off}() diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Caret on let binding.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Caret on let binding.fs new file mode 100644 index 0000000000..eefd285429 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Caret on let binding.fs @@ -0,0 +1,3 @@ +module Module + +let{caret} f (a) b = sprintf "%s %d" a b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Caret on let binding.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Caret on let binding.fs.gold new file mode 100644 index 0000000000..08aa595032 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Caret on let binding.fs.gold @@ -0,0 +1,3 @@ +module Module + +let{caret} f (a) b: string = sprintf "%s %d" a b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Formatting - Add space.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Formatting - Add space.fs new file mode 100644 index 0000000000..f1dd374a3a --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Formatting - Add space.fs @@ -0,0 +1,3 @@ +module Module + +let f{caret} (a) b = sprintf "%s %d" a b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Formatting - Add space.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Formatting - Add space.fs.gold new file mode 100644 index 0000000000..4e521b3404 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Formatting - Add space.fs.gold @@ -0,0 +1,3 @@ +module Module + +let f{caret} (a) b : string = sprintf "%s %d" a b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Local 01.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Local 01.fs new file mode 100644 index 0000000000..3d40fcd434 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Local 01.fs @@ -0,0 +1,5 @@ +module Module + +do + let f{caret} (a: string) b = sprintf "%s %d" a b + () diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Local 01.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Local 01.fs.gold new file mode 100644 index 0000000000..3b87ce6790 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Local 01.fs.gold @@ -0,0 +1,5 @@ +module Module + +do + let f{caret} (a: string) b: string = sprintf "%s %d" a b + () diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 01.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 01.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 01.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 01.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 01.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 01.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 01.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 01.fs.gold diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 02.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 02.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 02.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 02.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 02.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 02.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 02.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 02.fs.gold diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 03 - Specified function param.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 03 - Specified function param.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 03 - Specified function param.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 03 - Specified function param.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 03 - Specified function param.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 03 - Specified function param.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 03 - Specified function param.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 03 - Specified function param.fs.gold diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 04 - Function params.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 04 - Function params.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 04 - Function params.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 04 - Function params.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 04 - Function params.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 04 - Function params.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 04 - Function params.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 04 - Function params.fs.gold diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 05 - Nested.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 05 - Nested.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 05 - Nested.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 05 - Nested.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 05 - Nested.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 05 - Nested.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return - Function 05 - Nested.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return - Function 05 - Nested.fs.gold diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return 01.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return 01.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return 01.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return 01.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return 01.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return 01.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Return 01.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function - Return 01.fs.gold diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 01 - Unit to unit.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 01 - Unit to unit.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 01 - Unit to unit.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 01 - Unit to unit.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 01 - Unit to unit.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 01 - Unit to unit.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 01 - Unit to unit.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 01 - Unit to unit.fs.gold diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 02 - Recursive.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 02 - Recursive.fs new file mode 100644 index 0000000000..c8e44439d8 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 02 - Recursive.fs @@ -0,0 +1,3 @@ +module Module + +let rec f{caret} a = a + "" diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 02 - Recursive.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 02 - Recursive.fs.gold new file mode 100644 index 0000000000..a036736b83 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 02 - Recursive.fs.gold @@ -0,0 +1,3 @@ +module Module + +let rec f{caret} a: string = a + "" diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 03 - Generic types.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 03 - Generic types.fs new file mode 100644 index 0000000000..66e30f9d98 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 03 - Generic types.fs @@ -0,0 +1,4 @@ +module Module + +let f{caret} a = + String.concat ", " a diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 03 - Generic types.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 03 - Generic types.fs.gold similarity index 51% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 03 - Generic types.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 03 - Generic types.fs.gold index 5f21dc3452..cf3541cf48 100644 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 03 - Generic types.fs.gold +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 03 - Generic types.fs.gold @@ -1,4 +1,4 @@ module Module -let f{caret} (a: seq): string = +let f{caret} a: string = String.concat ", " a diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 04 - Generalized.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 04 - Generalized.fs new file mode 100644 index 0000000000..1918e63342 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 04 - Generalized.fs @@ -0,0 +1,3 @@ +module Module + +let f{caret} a b = a, b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 04 - Generalized.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 04 - Generalized.fs.gold new file mode 100644 index 0000000000..3035b55646 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 04 - Generalized.fs.gold @@ -0,0 +1,3 @@ +module Module + +let f{caret} a b: 'a * 'b = a, b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 04 - Tuple.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 04 - Tuple.fs.gold new file mode 100644 index 0000000000..d065dccc0c --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Function 04 - Tuple.fs.gold @@ -0,0 +1,4 @@ +module Module + +let f{caret} (a: string * seq): string = + a ||> String.concat diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Value 01.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Value 01.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Value 01.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Value 01.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Value 01.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Value 01.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Value 01.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Value 01.fs.gold diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Value 02 - Function.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Value 02 - Function.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Value 02 - Function.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Value 02 - Function.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Value 02 - Function.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Value 02 - Function.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Value 02 - Function.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Value 02 - Function.fs.gold diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Value 03 - Function, tuple.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Value 03 - Function, tuple.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Value 03 - Function, tuple.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Value 03 - Function, tuple.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Value 03 - Function, tuple.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Value 03 - Function, tuple.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/Value 03 - Function, tuple.fs.gold rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/Value 03 - Function, tuple.fs.gold diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/availability/Class - member - 01.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/availability/Class - member - 01.fs new file mode 100644 index 0000000000..017f098879 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/availability/Class - member - 01.fs @@ -0,0 +1,5 @@ +module Module + +type NumberPrinter(num) = + // Class members aren't supported yet + member x.print{off}() = sprintf{off} "%d" num \ No newline at end of file diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/availability/Let bindings - Expr 01.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/availability/Let bindings - Expr 01.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/availability/Let bindings - Expr 01.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/availability/Let bindings - Expr 01.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/availability/Let bindings - Module 01.fs b/ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/availability/Let bindings - Module 01.fs similarity index 100% rename from ReSharper.FSharp/test/data/features/intentions/specifyTypes/availability/Let bindings - Module 01.fs rename to ReSharper.FSharp/test/data/features/intentions/specifyReturnTypes/availability/Let bindings - Module 01.fs diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Caret on let binding.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Caret on let binding.fs.gold deleted file mode 100644 index 0b4f24f287..0000000000 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Caret on let binding.fs.gold +++ /dev/null @@ -1,3 +0,0 @@ -module Module - -let{caret} f (a: string) (b: int): string = sprintf "%s %d" a b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Formatting - Add space.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Formatting - Add space.fs.gold deleted file mode 100644 index 0e5888aa4d..0000000000 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Formatting - Add space.fs.gold +++ /dev/null @@ -1,3 +0,0 @@ -module Module - -let f{caret} (a : string) (b : int) : string = sprintf "%s %d" a b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Local 01.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Local 01.fs.gold deleted file mode 100644 index eaea46e40a..0000000000 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Local 01.fs.gold +++ /dev/null @@ -1,5 +0,0 @@ -module Module - -do - let f{caret} (a: string) (b: int): string = sprintf "%s %d" a b - () diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 01 - Tuple.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 01 - Tuple.fs.gold deleted file mode 100644 index ceed55f944..0000000000 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 01 - Tuple.fs.gold +++ /dev/null @@ -1,4 +0,0 @@ -module Module - -let f{caret} ((a, b): int * int): int = - a + b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 02 - Wild.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 02 - Wild.fs.gold deleted file mode 100644 index 679874cbca..0000000000 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 02 - Wild.fs.gold +++ /dev/null @@ -1,4 +0,0 @@ -module Module - -let f{caret} (_: 'a): unit = - () diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 03 - List.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 03 - List.fs.gold deleted file mode 100644 index 72e352e6a3..0000000000 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 03 - List.fs.gold +++ /dev/null @@ -1,4 +0,0 @@ -module Module - -let f{caret} ([]: 'a list): unit = - () diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 04 - As.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 04 - As.fs.gold deleted file mode 100644 index cc0bb8cb7d..0000000000 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 04 - As.fs.gold +++ /dev/null @@ -1,4 +0,0 @@ -module Module - -let f{caret} (a as b: int): int = - a + b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 05 - Param owner.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 05 - Param owner.fs.gold deleted file mode 100644 index 2b9ddc174a..0000000000 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters - Pattern 05 - Param owner.fs.gold +++ /dev/null @@ -1,4 +0,0 @@ -module Module - -let f{caret} (Some 123: int option): unit = - () diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 01 - Parens.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 01 - Parens.fs.gold deleted file mode 100644 index ccc06948d1..0000000000 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 01 - Parens.fs.gold +++ /dev/null @@ -1,3 +0,0 @@ -module Module - -let f{caret} (a: string) (b: int): string = sprintf "%s %d" a b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 02 - Wrong types.fs b/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 02 - Wrong types.fs deleted file mode 100644 index 8d503c316d..0000000000 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 02 - Wrong types.fs +++ /dev/null @@ -1,3 +0,0 @@ -module Module - -let f{caret} (a: int) (b: string) = sprintf "%s %d" a b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 02 - Wrong types.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 02 - Wrong types.fs.gold deleted file mode 100644 index 0d8f515bb7..0000000000 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function - Parameters 02 - Wrong types.fs.gold +++ /dev/null @@ -1,3 +0,0 @@ -module Module - -let f{caret} (a: int) (b: string): string = sprintf "%s %d" a b diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 02 - Recursive.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 02 - Recursive.fs.gold deleted file mode 100644 index 513328c5dc..0000000000 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 02 - Recursive.fs.gold +++ /dev/null @@ -1,3 +0,0 @@ -module Module - -let rec f{caret} (a: string): string = a + "" diff --git a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 04 - Generalized.fs.gold b/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 04 - Generalized.fs.gold deleted file mode 100644 index 844fe98bd8..0000000000 --- a/ReSharper.FSharp/test/data/features/intentions/specifyTypes/Function 04 - Generalized.fs.gold +++ /dev/null @@ -1,3 +0,0 @@ -module Module - -let f{caret} (a: 'a) (b: 'b): 'a * 'b = a, b diff --git a/ReSharper.FSharp/test/src/FSharp.Tests/Intentions/SpecifyTypesTest.fs b/ReSharper.FSharp/test/src/FSharp.Tests/Intentions/SpecifyTypesTest.fs index e851137024..3086218842 100644 --- a/ReSharper.FSharp/test/src/FSharp.Tests/Intentions/SpecifyTypesTest.fs +++ b/ReSharper.FSharp/test/src/FSharp.Tests/Intentions/SpecifyTypesTest.fs @@ -8,30 +8,18 @@ open JetBrains.ReSharper.TestFramework open NUnit.Framework [] -type SpecifyTypesActionTest() = - inherit FSharpContextActionExecuteTestBase() +type FunctionReturnTypeAnnotationActionTest() = + inherit FSharpContextActionExecuteTestBase() - override x.ExtraPath = "specifyTypes" - - [] member x.``Function - Parameters 01 - Parens``() = x.DoNamedTest() - [] member x.``Function - Parameters 02 - Wrong types``() = x.DoNamedTest() - [] member x.``Function - Parameters 03 - Tuple``() = x.DoNamedTest() - [] member x.``Function - Parameters 04 - Nested tuple``() = x.DoNamedTest() + override x.ExtraPath = "specifyReturnTypes" [] member x.``Function 01 - Unit to unit``() = x.DoNamedTest() [] member x.``Function 02 - Recursive``() = x.DoNamedTest() [] member x.``Function 03 - Generic types``() = x.DoNamedTest() [] member x.``Function 04 - Generalized``() = x.DoNamedTest() - [] member x.``Function 05 - Specified return``() = x.DoNamedTest() [] member x.``Function - Local 01``() = x.DoNamedTest() - [] member x.``Function - Parameters - Pattern 01 - Tuple``() = x.DoNamedTest() - [] member x.``Function - Parameters - Pattern 02 - Wild``() = x.DoNamedTest() - [] member x.``Function - Parameters - Pattern 03 - List``() = x.DoNamedTest() - [] member x.``Function - Parameters - Pattern 04 - As``() = x.DoNamedTest() - [] member x.``Function - Parameters - Pattern 05 - Param owner``() = x.DoNamedTest() - [] member x.``Function - Return - Function 01``() = x.DoNamedTest() [] member x.``Function - Return - Function 02``() = x.DoNamedTest() [] member x.``Function - Return - Function 03 - Specified function param``() = x.DoNamedTest() @@ -50,10 +38,50 @@ type SpecifyTypesActionTest() = [] -type SpecifyTypesActionAvailabilityTest() = - inherit FSharpContextActionAvailabilityTestBase() +type FunctionReturnTypeAnnotationActionAvailabilityTest() = + inherit FSharpContextActionAvailabilityTestBase() + + override x.ExtraPath = "specifyReturnTypes" + + [] member x.``Let bindings - Expr 01``() = x.DoNamedTest() + [] member x.``Let bindings - Module 01``() = x.DoNamedTest() + + [] member x.``Class - member - 01``() = x.DoNamedTest() + +[] +type FunctionArgumentTypesAnnotationActionTest() = + inherit FSharpContextActionExecuteTestBase() + + override x.ExtraPath = "specifyArgumentTypes" + + [] member x.``Function - Parameters 01 - Parens``() = x.DoNamedTest() + [] member x.``Function - Parameters 03 - Tuple``() = x.DoNamedTest() + [] member x.``Function - Parameters 04 - Nested tuple``() = x.DoNamedTest() + + [] member x.``Function 01 - Recursive``() = x.DoNamedTest() + [] member x.``Function 02 - Generic types``() = x.DoNamedTest() + [] member x.``Function 03 - Specified return``() = x.DoNamedTest() + [] member x.``Function 04 - Generalized``() = x.DoNamedTest() + + [] member x.``Function - Local 01``() = x.DoNamedTest() + + [] member x.``Function - Parameters - Pattern 01 - Tuple``() = x.DoNamedTest() + [] member x.``Function - Parameters - Pattern 02 - Wild``() = x.DoNamedTest() + [] member x.``Function - Parameters - Pattern 03 - List``() = x.DoNamedTest() + [] member x.``Function - Parameters - Pattern 04 - As``() = x.DoNamedTest() + [] member x.``Function - Parameters - Pattern 05 - Param owner``() = x.DoNamedTest() + + [, "SpaceBeforeColon", "true")>] + [] member x.``Function - Formatting - Add space``() = x.DoNamedTest() + + [] member x.``Function - Caret on let binding``() = x.DoNamedTest() + + +[] +type FunctionArgumentTypesAnnotationActionAvailabilityTest() = + inherit FSharpContextActionAvailabilityTestBase() - override x.ExtraPath = "specifyTypes" + override x.ExtraPath = "specifyArgumentTypes" [] member x.``Let bindings - Expr 01``() = x.DoNamedTest() [] member x.``Let bindings - Module 01``() = x.DoNamedTest()