@@ -86,8 +86,8 @@ object DesugarEnums {
86
86
/** The following lists of definitions for an enum type E:
87
87
*
88
88
* private val $values = new EnumValues[E]
89
- * def valueOf(name: String) =
90
- * try $values.fromName(name) catch
89
+ * def valueOf($ name: String) =
90
+ * try $values.fromName($ name) catch
91
91
* {
92
92
* case ex$:NoSuchElementException =>
93
93
* throw new IllegalArgumentException("key not found: ".concat(name))
@@ -104,17 +104,17 @@ object DesugarEnums {
104
104
105
105
val valuesOfExnMessage = Apply (
106
106
Select (Literal (Constant (" key not found: " )), " concat" .toTermName)
107
- , Ident (nme.name ) :: Nil )
107
+ , Ident (nme.nameDollar ) :: Nil )
108
108
val valuesOfBody = Try (
109
- expr = Apply (valuesDot(" fromName" ), Ident (nme.name ) :: Nil )
109
+ expr = Apply (valuesDot(" fromName" ), Ident (nme.nameDollar ) :: Nil )
110
110
, cases = CaseDef (
111
111
pat = Typed (Ident (nme.DEFAULT_EXCEPTION_NAME ), TypeTree (defn.NoSuchElementExceptionType ))
112
112
, guard = EmptyTree
113
113
, body = Throw (New (TypeTree (defn.IllegalArgumentExceptionType ), List (valuesOfExnMessage :: Nil )))
114
114
) :: Nil
115
115
, finalizer = EmptyTree
116
116
)
117
- val valueOfDef = DefDef (nme.valueOf, Nil , List (param(nme.name , defn.StringType ) :: Nil ),
117
+ val valueOfDef = DefDef (nme.valueOf, Nil , List (param(nme.nameDollar , defn.StringType ) :: Nil ),
118
118
TypeTree (), valuesOfBody)
119
119
120
120
valuesDef ::
@@ -124,20 +124,19 @@ object DesugarEnums {
124
124
125
125
/** A creation method for a value of enum type `E`, which is defined as follows:
126
126
*
127
- * private def $new(tag: Int, name_: String) = new E {
128
- * override def ordinal = tag
129
- * override def name = name_
130
- * override def toString = name
127
+ * private def $new($tag: Int, $name: String) = new E {
128
+ * override def ordinal = $tag
129
+ * override def toString = $name
131
130
* $values.register(this)
132
131
* }
133
132
*/
134
133
private def enumValueCreator (implicit ctx : Context ) = {
135
- val ordinalDef = ordinalMeth(Ident (nme.tag ))
136
- val nameDef = nameMeth (Ident (nme.name_ ))
134
+ val ordinalDef = ordinalMeth(Ident (nme.tagDollar ))
135
+ val toStringDef = toStringMeth (Ident (nme.nameDollar ))
137
136
def creator = New (Template (emptyConstructor, enumClassRef :: Nil , Nil , EmptyValDef ,
138
- List (ordinalDef, nameDef, toStringMethAsName ) ++ registerCall))
137
+ List (ordinalDef, toStringDef ) ++ registerCall))
139
138
DefDef (nme.DOLLAR_NEW , Nil ,
140
- List (List (param(nme.tag , defn.IntType ), param(nme.name_ , defn.StringType ))),
139
+ List (List (param(nme.tagDollar , defn.IntType ), param(nme.nameDollar , defn.StringType ))),
141
140
TypeTree (), creator)
142
141
}
143
142
@@ -263,20 +262,14 @@ object DesugarEnums {
263
262
def ordinalMeth (body : Tree )(implicit ctx : Context ): DefDef =
264
263
DefDef (nme.ordinal, Nil , Nil , TypeTree (defn.IntType ), body).withFlags(Override )
265
264
266
- def nameMeth (body : Tree )(implicit ctx : Context ): DefDef =
267
- DefDef (nme.name, Nil , Nil , TypeTree (defn.StringType ), body).withFlags(Override )
268
-
269
265
def toStringMeth (body : Tree )(implicit ctx : Context ): DefDef =
270
266
DefDef (nme.toString_, Nil , Nil , TypeTree (defn.StringType ), body).withFlags(Override )
271
267
272
268
def ordinalMethLit (ord : Int )(implicit ctx : Context ): DefDef =
273
269
ordinalMeth(Literal (Constant (ord)))
274
270
275
- def nameMethLit (name : String )(implicit ctx : Context ): DefDef =
276
- nameMeth(Literal (Constant (name)))
277
-
278
- def toStringMethAsName (implicit ctx : Context ): DefDef =
279
- toStringMeth(Ident (nme.name))
271
+ def toStringMethLit (name : String )(implicit ctx : Context ): DefDef =
272
+ toStringMeth(Literal (Constant (name)))
280
273
281
274
/** Expand a module definition representing a parameterless enum case */
282
275
def expandEnumModule (name : TermName , impl : Template , mods : Modifiers , span : Span )(implicit ctx : Context ): Tree = {
@@ -287,8 +280,8 @@ object DesugarEnums {
287
280
else {
288
281
val (tag, scaffolding) = nextOrdinal(CaseKind .Object )
289
282
val ordinalDef = ordinalMethLit(tag)
290
- val nameDef = nameMethLit (name.toString)
291
- val impl1 = cpy.Template (impl)(body = List (ordinalDef, nameDef, toStringMethAsName ) ++ registerCall)
283
+ val toStringDef = toStringMethLit (name.toString)
284
+ val impl1 = cpy.Template (impl)(body = List (ordinalDef, toStringDef ) ++ registerCall)
292
285
val vdef = ValDef (name, TypeTree (), New (impl1)).withMods(mods | Final )
293
286
flatTree(scaffolding ::: vdef :: Nil ).withSpan(span)
294
287
}
0 commit comments