@@ -165,6 +165,7 @@ object desugar {
165165 && ctx.owner.isClass
166166 && (! mods.is(Private ) || ctx.owner.is(Trait ) || ctx.owner.isPackageObject)
167167 if (setterNeeded) {
168+ val valName = normalizeName(vdef, tpt).asTermName
168169 // TODO: copy of vdef as getter needed?
169170 // val getter = ValDef(mods, name, tpt, rhs) withPos vdef.pos?
170171 // right now vdef maps via expandedTree to a thicket which concerns itself.
@@ -173,7 +174,7 @@ object desugar {
173174 // The rhs gets filled in later, when field is generated and getter has parameters (see Memoize miniphase)
174175 val setterRhs = if (vdef.rhs.isEmpty) EmptyTree else unitLiteral
175176 val setter = cpy.DefDef (vdef)(
176- name = name .setterName,
177+ name = valName .setterName,
177178 tparams = Nil ,
178179 vparamss = (setterParam :: Nil ) :: Nil ,
179180 tpt = TypeTree (defn.UnitType ),
@@ -934,8 +935,13 @@ object desugar {
934935 report.error(IllegalRedefinitionOfStandardKind (kind, name), errPos)
935936 name = name.errorName
936937 }
937- if name.isExtensionName && (! mdef.mods.is(ExtensionMethod ) || name.dropExtension.isExtensionName) then
938- report.error(em " illegal method name: $name may not start with `extension_` " , errPos)
938+ mdef match {
939+ case vdef : ValDef if name.isExtension && vdef.mods.is(Mutable ) =>
940+ report.error(em " illegal variable name: `extension` " , errPos)
941+ case memDef if name.isExtensionName && (! mdef.mods.is(ExtensionMethod ) || name.dropExtension.isExtensionName) =>
942+ report.error(em " illegal name: $name may not start with `extension_` " , errPos)
943+ case _ =>
944+ }
939945 name
940946 }
941947
0 commit comments