diff --git a/ReSharper.FSharp/src/FSharp.Psi.Daemon/src/Stages/FcsErrorsStageProcessBase.fs b/ReSharper.FSharp/src/FSharp.Psi.Daemon/src/Stages/FcsErrorsStageProcessBase.fs
index a73cea2a62..e26e2e744e 100644
--- a/ReSharper.FSharp/src/FSharp.Psi.Daemon/src/Stages/FcsErrorsStageProcessBase.fs
+++ b/ReSharper.FSharp/src/FSharp.Psi.Daemon/src/Stages/FcsErrorsStageProcessBase.fs
@@ -319,6 +319,8 @@ type FcsErrorsStageProcessBase(fsFile, daemonProcess) =
| ValueNotContainedMutability ->
if error.Message.EndsWith("The mutability attributes differ") then
createHighlightingFromNodeWithMessage ValueNotContainedMutabilityAttributesDifferError range error
+ elif error.Message.EndsWith("The literal constant values and/or attributes differ") then
+ createHighlightingFromNodeWithMessage LiteralConstantValuesDifferInSignatureError range error
else
createGenericHighlighting error range
diff --git a/ReSharper.FSharp/src/FSharp.Psi.Intentions/FSharp.Psi.Intentions.fsproj b/ReSharper.FSharp/src/FSharp.Psi.Intentions/FSharp.Psi.Intentions.fsproj
index 5c9e7bc265..9c74e3090b 100644
--- a/ReSharper.FSharp/src/FSharp.Psi.Intentions/FSharp.Psi.Intentions.fsproj
+++ b/ReSharper.FSharp/src/FSharp.Psi.Intentions/FSharp.Psi.Intentions.fsproj
@@ -101,6 +101,7 @@
+
QUICKFIX
JetBrains.ReSharper.Plugins.FSharp.Psi.Features.Daemon.QuickFixes
diff --git a/ReSharper.FSharp/src/FSharp.Psi.Intentions/src/QuickFixes/UpdateLiteralConstantInSignatureFix.fs b/ReSharper.FSharp/src/FSharp.Psi.Intentions/src/QuickFixes/UpdateLiteralConstantInSignatureFix.fs
new file mode 100644
index 0000000000..afb3b7b814
--- /dev/null
+++ b/ReSharper.FSharp/src/FSharp.Psi.Intentions/src/QuickFixes/UpdateLiteralConstantInSignatureFix.fs
@@ -0,0 +1,142 @@
+namespace JetBrains.ReSharper.Plugins.FSharp.Psi.Features.Daemon.QuickFixes
+
+open FSharp.Compiler.Symbols
+open JetBrains.ReSharper.Plugins.FSharp.Psi
+open JetBrains.ReSharper.Plugins.FSharp.Psi.Impl
+open JetBrains.ReSharper.Plugins.FSharp.Psi.Tree
+open JetBrains.ReSharper.Plugins.FSharp.Psi.Features.Daemon.Highlightings
+open JetBrains.ReSharper.Plugins.FSharp.Psi.Features.Util
+open JetBrains.ReSharper.Psi.ExtensionsAPI
+open JetBrains.ReSharper.Psi.Tree
+open JetBrains.ReSharper.Resources.Shell
+
+type UpdateLiteralConstantInSignatureFix(error: LiteralConstantValuesDifferInSignatureError) =
+ inherit FSharpQuickFixBase()
+ let errorRefPat = error.Pat.As()
+ let implNeedsLiteralAttr =
+ errorRefPat.Attributes
+ |> Seq.exists (fun attr ->
+ let referenceName = attr.ReferenceName
+ isNotNull referenceName && referenceName.ShortName = "Literal")
+ |> not
+
+ let tryFindDeclarationFromSignature () =
+ let containingTypeDecl = errorRefPat.GetContainingTypeDeclaration()
+ let decls = containingTypeDecl.DeclaredElement.GetDeclarations()
+ decls |> Seq.tryFind (fun d -> d.GetSourceFile().IsFSharpSignatureFile)
+
+ let tryFindSigBindingSignature sigMembers =
+ let p = errorRefPat.Binding.HeadPattern.As()
+ if Seq.length p.Declarations = 1 then
+ let implDec = Seq.head p.Declarations
+ let declName = implDec.DeclaredName
+ sigMembers
+ |> Seq.tryPick(fun m ->
+ let bindingSignature = m.As()
+ match bindingSignature with
+ | null -> None
+ | _ ->
+ match bindingSignature.HeadPattern with
+ | :? IReferencePat as sigRefPat when
+ declName = sigRefPat.DeclaredName -> Some bindingSignature
+ | _ -> None
+ )
+ else
+ None
+
+ let mutable sigRefPat = null
+
+ let mutable isUoM = false
+
+ let rec isImplExprValidInSig (implExpression: IFSharpExpression) =
+
+ let opName = $"{nameof UpdateLiteralConstantInSignatureFix}.IsAvailable"
+
+ let rec collectUofMRefs (uOfM: IUnitOfMeasure) =
+ seq {
+ match uOfM with
+ | :? INamedMeasure as named ->
+ yield named.TypeUsage.As().ReferenceName.Reference
+ | :? IProductMeasure as product ->
+ yield! collectUofMRefs product.Measure1
+ yield! collectUofMRefs product.Measure2
+ | :? ISeqMeasure as seqM ->
+ for m in seqM.Measures do
+ yield! collectUofMRefs m
+ | :? IDivideMeasure as divide ->
+ yield! collectUofMRefs divide.Measure1
+ yield! collectUofMRefs divide.Measure2
+ | :? IPowerMeasure as power ->
+ yield! collectUofMRefs power.Measure
+ | :? IParenMeasure as paren ->
+ yield! collectUofMRefs paren.Measure
+ | _ -> ()
+ }
+
+ let isValidUofMInSig (uOfM: IUnitOfMeasureClause) =
+ if isNull uOfM.Measure then false else
+
+ let refs = collectUofMRefs uOfM.Measure
+ refs |> Seq.forall (
+ fun r -> r.ResolveWithFcs(
+ sigRefPat, opName, false, true)
+ |> Option.isSome)
+
+
+ match implExpression.IgnoreInnerParens() with
+ | :? IReferenceExpr as refExpr ->
+ refExpr.Reference.ResolveWithFcs(
+ sigRefPat, opName, true, true)
+ |> Option.isSome
+ | :? IBinaryAppExpr as binExpr ->
+ isImplExprValidInSig binExpr.LeftArgument && isImplExprValidInSig binExpr.RightArgument
+ | :? ILiteralExpr as litExpr ->
+ if isNull litExpr.UnitOfMeasure then true else
+ isUoM <- true
+ isValidUofMInSig litExpr.UnitOfMeasure
+ | _ -> false
+
+ override x.Text =
+ if implNeedsLiteralAttr then $"Add Literal attribute to constant {errorRefPat.Identifier.Name}"
+ else $"Update literal constant {errorRefPat.Identifier.Name} in signature"
+
+ override x.IsAvailable _ =
+ if isNull errorRefPat then false else
+
+ match tryFindDeclarationFromSignature () with
+ | Some sigDecl ->
+ let sigMembers = sigDecl.As().Members
+ let sigBindingSignature = tryFindSigBindingSignature sigMembers
+ match sigBindingSignature with
+ | None -> false
+ | Some s ->
+ match s.HeadPattern with
+ | :? IReferencePat as sRefPat ->
+ sigRefPat <- sRefPat
+ isImplExprValidInSig errorRefPat.Binding.Expression
+ | _ -> false
+ | _ -> false
+
+ override x.ExecutePsiTransaction _ =
+ use writeCookie = WriteLockCookie.Create(sigRefPat.IsPhysical())
+ use disableFormatter = new DisableCodeFormatter()
+
+ let sigSymbolUse = sigRefPat.GetFcsSymbolUse()
+ let implSymbolUse = errorRefPat.GetFcsSymbolUse()
+ let implMfv = implSymbolUse.Symbol :?> FSharpMemberOrFunctionOrValue
+ let sigMfv = sigSymbolUse.Symbol :?> FSharpMemberOrFunctionOrValue
+ // currenty FSharpType.Format is broken for UoM https://github.com/dotnet/fsharp/issues/15843
+ if implMfv.FullType.BasicQualifiedName <> sigMfv.FullType.BasicQualifiedName && not isUoM then
+ let returnTypeString = implMfv.ReturnParameter.Type.Format(sigSymbolUse.DisplayContext)
+ let factory = sigRefPat.CreateElementFactory()
+ let typeUsage = factory.CreateTypeUsage(returnTypeString, TypeUsageContext.TopLevel)
+ sigRefPat.Binding.ReturnTypeInfo.SetReturnType(typeUsage) |> ignore
+
+ sigRefPat.Binding.SetExpression(errorRefPat.Binding.Expression.Copy()) |> ignore
+
+ // the FCS error can also mean that the impl side lacks the literal attribute
+ if implNeedsLiteralAttr then
+ FSharpAttributesUtil.addAttributeListToLetBinding true (errorRefPat.Binding.As())
+ let attrList = errorRefPat.Binding.AttributeLists[0]
+ let attribute = errorRefPat.CreateElementFactory().CreateAttribute("Literal")
+ FSharpAttributesUtil.addAttribute attrList attribute |> ignore
diff --git a/ReSharper.FSharp/src/FSharp.Psi.Services/src/Daemon/Highlightings/FcsErrors.xml b/ReSharper.FSharp/src/FSharp.Psi.Services/src/Daemon/Highlightings/FcsErrors.xml
index 891563e5b0..576cc84cb4 100644
--- a/ReSharper.FSharp/src/FSharp.Psi.Services/src/Daemon/Highlightings/FcsErrors.xml
+++ b/ReSharper.FSharp/src/FSharp.Psi.Services/src/Daemon/Highlightings/FcsErrors.xml
@@ -218,6 +218,17 @@
UpdateMutabilityInSignatureFix
+
+
+
+ pat.GetNavigationRange()
+
+ fcsMessage
+
+
+ UpdateLiteralConstantInSignatureFix
+
+
diff --git a/ReSharper.FSharp/src/FSharp.Psi/src/Resolve/FSharpSymbolReference.cs b/ReSharper.FSharp/src/FSharp.Psi/src/Resolve/FSharpSymbolReference.cs
index 3c0b8edd5e..36825a2b8c 100644
--- a/ReSharper.FSharp/src/FSharp.Psi/src/Resolve/FSharpSymbolReference.cs
+++ b/ReSharper.FSharp/src/FSharp.Psi/src/Resolve/FSharpSymbolReference.cs
@@ -128,6 +128,15 @@ public void SetQualifier([NotNull] IClrDeclaredElement declaredElement)
/// Does not reuse existing file resolve results, does complete lookup by name.
public FSharpOption ResolveWithFcs([NotNull] string opName, bool resolveExpr, bool qualified)
+ {
+ var context = GetElement().FSharpIdentifier;
+
+ return ResolveWithFcs(context, opName, resolveExpr, qualified);
+ }
+
+ /// Does not reuse existing file resolve results, does complete lookup by name.
+ public FSharpOption ResolveWithFcs([NotNull] IFSharpTreeNode context, [NotNull] string opName,
+ bool resolveExpr, bool qualified)
{
var referenceOwner = GetElement();
var checkerService = referenceOwner.CheckerService;
@@ -136,7 +145,7 @@ public FSharpOption ResolveWithFcs([NotNull] string opName, boo
? qualifiableReferenceOwner.Names
: new[] {GetName()};
- return checkerService.ResolveNameAtLocation(referenceOwner.FSharpIdentifier, names, resolveExpr, opName);
+ return checkerService.ResolveNameAtLocation(context, names, resolveExpr, opName);
}
}
}
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 01.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 01.fs
new file mode 100644
index 0000000000..4cc7a08125
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 01.fs
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 01.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 01.fs.gold
new file mode 100644
index 0000000000..4cc7a08125
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 01.fs.gold
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 01.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 01.fsi
new file mode 100644
index 0000000000..925906eea0
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 01.fsi
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 01.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 01.fsi.gold
new file mode 100644
index 0000000000..7d6e565b87
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 01.fsi.gold
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 02.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 02.fs
new file mode 100644
index 0000000000..b300cee3e2
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 02.fs
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 02.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 02.fs.gold
new file mode 100644
index 0000000000..b300cee3e2
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 02.fs.gold
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 02.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 02.fsi
new file mode 100644
index 0000000000..925906eea0
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 02.fsi
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 02.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 02.fsi.gold
new file mode 100644
index 0000000000..7d6e565b87
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 02.fsi.gold
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 03.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 03.fs
new file mode 100644
index 0000000000..024ca6032d
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 03.fs
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 03.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 03.fs.gold
new file mode 100644
index 0000000000..024ca6032d
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 03.fs.gold
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 03.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 03.fsi
new file mode 100644
index 0000000000..925906eea0
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 03.fsi
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 03.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 03.fsi.gold
new file mode 100644
index 0000000000..7d6e565b87
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 03.fsi.gold
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 04.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 04.fs
new file mode 100644
index 0000000000..0757f35268
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 04.fs
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42< / m>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 04.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 04.fs.gold
new file mode 100644
index 0000000000..0757f35268
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 04.fs.gold
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42< / m>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 04.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 04.fsi
new file mode 100644
index 0000000000..5b1912575c
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 04.fsi
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int = 23< / kg>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 04.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 04.fsi.gold
new file mode 100644
index 0000000000..48923b60b6
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 04.fsi.gold
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int = 23< / kg>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 05.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 05.fs
new file mode 100644
index 0000000000..0de914adc7
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 05.fs
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 05.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 05.fs.gold
new file mode 100644
index 0000000000..0de914adc7
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 05.fs.gold
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 05.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 05.fsi
new file mode 100644
index 0000000000..925906eea0
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 05.fsi
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 05.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 05.fsi.gold
new file mode 100644
index 0000000000..925906eea0
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 05.fsi.gold
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 06.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 06.fs
new file mode 100644
index 0000000000..4b31e39d6a
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 06.fs
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42<(m * kg)>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 06.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 06.fs.gold
new file mode 100644
index 0000000000..4b31e39d6a
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 06.fs.gold
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42<(m * kg)>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 06.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 06.fsi
new file mode 100644
index 0000000000..925906eea0
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 06.fsi
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 06.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 06.fsi.gold
new file mode 100644
index 0000000000..7d6e565b87
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 06.fsi.gold
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 07.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 07.fs
new file mode 100644
index 0000000000..4352e47fe0
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 07.fs
@@ -0,0 +1,8 @@
+module A
+
+[] type m
+[] type kg
+[] type s
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 07.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 07.fs.gold
new file mode 100644
index 0000000000..4352e47fe0
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 07.fs.gold
@@ -0,0 +1,8 @@
+module A
+
+[] type m
+[] type kg
+[] type s
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 07.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 07.fsi
new file mode 100644
index 0000000000..5095070eea
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 07.fsi
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 07.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 07.fsi.gold
new file mode 100644
index 0000000000..5095070eea
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown UoM - 07.fsi.gold
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown type - 01.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown type - 01.fs
new file mode 100644
index 0000000000..f19f765639
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown type - 01.fs
@@ -0,0 +1,8 @@
+module A
+
+type E =
+ | A = 1
+ | B = 2
+
+[]
+let c{caret} = E.A
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown type - 01.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown type - 01.fs.gold
new file mode 100644
index 0000000000..f19f765639
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown type - 01.fs.gold
@@ -0,0 +1,8 @@
+module A
+
+type E =
+ | A = 1
+ | B = 2
+
+[]
+let c{caret} = E.A
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown type - 01.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown type - 01.fsi
new file mode 100644
index 0000000000..b2a0da6291
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown type - 01.fsi
@@ -0,0 +1,4 @@
+module A
+
+[]
+val c : int = 42 // type of impl not known here
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown type - 01.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown type - 01.fsi.gold
new file mode 100644
index 0000000000..4fcdb74c19
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update for unknown type - 01.fsi.gold
@@ -0,0 +1,4 @@
+module A
+
+[]
+val c : int = 42 // type of impl not known here
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 01.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 01.fs
new file mode 100644
index 0000000000..e49126ec01
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 01.fs
@@ -0,0 +1,11 @@
+module A
+
+ module B =
+
+ []
+ let SymbolFromB = 42
+
+ open B
+
+ []
+ let a{caret} = SymbolFromB
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 01.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 01.fs.gold
new file mode 100644
index 0000000000..e49126ec01
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 01.fs.gold
@@ -0,0 +1,11 @@
+module A
+
+ module B =
+
+ []
+ let SymbolFromB = 42
+
+ open B
+
+ []
+ let a{caret} = SymbolFromB
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 01.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 01.fsi
new file mode 100644
index 0000000000..2f4c148a43
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 01.fsi
@@ -0,0 +1,11 @@
+module A
+
+ module B =
+
+ []
+ val SymbolFromB : int = 42
+
+ // B is not open here
+
+ []
+ val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 01.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 01.fsi.gold
new file mode 100644
index 0000000000..b168c47e53
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 01.fsi.gold
@@ -0,0 +1,11 @@
+module A
+
+ module B =
+
+ []
+ val SymbolFromB : int = 42
+
+ // B is not open here
+
+ []
+ val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 02.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 02.fs
new file mode 100644
index 0000000000..a92df8b9c0
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 02.fs
@@ -0,0 +1,11 @@
+module A
+
+ module B =
+
+ []
+ let SymbolFromB = 42
+
+ open B
+
+ []
+ let a{caret} = 3 + SymbolFromB
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 02.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 02.fs.gold
new file mode 100644
index 0000000000..a92df8b9c0
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 02.fs.gold
@@ -0,0 +1,11 @@
+module A
+
+ module B =
+
+ []
+ let SymbolFromB = 42
+
+ open B
+
+ []
+ let a{caret} = 3 + SymbolFromB
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 02.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 02.fsi
new file mode 100644
index 0000000000..2f4c148a43
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 02.fsi
@@ -0,0 +1,11 @@
+module A
+
+ module B =
+
+ []
+ val SymbolFromB : int = 42
+
+ // B is not open here
+
+ []
+ val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 02.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 02.fsi.gold
new file mode 100644
index 0000000000..b168c47e53
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown module symbol - 02.fsi.gold
@@ -0,0 +1,11 @@
+module A
+
+ module B =
+
+ []
+ val SymbolFromB : int = 42
+
+ // B is not open here
+
+ []
+ val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown other literal - 01.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown other literal - 01.fs
new file mode 100644
index 0000000000..5f9c5b7d27
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown other literal - 01.fs
@@ -0,0 +1,7 @@
+module A
+
+[]
+let MyLiteral = 42
+
+[]
+let a{caret} = MyLiteral
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown other literal - 01.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown other literal - 01.fs.gold
new file mode 100644
index 0000000000..5f9c5b7d27
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown other literal - 01.fs.gold
@@ -0,0 +1,7 @@
+module A
+
+[]
+let MyLiteral = 42
+
+[]
+let a{caret} = MyLiteral
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown other literal - 01.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown other literal - 01.fsi
new file mode 100644
index 0000000000..c417a136ef
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown other literal - 01.fsi
@@ -0,0 +1,4 @@
+module A
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown other literal - 01.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown other literal - 01.fsi.gold
new file mode 100644
index 0000000000..c417a136ef
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/No update with unknown other literal - 01.fsi.gold
@@ -0,0 +1,4 @@
+module A
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 01.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 01.fs
new file mode 100644
index 0000000000..5d18ac1f22
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 01.fs
@@ -0,0 +1,4 @@
+module A
+
+[]
+let c{caret} : float = 23.3
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 01.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 01.fs.gold
new file mode 100644
index 0000000000..5d18ac1f22
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 01.fs.gold
@@ -0,0 +1,4 @@
+module A
+
+[]
+let c{caret} : float = 23.3
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 01.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 01.fsi
new file mode 100644
index 0000000000..856555daac
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 01.fsi
@@ -0,0 +1,4 @@
+module A
+
+[]
+val c : float = 7.2
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 01.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 01.fsi.gold
new file mode 100644
index 0000000000..34931d7d87
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 01.fsi.gold
@@ -0,0 +1,4 @@
+module A
+
+[]
+val c : float = 23.3
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 02.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 02.fs
new file mode 100644
index 0000000000..21017af2fd
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 02.fs
@@ -0,0 +1,4 @@
+module A
+
+[]
+let (((c{caret}))) : float = 23.3
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 02.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 02.fs.gold
new file mode 100644
index 0000000000..21017af2fd
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 02.fs.gold
@@ -0,0 +1,4 @@
+module A
+
+[]
+let (((c{caret}))) : float = 23.3
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 02.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 02.fsi
new file mode 100644
index 0000000000..856555daac
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 02.fsi
@@ -0,0 +1,4 @@
+module A
+
+[]
+val c : float = 7.2
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 02.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 02.fsi.gold
new file mode 100644
index 0000000000..34931d7d87
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update Literal Constant - 02.fsi.gold
@@ -0,0 +1,4 @@
+module A
+
+[]
+val c : float = 23.3
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 01.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 01.fs
new file mode 100644
index 0000000000..dec297f641
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 01.fs
@@ -0,0 +1,6 @@
+module A
+
+[] type m
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 01.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 01.fs.gold
new file mode 100644
index 0000000000..dec297f641
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 01.fs.gold
@@ -0,0 +1,6 @@
+module A
+
+[] type m
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 01.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 01.fsi
new file mode 100644
index 0000000000..33c882b31d
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 01.fsi
@@ -0,0 +1,6 @@
+module A
+
+[] type m
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 01.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 01.fsi.gold
new file mode 100644
index 0000000000..80a0bb905c
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 01.fsi.gold
@@ -0,0 +1,6 @@
+module A
+
+[] type m
+
+[]
+val a : int = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 02.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 02.fs
new file mode 100644
index 0000000000..6f8f32c2d5
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 02.fs
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type s
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 02.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 02.fs.gold
new file mode 100644
index 0000000000..6f8f32c2d5
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 02.fs.gold
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type s
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 02.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 02.fsi
new file mode 100644
index 0000000000..9440449afb
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 02.fsi
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type s
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 02.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 02.fsi.gold
new file mode 100644
index 0000000000..9a154e7831
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 02.fsi.gold
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type s
+
+[]
+val a : int = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 03.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 03.fs
new file mode 100644
index 0000000000..024ca6032d
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 03.fs
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 03.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 03.fs.gold
new file mode 100644
index 0000000000..024ca6032d
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 03.fs.gold
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 03.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 03.fsi
new file mode 100644
index 0000000000..78414f6941
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 03.fsi
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 03.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 03.fsi.gold
new file mode 100644
index 0000000000..8132e0171b
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 03.fsi.gold
@@ -0,0 +1,7 @@
+module A
+
+[] type m
+[] type kg
+
+[]
+val a : int = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 04.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 04.fs
new file mode 100644
index 0000000000..61fdd2899b
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 04.fs
@@ -0,0 +1,6 @@
+module A
+
+[] type m
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 04.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 04.fs.gold
new file mode 100644
index 0000000000..61fdd2899b
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 04.fs.gold
@@ -0,0 +1,6 @@
+module A
+
+[] type m
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 04.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 04.fsi
new file mode 100644
index 0000000000..79516c68dc
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 04.fsi
@@ -0,0 +1,6 @@
+module A
+
+[] type m
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 04.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 04.fsi.gold
new file mode 100644
index 0000000000..cba4569a96
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 04.fsi.gold
@@ -0,0 +1,6 @@
+module A
+
+[] type m
+
+[]
+val a : int = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 05.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 05.fs
new file mode 100644
index 0000000000..904efbc311
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 05.fs
@@ -0,0 +1,4 @@
+module A
+
+[]
+let a{caret} = 42<1>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 05.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 05.fs.gold
new file mode 100644
index 0000000000..904efbc311
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 05.fs.gold
@@ -0,0 +1,4 @@
+module A
+
+[]
+let a{caret} = 42<1>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 05.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 05.fsi
new file mode 100644
index 0000000000..7e604b4510
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 05.fsi
@@ -0,0 +1,4 @@
+module A
+
+[]
+val a : int<1> = 23<1>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 05.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 05.fsi.gold
new file mode 100644
index 0000000000..8945e28963
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 05.fsi.gold
@@ -0,0 +1,4 @@
+module A
+
+[]
+val a : int<1> = 42<1>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 06.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 06.fs
new file mode 100644
index 0000000000..0f8534da6f
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 06.fs
@@ -0,0 +1,4 @@
+module A
+
+[]
+let a{caret} = 42<_>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 06.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 06.fs.gold
new file mode 100644
index 0000000000..0f8534da6f
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 06.fs.gold
@@ -0,0 +1,4 @@
+module A
+
+[]
+let a{caret} = 42<_>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 06.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 06.fsi
new file mode 100644
index 0000000000..1a0853902e
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 06.fsi
@@ -0,0 +1,4 @@
+module A
+
+[]
+val a : int<_> = 23<_>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 06.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 06.fsi.gold
new file mode 100644
index 0000000000..b8e3c1cf57
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 06.fsi.gold
@@ -0,0 +1,4 @@
+module A
+
+[]
+val a : int<_> = 42<_>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 07.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 07.fs
new file mode 100644
index 0000000000..ccf6e8f069
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 07.fs
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+let a{caret} = 42<( / kg)>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 07.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 07.fs.gold
new file mode 100644
index 0000000000..ccf6e8f069
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 07.fs.gold
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+let a{caret} = 42<( / kg)>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 07.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 07.fsi
new file mode 100644
index 0000000000..a9f7369b2a
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 07.fsi
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int<1/kg> = 23<( / kg)>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 07.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 07.fsi.gold
new file mode 100644
index 0000000000..7a51358960
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 07.fsi.gold
@@ -0,0 +1,6 @@
+module A
+
+[] type kg
+
+[]
+val a : int<1/kg> = 42<( / kg)>
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 08.fs b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 08.fs
new file mode 100644
index 0000000000..4352e47fe0
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 08.fs
@@ -0,0 +1,8 @@
+module A
+
+[] type m
+[] type kg
+[] type s
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 08.fs.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 08.fs.gold
new file mode 100644
index 0000000000..4352e47fe0
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 08.fs.gold
@@ -0,0 +1,8 @@
+module A
+
+[] type m
+[] type kg
+[] type s
+
+[]
+let a{caret} = 42
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 08.fsi b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 08.fsi
new file mode 100644
index 0000000000..286e0a9110
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 08.fsi
@@ -0,0 +1,8 @@
+module A
+
+[] type m
+[] type kg
+[] type s
+
+[]
+val a : int = 23
diff --git a/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 08.fsi.gold b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 08.fsi.gold
new file mode 100644
index 0000000000..8d5e5b63c3
--- /dev/null
+++ b/ReSharper.FSharp/test/data/features/quickFixes/updateLiteralConstantInSignatureFix/Update UoM Constant - 08.fsi.gold
@@ -0,0 +1,8 @@
+module A
+
+[] type m
+[] type kg
+[