diff --git a/src/fsharp/ConstraintSolver.fs b/src/fsharp/ConstraintSolver.fs
index c34e18d20cd..cf9ec954674 100644
--- a/src/fsharp/ConstraintSolver.fs
+++ b/src/fsharp/ConstraintSolver.fs
@@ -2010,10 +2010,22 @@ and ReportNoCandidatesError (csenv:ConstraintSolverEnv) (nUnnamedCallerArgs,nNam
// One method, incorrect name/arg assignment
| _,_,_,_,([],[cmeth]) ->
- let msgNum,msgText = FSComp.SR.csRequiredSignatureIs(NicePrint.stringOfMethInfo amap m denv cmeth.Method)
+ let minfo = cmeth.Method
+ let msgNum,msgText = FSComp.SR.csRequiredSignatureIs(NicePrint.stringOfMethInfo amap m denv minfo)
let msgNum,msgText,msgRange =
match cmeth.UnassignedNamedArgs with
- | CallerNamedArg(id,_) :: _ -> (msgNum,FSComp.SR.csMemberHasNoArgumentOrReturnProperty(methodName, id.idText, msgText),id.idRange)
+ | CallerNamedArg(id,_) :: _ ->
+ if minfo.IsConstructor then
+ let typ = minfo.DeclaringEntityRef
+
+ let predictions =
+ typ.AllInstanceFieldsAsList
+ |> List.map (fun p -> p.Name.Replace("@",""))
+ |> ErrorResolutionHints.FilterPredictions id.idText
+
+ msgNum,FSComp.SR.csCtorHasNoArgumentOrReturnProperty(methodName, id.idText, msgText, ErrorResolutionHints.FormatPredictions predictions),id.idRange
+ else
+ msgNum,FSComp.SR.csMemberHasNoArgumentOrReturnProperty(methodName, id.idText, msgText),id.idRange
| [] -> (msgNum,msgText,m)
ErrorD (Error ((msgNum,msgText),msgRange))
diff --git a/src/fsharp/FSComp.txt b/src/fsharp/FSComp.txt
index 309f121046d..ed94c55145f 100644
--- a/src/fsharp/FSComp.txt
+++ b/src/fsharp/FSComp.txt
@@ -334,6 +334,7 @@ csGenericConstructRequiresPublicDefaultConstructor,"A generic construct requires
492,csMethodIsNotAStaticMethod,"%s is not a static method"
493,csMethodIsNotAnInstanceMethod,"%s is not an instance method"
csMemberHasNoArgumentOrReturnProperty,"The member or object constructor '%s' has no argument or settable return property '%s'. %s."
+csCtorHasNoArgumentOrReturnProperty,"The object constructor '%s' has no argument or settable return property '%s'. %s. %s"
495,csRequiredSignatureIs,"The required signature is %s"
496,csMemberSignatureMismatch,"The member or object constructor '%s' requires %d argument(s). The required signature is '%s'."
497,csMemberSignatureMismatch2,"The member or object constructor '%s' requires %d additional argument(s). The required signature is '%s'."
diff --git a/tests/fsharpqa/Source/Warnings/SuggestFieldsInCtor.fs b/tests/fsharpqa/Source/Warnings/SuggestFieldsInCtor.fs
new file mode 100644
index 00000000000..7d7e9860842
--- /dev/null
+++ b/tests/fsharpqa/Source/Warnings/SuggestFieldsInCtor.fs
@@ -0,0 +1,13 @@
+// #Warnings
+//The object constructor 'MyClass' has no argument or settable return property 'Property'.
+//Maybe you want one of the following:
+//MyProperty
+
+type MyClass() =
+ member val MyProperty = "" with get, set
+ member val MyProperty2 = "" with get, set
+ member val ABigProperty = "" with get, set
+
+let c = MyClass(Property = "")
+
+exit 0
\ No newline at end of file
diff --git a/tests/fsharpqa/Source/Warnings/env.lst b/tests/fsharpqa/Source/Warnings/env.lst
index da119ba25d2..375d231c803 100644
--- a/tests/fsharpqa/Source/Warnings/env.lst
+++ b/tests/fsharpqa/Source/Warnings/env.lst
@@ -7,6 +7,7 @@
SOURCE=ElseBranchHasWrongType.fs # ElseBranchHasWrongType.fs
SOURCE=MissingExpressionAfterLet.fs # MissingExpressionAfterLet.fs
SOURCE=AssignmentOnImmutable.fs # AssignmentOnImmutable.fs
+ SOURCE=SuggestFieldsInCtor.fs # SuggestFieldsInCtor.fs
SOURCE=RefCellInsteadOfNot.fs # RefCellInsteadOfNot.fs
SOURCE=RefCellInsteadOfNot2.fs # RefCellInsteadOfNot2.fs
SOURCE=UpcastInsteadOfDowncast.fs # UpcastInsteadOfDowncast.fs