Skip to content

Commit 83da57a

Browse files
authored
Merge pull request #2336 from dotty-staging/fix-#2334
Fix #2334: Require at least one digit after '.' in floating point literals
2 parents 385178d + fcf2168 commit 83da57a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+664
-557
lines changed

compiler/src/dotty/tools/backend/jvm/DottyBackendInterface.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,7 @@ class DottyBackendInterface(outputDirectory: AbstractFile, val superCallsMap: Ma
634634
toDenot(sym)(shiftedContext).isStatic(shiftedContext)
635635
}
636636

637-
def isStaticConstructor: Boolean = (isStaticMember && isClassConstructor) || (sym.name eq core.Names.STATIC_CONSTRUCTOR)
637+
def isStaticConstructor: Boolean = (isStaticMember && isClassConstructor) || (sym.name eq nme.STATIC_CONSTRUCTOR)
638638

639639

640640
// navigation

compiler/src/dotty/tools/dotc/core/Definitions.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ class Definitions {
137137
}
138138

139139
private def newMethod(cls: ClassSymbol, name: TermName, info: Type, flags: FlagSet = EmptyFlags): TermSymbol =
140-
newSymbol(cls, name.encode, flags | Method, info).asTerm
140+
newSymbol(cls, name, flags | Method, info).asTerm
141141

142142
private def enterMethod(cls: ClassSymbol, name: TermName, info: Type, flags: FlagSet = EmptyFlags): TermSymbol =
143143
newMethod(cls, name, info, flags).entered
@@ -301,7 +301,7 @@ class Definitions {
301301
lazy val ScalaPredefModuleRef = ctx.requiredModuleRef("scala.Predef")
302302
def ScalaPredefModule(implicit ctx: Context) = ScalaPredefModuleRef.symbol
303303

304-
lazy val Predef_ConformsR = ScalaPredefModule.requiredClass("$less$colon$less").typeRef
304+
lazy val Predef_ConformsR = ScalaPredefModule.requiredClass("<:<").typeRef
305305
def Predef_Conforms(implicit ctx: Context) = Predef_ConformsR.symbol
306306
lazy val Predef_conformsR = ScalaPredefModule.requiredMethodRef("$conforms")
307307
def Predef_conforms(implicit ctx: Context) = Predef_conformsR.symbol

compiler/src/dotty/tools/dotc/core/Denotations.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1194,7 +1194,7 @@ object Denotations {
11941194
select(recur(prefix), wrap(selector))
11951195
case qn @ AnyQualifiedName(prefix, _) =>
11961196
recur(prefix, n => wrap(qn.info.mkString(n).toTermName))
1197-
case path: SimpleTermName =>
1197+
case path: SimpleName =>
11981198
def recurSimple(len: Int, wrap: TermName => Name): Denotation = {
11991199
val point = path.lastIndexOf('.', len - 1)
12001200
val selector = wrap(path.slice(point + 1, len).asTermName)

compiler/src/dotty/tools/dotc/core/NameKinds.scala

Lines changed: 112 additions & 44 deletions
Large diffs are not rendered by default.

compiler/src/dotty/tools/dotc/core/NameOps.scala

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ object NameOps {
5252
implicit class NameDecorator[N <: Name](val name: N) extends AnyVal {
5353
import nme._
5454

55-
def testSimple(f: SimpleTermName => Boolean): Boolean = name match {
56-
case name: SimpleTermName => f(name)
55+
def testSimple(f: SimpleName => Boolean): Boolean = name match {
56+
case name: SimpleName => f(name)
5757
case name: TypeName => name.toTermName.testSimple(f)
5858
case _ => false
5959
}
@@ -83,7 +83,7 @@ object NameOps {
8383
def isOpAssignmentName: Boolean = name match {
8484
case raw.NE | raw.LE | raw.GE | EMPTY =>
8585
false
86-
case name: SimpleTermName =>
86+
case name: SimpleName =>
8787
name.length > 0 && name.last == '=' && name.head != '=' && isOperatorPart(name.head)
8888
case _ =>
8989
false
@@ -100,8 +100,10 @@ object NameOps {
100100
* it is also called from the backend.
101101
*/
102102
def stripModuleClassSuffix: N = likeSpaced {
103-
val semName =
104-
if (name.isSimple && name.endsWith("$")) name.unmangleClassName else name
103+
val semName = name.toTermName match {
104+
case name: SimpleName if name.endsWith("$") => name.unmangleClassName
105+
case _ => name
106+
}
105107
semName.exclude(ModuleClassName)
106108
}
107109

@@ -126,15 +128,24 @@ object NameOps {
126128

127129
def errorName: N = likeSpaced(name ++ nme.ERROR)
128130

131+
/** Map variance value -1, +1 to 0, 1 */
132+
private def varianceToNat(v: Int) = (v + 1) / 2
133+
134+
/** Map 0, 1 to variance value -1, +1 */
135+
private def natToVariance(n: Int) = n * 2 - 1
129136

130137
/** Name with variance prefix: `+` for covariant, `-` for contravariant */
131-
def withVariance(v: Int): N =
132-
likeSpaced { VariantName(name.exclude(VariantName).toTermName, v) }
138+
def withVariance(v: Int): N = {
139+
val underlying = name.exclude(VariantName)
140+
likeSpaced(
141+
if (v == 0) underlying
142+
else VariantName(underlying.toTermName, varianceToNat(v)))
143+
}
133144

134145
/** The variance as implied by the variance prefix, or 0 if there is
135146
* no variance prefix.
136147
*/
137-
def variance = name.collect { case VariantName(_, n) => n }.getOrElse(0)
148+
def variance = name.collect { case VariantName(_, n) => natToVariance(n) }.getOrElse(0)
138149

139150
def freshened(implicit ctx: Context): N = likeSpaced {
140151
name.toTermName match {
@@ -227,19 +238,19 @@ object NameOps {
227238
def compactified(implicit ctx: Context): TermName = termName(compactify(name.toString))
228239

229240
def unmangleClassName: N = name.toTermName match {
230-
case name: SimpleTermName
241+
case name: SimpleName
231242
if name.endsWith(str.MODULE_SUFFIX) && !nme.falseModuleClassNames.contains(name) =>
232243
likeSpaced(name.dropRight(str.MODULE_SUFFIX.length).moduleClassName)
233244
case _ => name
234245
}
235246

236247
def unmangle(kind: NameKind): N = likeSpaced {
237248
name rewrite {
238-
case unmangled: SimpleTermName =>
249+
case unmangled: SimpleName =>
239250
kind.unmangle(unmangled)
240251
case ExpandedName(prefix, last) =>
241252
kind.unmangle(last) rewrite {
242-
case kernel: SimpleTermName =>
253+
case kernel: SimpleName =>
243254
ExpandedName(prefix, kernel)
244255
}
245256
}

0 commit comments

Comments
 (0)