Skip to content

Commit ff83b24

Browse files
committed
Update CompilerDiagnostics.fs
1 parent ad3d2b1 commit ff83b24

File tree

1 file changed

+38
-52
lines changed

1 file changed

+38
-52
lines changed

src/Compiler/Driver/CompilerDiagnostics.fs

Lines changed: 38 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ type Exception with
145145
| IntfImplInIntrinsicAugmentation m
146146
| OverrideInExtrinsicAugmentation m
147147
| IntfImplInExtrinsicAugmentation m
148-
| ValueRestriction(_, _, _, _, _, m)
148+
| ValueRestriction(_, _, _, _, m)
149149
| LetRecUnsound(_, _, m)
150150
| ObsoleteError(_, m)
151151
| ObsoleteWarning(_, m)
@@ -579,11 +579,8 @@ module OldStyleMessages =
579579
let DeprecatedE () = Message("Deprecated", "%s")
580580
let LibraryUseOnlyE () = Message("LibraryUseOnly", "")
581581
let MissingFieldsE () = Message("MissingFields", "%s")
582-
let ValueRestriction1E () = Message("ValueRestriction1", "%s%s%s")
583-
let ValueRestriction2E () = Message("ValueRestriction2", "%s%s%s")
584-
let ValueRestriction3E () = Message("ValueRestriction3", "%s")
585-
let ValueRestriction4E () = Message("ValueRestriction4", "%s%s%s")
586-
let ValueRestriction5E () = Message("ValueRestriction5", "%s%s%s")
582+
let ValueRestrictionFunctionE () = Message("ValueRestrictionFunction", "%s%s%s")
583+
let ValueRestrictionE () = Message("ValueRestriction", "%s%s%s")
587584
let RecoverableParseErrorE () = Message("RecoverableParseError", "")
588585
let ReservedKeywordE () = Message("ReservedKeyword", "%s")
589586
let IndentationProblemE () = Message("IndentationProblem", "%s")
@@ -1760,63 +1757,52 @@ type Exception with
17601757

17611758
| MissingFields(sl, _) -> os.AppendString(MissingFieldsE().Format(String.concat "," sl + "."))
17621759

1763-
| ValueRestriction(denv, infoReader, hasSig, v, _, _) ->
1760+
| ValueRestriction(denv, infoReader, v, _, _) ->
17641761
let denv =
17651762
{ denv with
17661763
showInferenceTyparAnnotations = true
17671764
}
17681765

17691766
let tau = v.TauType
17701767

1771-
if hasSig then
1772-
if isFunTy denv.g tau && (arityOfVal v).HasNoArgs then
1773-
let msg =
1774-
ValueRestriction1E().Format
1775-
v.DisplayName
1776-
(NicePrint.stringOfQualifiedValOrMember denv infoReader (mkLocalValRef v))
1777-
v.DisplayName
1768+
match v.MemberInfo with
1769+
| Some membInfo ->
1770+
// We should not reach here since obj would be inferred instead of retaining a generic type variable
1771+
(*
1772+
let a = [] @ [] // ERROR: Value restriction
1773+
module b =
1774+
let c = [] @ [] // ERROR: Value restriction
1775+
type d() =
1776+
let e = [] @ [] // inferred as 'obj list'
1777+
new(_) =
1778+
let f = [] @ [] // inferred as 'obj list'
1779+
d()
1780+
member _.g = [] @ [] // inferred as 'obj list'
1781+
member _.h with set () =
1782+
let i = [] @ [] // inferred as 'obj list'
1783+
()
1784+
*)
1785+
assert (membInfo.MemberFlags.MemberKind <> SynMemberKind.PropertyGet)
1786+
assert (membInfo.MemberFlags.MemberKind <> SynMemberKind.PropertySet)
1787+
assert (membInfo.MemberFlags.MemberKind <> SynMemberKind.Constructor)
1788+
| _ -> ()
17781789

1779-
os.AppendString msg
1780-
else
1781-
let msg =
1782-
ValueRestriction2E().Format
1783-
v.DisplayName
1784-
(NicePrint.stringOfQualifiedValOrMember denv infoReader (mkLocalValRef v))
1785-
v.DisplayName
1790+
if isFunTy denv.g tau && (arityOfVal v).HasNoArgs then
1791+
let msg =
1792+
ValueRestrictionFunctionE().Format
1793+
v.DisplayName
1794+
(NicePrint.stringOfQualifiedValOrMember denv infoReader (mkLocalValRef v))
1795+
v.DisplayName
17861796

1787-
os.AppendString msg
1797+
os.AppendString msg
17881798
else
1789-
match v.MemberInfo with
1790-
| Some membInfo when
1791-
(match membInfo.MemberFlags.MemberKind with
1792-
| SynMemberKind.PropertyGet
1793-
| SynMemberKind.PropertySet
1794-
| SynMemberKind.Constructor -> true // can't infer extra polymorphism
1795-
// can infer extra polymorphism
1796-
| _ -> false)
1797-
->
1798-
let msg =
1799-
ValueRestriction3E()
1800-
.Format(NicePrint.stringOfQualifiedValOrMember denv infoReader (mkLocalValRef v))
1801-
1802-
os.AppendString msg
1803-
| _ ->
1804-
if isFunTy denv.g tau && (arityOfVal v).HasNoArgs then
1805-
let msg =
1806-
ValueRestriction4E().Format
1807-
v.DisplayName
1808-
(NicePrint.stringOfQualifiedValOrMember denv infoReader (mkLocalValRef v))
1809-
v.DisplayName
1810-
1811-
os.AppendString msg
1812-
else
1813-
let msg =
1814-
ValueRestriction5E().Format
1815-
v.DisplayName
1816-
(NicePrint.stringOfQualifiedValOrMember denv infoReader (mkLocalValRef v))
1817-
v.DisplayName
1799+
let msg =
1800+
ValueRestrictionE().Format
1801+
v.DisplayName
1802+
(NicePrint.stringOfQualifiedValOrMember denv infoReader (mkLocalValRef v))
1803+
v.DisplayName
18181804

1819-
os.AppendString msg
1805+
os.AppendString msg
18201806

18211807
| Parsing.RecoverableParseError -> os.AppendString(RecoverableParseErrorE().Format)
18221808

0 commit comments

Comments
 (0)