diff --git a/compiler/src/dotty/tools/dotc/typer/Typer.scala b/compiler/src/dotty/tools/dotc/typer/Typer.scala
index 54f75d37b2bf..e3c438c40f00 100644
--- a/compiler/src/dotty/tools/dotc/typer/Typer.scala
+++ b/compiler/src/dotty/tools/dotc/typer/Typer.scala
@@ -1119,7 +1119,11 @@ class Typer(@constructorOnly nestingLevel: Int = 0) extends Namer
           case Apply(fn, _) if fn.symbol.is(ExtensionMethod) =>
             def toSetter(fn: Tree): untpd.Tree = fn match
               case fn @ Ident(name: TermName) =>
-                untpd.cpy.Ident(fn)(name.setterName)
+                fn.tpe match
+                  case TermRef(qual: TermRef, _) =>
+                    toSetter(ref(qual).select(fn.symbol).withSpan(fn.span))
+                  case _ =>
+                    untpd.cpy.Ident(fn)(name.setterName)
               case fn @ Select(qual, name: TermName) =>
                 untpd.cpy.Select(fn)(untpd.TypedSplice(qual), name.setterName)
               case fn @ TypeApply(fn1, targs) =>
diff --git a/tests/pos/i18713.scala b/tests/pos/i18713.scala
new file mode 100644
index 000000000000..0c406aa09d2e
--- /dev/null
+++ b/tests/pos/i18713.scala
@@ -0,0 +1,18 @@
+import language.experimental.relaxedExtensionImports
+
+class A
+object AA:
+  extension (a: A)
+    def f = ???
+    def f_=(x: String) = ???
+
+object BB:
+  extension (b: Long)
+    def f = ???
+    def f_=(x: String) = ???
+
+def test(a: A) =
+  import AA.*
+  import BB.*
+  a.f
+  a.f = "aa"