diff --git a/src/Compiler/Checking/CheckExpressions.fs b/src/Compiler/Checking/CheckExpressions.fs
index 54ec31a4451..86dbd0ee504 100644
--- a/src/Compiler/Checking/CheckExpressions.fs
+++ b/src/Compiler/Checking/CheckExpressions.fs
@@ -1015,15 +1015,16 @@ let MakeMemberDataAndMangledNameForMemberVal(g, tcref, isExtrinsic, attrs, implS
if not isCompGen && IsLogicalInfixOpName id.idText then
let m = id.idRange
- let name = ConvertValLogicalNameToDisplayNameCore id.idText
+ let logicalName = id.idText
+ let displayName = ConvertValLogicalNameToDisplayNameCore logicalName
// Check symbolic members. Expect valSynData implied arity to be [[2]].
match SynInfo.AritiesOfArgs valSynData with
- | [] | [0] -> warning(Error(FSComp.SR.memberOperatorDefinitionWithNoArguments name, m))
+ | [] | [0] -> warning(Error(FSComp.SR.memberOperatorDefinitionWithNoArguments displayName, m))
| n :: otherArgs ->
- let opTakesThreeArgs = IsLogicalTernaryOperator name
- if n<>2 && not opTakesThreeArgs then warning(Error(FSComp.SR.memberOperatorDefinitionWithNonPairArgument(name, n), m))
- if n<>3 && opTakesThreeArgs then warning(Error(FSComp.SR.memberOperatorDefinitionWithNonTripleArgument(name, n), m))
- if not (isNil otherArgs) then warning(Error(FSComp.SR.memberOperatorDefinitionWithCurriedArguments name, m))
+ let opTakesThreeArgs = IsLogicalTernaryOperator logicalName
+ if n<>2 && not opTakesThreeArgs then warning(Error(FSComp.SR.memberOperatorDefinitionWithNonPairArgument(displayName, n), m))
+ if n<>3 && opTakesThreeArgs then warning(Error(FSComp.SR.memberOperatorDefinitionWithNonTripleArgument(displayName, n), m))
+ if not (isNil otherArgs) then warning(Error(FSComp.SR.memberOperatorDefinitionWithCurriedArguments displayName, m))
if isExtrinsic && IsLogicalOpName id.idText then
warning(Error(FSComp.SR.tcMemberOperatorDefinitionInExtrinsic(), id.idRange))
diff --git a/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj b/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj
index 7627368cc57..1262a9dc28a 100644
--- a/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj
+++ b/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj
@@ -173,6 +173,7 @@
+
diff --git a/tests/FSharp.Compiler.ComponentTests/Language/DynamicAssignmentOperatorTests.fs b/tests/FSharp.Compiler.ComponentTests/Language/DynamicAssignmentOperatorTests.fs
new file mode 100644
index 00000000000..69525f0ef38
--- /dev/null
+++ b/tests/FSharp.Compiler.ComponentTests/Language/DynamicAssignmentOperatorTests.fs
@@ -0,0 +1,21 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+namespace FSharp.Compiler.ComponentTests.Language
+
+open System
+open Xunit
+open FSharp.Test.Compiler
+
+module DynamicAssignmentOperatorTests =
+
+ []
+ []
+ []
+ let ``Implementing dynamic assignment operator does not produce a warning`` version =
+ Fsx """
+ type T = T with
+ static member inline (?<-) (f, x, y) = f x y
+ """
+ |> withLangVersion version
+ |> compile
+ |> shouldSucceed
\ No newline at end of file