scala-ide/scala-refactoring

Rename refactoring for case class parameter should also rename named arguments to apply and copy

retronym opened this issue · 3 comments

image

The competition:

image

To enable this, the compiler should retain the AssignOrNamedArg tree as a tree attachment after the names/defaults transformation has eliminated them.

Something like this:

commit 8e47eb3e2b864a18d22e0030041d865af3e94ce5
Author: Jason Zaugg <jzaugg@gmail.com>
Date:   Tue Feb 18 15:01:13 2014 +0100

    index on master: 8536c31 Merge pull request #3544 from retronym/topic/unus

diff --git a/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala b/sr
index dceb0a4..1660b6e 100644
--- a/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
@@ -567,7 +567,7 @@ trait NamesDefaults { self: Analyzer =>
             if (argIndex != paramPos)
               positionalAllowed = false
             argPos(argIndex) = paramPos
-            rhs
+            rhs.updateAttachment(NamesDefaultOriginalArguments(arg))
           }
         case _ =>
           argPos(argIndex) = argIndex
@@ -578,4 +578,10 @@ trait NamesDefaults { self: Analyzer =>

     (namelessArgs, argPos)
   }
+
+  final case class NamesDefaultOriginalArguments(named: AssignOrNamedArg) {
+    // TODO
+    //  def importAttachment(importer: Importer): NamesDefaultOriginalArgumen
+    //  new importer.NamesDefaultOriginalArguments(args map (t => importer.im
+  }
 }

👍