ca52f554a1/org.scala-refactoring.library/src/main/scala/scala/tools/refactoring/transformation/TreeFactory.scala
| 28048e468f2f0a7b1479d2975df94b27e284e73e | ca52f554a13ca631512f929d8a0e10ab0cb65831 | ||
|---|---|---|---|
16 | 16 | ||
17 | object Invisible extends Position | 17 | object Invisible extends Position |
18 | 18 | ||
19 | def mkRenamedSymTree(t: SymTree, name: String): SymTree = (t match { | 19 | def mkRenamedSymTree(t: SymTree, nameString: String): SymTree = { |
20 | case i: Ident => i.copy(name = name) | 20 | val name = newTermName(nameString) |
21 | case v: ValDef => v.copy(name = name) | 21 | t match { |
22 | case d: DefDef => d.copy(name = name) | 22 | case i: Ident => i.copy(name = name) |
23 | case b: Bind => b.copy(name = name) | 23 | case v: ValDef => v.copy(name = name) |
24 | case s: Select => s.copy(name = name) | 24 | case d: DefDef => d.copy(name = name) |
25 | case c: ClassDef => c.copy(name = name.toTypeName) | 25 | case b: Bind => b.copy(name = name) |
26 | case t: This => t.copy(qual = name.toTypeName) | 26 | case s: Select => s.copy(name = name) |
27 | case m: ModuleDef => m.copy(name = name) | 27 | case c: ClassDef => c.copy(name = name.toTypeName) |
28 | case t: TypeDef => t.copy(name = name.toTypeName) | 28 | case t: This => t.copy(qual = name.toTypeName) |
29 | case t: PackageDef => t.copy(pid = Ident(name) setPos t.pid.pos) | 29 | case m: ModuleDef => m.copy(name = name) |
30 | case t => throw new Exception("Found " + t.getClass.getName) | 30 | case t: TypeDef => t.copy(name = name.toTypeName) |
31 | }) setPos t.pos | 31 | case t: PackageDef => t.copy(pid = Ident(name) setPos t.pid.pos) |
32 | case t => throw new Exception("Found " + t.getClass.getName) | ||
33 | } | ||
34 | } setPos t.pos | ||
32 | 35 | ||
33 | def mkRenamedTypeTree(t: TypeTree, name: String, originalSymbol: Symbol) = { | 36 | def mkRenamedTypeTree(t: TypeTree, name: String, originalSymbol: Symbol) = { |
34 | val newType = t.tpe map { | 37 | val newType = t.tpe map { |
... | ... | ||
50 | 53 | ||
51 | def mkImportFromStrings(qualifier: String, name: String) = { | 54 | def mkImportFromStrings(qualifier: String, name: String) = { |
52 | def mapPackageNames(qualifier: String) = { | 55 | def mapPackageNames(qualifier: String) = { |
53 | qualifier.split("\\.").map(s => escapeScalaKeywordsForImport(s.toTermName)).mkString(".") | 56 | newTermName(qualifier.split("\\.").map(s => escapeScalaKeywordsForImport(newTermName(s))).mkString(".")) |
54 | } | 57 | } |
55 | 58 | ||
56 | new Import(Ident(mapPackageNames(qualifier)), new ImportSelector(name, -1, name, -1) :: Nil) | 59 | new Import(Ident(mapPackageNames(qualifier)), new ImportSelector(newTermName(name), -1, newTermName(name), -1) :: Nil) |
57 | } | 60 | } |
58 | 61 | ||
59 | def mkRenamedImportTree(t: ImportSelectorTree, name: String) = | 62 | def mkRenamedImportTree(t: ImportSelectorTree, name: String) = |
... | ... | ||
71 | 74 | ||
72 | def mkValDef(name: String, rhs: Tree): ValDef = { | 75 | def mkValDef(name: String, rhs: Tree): ValDef = { |
73 | 76 | ||
74 | val valDef = ValDef(NoMods, name, new TypeTree, rhs) | 77 | val valDef = ValDef(NoMods, newTermName(name), new TypeTree, rhs) |
75 | def valDefForFunction = ValDef(NoMods, name, new TypeTree, Apply(rhs, Ident(nme.USCOREkw) :: Nil)) | 78 | def valDefForFunction = ValDef(NoMods, newTermName(name), new TypeTree, Apply(rhs, Ident(nme.USCOREkw) :: Nil)) |
76 | 79 | ||
77 | rhs match { | 80 | rhs match { |
78 | case rhs: Select if rhs.symbol.isMethod => | 81 | case rhs: Select if rhs.symbol.isMethod => |
... | ... | ||
104 | case xs => "(" + (xs map (_.name) mkString ", ") + ")" | 107 | case xs => "(" + (xs map (_.name) mkString ", ") + ")" |
105 | } | 108 | } |
106 | 109 | ||
107 | ValDef(NoMods, valName, new TypeTree(), call) | 110 | ValDef(NoMods, newTermName(valName), new TypeTree(), call) |
108 | } | 111 | } |
109 | } | 112 | } |
110 | 113 | ||
... | ... | ||
114 | if (parameters.isEmpty) | 117 | if (parameters.isEmpty) |
115 | Nil | 118 | Nil |
116 | else | 119 | else |
117 | parameters map (_ map (s => new ValDef(Modifiers(Flags.PARAM), s.nameString, TypeTree(s.tpe), EmptyTree))) | 120 | parameters map (_ map (s => new ValDef(Modifiers(Flags.PARAM), newTermName(s.nameString), TypeTree(s.tpe), EmptyTree))) |
118 | } | 121 | } |
119 | 122 | ||
120 | DefDef(mods withPosition (Flags.METHOD, NoPosition), name, Nil /*type parameters*/ , formalParameters, TypeTree(body.last.tpe), mkBlock(body)) | 123 | DefDef(mods withPosition (Flags.METHOD, NoPosition), newTermName(name), Nil /*type parameters*/ , formalParameters, TypeTree(body.last.tpe), mkBlock(body)) |
121 | } | 124 | } |
122 | 125 | ||
123 | def mkBlock(trees: List[Tree]): Block = trees match { | 126 | def mkBlock(trees: List[Tree]): Block = trees match { |
... | ... | ||
137 | 140 | ||
138 | val constructorArguments = argss map (_ map { | 141 | val constructorArguments = argss map (_ map { |
139 | case (mods, name, tpe) => | 142 | case (mods, name, tpe) => |
140 | ValDef(mods | Flags.PARAMACCESSOR, name, tpe, EmptyTree) | 143 | ValDef(mods | Flags.PARAMACCESSOR, newTermName(name), tpe, EmptyTree) |
141 | }) | 144 | }) |
142 | 145 | ||
143 | val constructor = { | 146 | val constructor = { |
... | ... | ||
148 | Apply(EmptyTree, args) | 151 | Apply(EmptyTree, args) |
149 | } | 152 | } |
150 | 153 | ||
151 | DefDef(mods withPosition (Flags.METHOD, NoPosition), nme.CONSTRUCTOR.toString, Nil, constructorArguments, TypeTree(NoType), mkBlock(body)) | 154 | DefDef(mods withPosition (Flags.METHOD, NoPosition), nme.CONSTRUCTOR, Nil, constructorArguments, TypeTree(NoType), mkBlock(body)) |
152 | } | 155 | } |
153 | 156 | ||
154 | ClassDef( | 157 | ClassDef( |
155 | mods, | 158 | mods, |
156 | name.toTypeName, | 159 | newTypeName(name), |
157 | tparams, | 160 | tparams, |
158 | Template( | 161 | Template( |
159 | parents, | 162 | parents, |
... | ... | ||
240 | // copy the tree and delete all positions so the full path will be written | 243 | // copy the tree and delete all positions so the full path will be written |
241 | val newExpr = topdown(setNoPosition &> removeThisTrees) apply duplicateTree(expr) getOrElse expr | 244 | val newExpr = topdown(setNoPosition &> removeThisTrees) apply duplicateTree(expr) getOrElse expr |
242 | val typeName = select.symbol.nameString | 245 | val typeName = select.symbol.nameString |
243 | Some(Import(newExpr, List(new ImportSelector(if(typeName == name.toString) name else typeName, -1, name, -1)))) | 246 | Some(Import(newExpr, List(new ImportSelector(if(typeName == name.toString) name else newTypeName(typeName), -1, name, -1)))) |
244 | } | 247 | } |
245 | } | 248 | } |
246 | } | 249 | } |
Download diff