Skip to content

Commit 3fe60c2

Browse files
author
exoego
committed
Split number literal into int and double.
1 parent d2e2a14 commit 3fe60c2

File tree

3 files changed

+16
-9
lines changed

3 files changed

+16
-9
lines changed

src/main/scala/org/scalajs/tools/tsimporter/Importer.scala

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -270,12 +270,11 @@ class Importer(val output: java.io.PrintWriter) {
270270
case ConstantType(StringLiteral(_)) =>
271271
TypeRef.String
272272

273-
case ConstantType(NumberLiteral(d, isValidInt)) =>
274-
if (isValidInt) {
275-
TypeRef.Int
276-
} else {
277-
TypeRef.Double
278-
}
273+
case ConstantType(IntLiteral(i)) =>
274+
TypeRef.Int
275+
276+
case ConstantType(DoubleLiteral(d)) =>
277+
TypeRef.Double
279278

280279
case ObjectType(List(IndexMember(_, TypeRefTree(CoreType("string"), _), valueType))) =>
281280
val valueTpe = typeToScala(valueType)

src/main/scala/org/scalajs/tools/tsimporter/Trees.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,11 @@ object Trees {
109109

110110
case class BooleanLiteral(value: Boolean) extends Literal
111111

112-
case class NumberLiteral(value: Double, isValidInt: Boolean) extends Literal
112+
sealed trait NumberLiteral extends Literal
113+
114+
case class IntLiteral(value: Int) extends NumberLiteral
115+
116+
case class DoubleLiteral(value: Double) extends NumberLiteral
113117

114118
case class StringLiteral(value: String) extends Literal with PropertyName {
115119
override def name = value

src/main/scala/org/scalajs/tools/tsimporter/parser/TSDefParser.scala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -325,9 +325,13 @@ class TSDefParser extends StdTokenParsers with ImplicitConversions {
325325
stringLit ^^ StringLiteral
326326

327327
lazy val numberLiteral: Parser[NumberLiteral] =
328-
numericLit ^^ {s =>
328+
numericLit ^^ { s =>
329329
val d = s.toDouble
330-
NumberLiteral(d, !s.contains(".") && d.isValidInt)
330+
if (!s.contains(".") && d.isValidInt) {
331+
IntLiteral(d.toInt)
332+
} else {
333+
DoubleLiteral(d)
334+
}
331335
}
332336

333337
private val isCoreTypeName =

0 commit comments

Comments
 (0)