diff --git a/cli/src/org/scalajs/cli/Scalajsld.scala b/cli/src/org/scalajs/cli/Scalajsld.scala index f2aa954..a78ebc6 100644 --- a/cli/src/org/scalajs/cli/Scalajsld.scala +++ b/cli/src/org/scalajs/cli/Scalajsld.scala @@ -26,7 +26,7 @@ import java.io.File import java.net.URI import java.nio.file.Path import java.lang.NoClassDefFoundError -import org.scalajs.cli.internal.ModuleSplitStyleParser +import org.scalajs.cli.internal.{EsVersionParser, ModuleSplitStyleParser} object Scalajsld { @@ -153,6 +153,9 @@ object Scalajsld { opt[Unit]("es2015") .action { (_, c) => c.copy(esFeatures = c.esFeatures.withESVersion(ESVersion.ES2015)) } .text("Use ECMAScript 2015") + opt[String]("esVersion") + .action { (esV, c) => c.copy(esFeatures = c.esFeatures.withESVersion(EsVersionParser.parse(esV))) } + .text("EsVersion " + EsVersionParser.All.mkString("(", ", ", ")")) opt[ModuleKind]('k', "moduleKind") .action { (kind, c) => c.copy(moduleKind = kind) } .text("Module kind " + ModuleKind.All.mkString("(", ", ", ")")) diff --git a/cli/src/org/scalajs/cli/internal/EsVersionParser.scala b/cli/src/org/scalajs/cli/internal/EsVersionParser.scala new file mode 100644 index 0000000..016afaf --- /dev/null +++ b/cli/src/org/scalajs/cli/internal/EsVersionParser.scala @@ -0,0 +1,23 @@ +package org.scalajs.cli.internal + +import org.scalajs.linker.interface.ESVersion + +import java.util.Locale + +object EsVersionParser { + def parse(esVersion: String): ESVersion = + esVersion.trim.toLowerCase(Locale.ROOT) match { + case "es5_1" => ESVersion.ES5_1 + case "es2015" => ESVersion.ES2015 + case "es2016" => ESVersion.ES2016 + case "es2017" => ESVersion.ES2017 + case "es2018" => ESVersion.ES2018 + case "es2019" => ESVersion.ES2019 + case "es2020" => ESVersion.ES2020 + case "es2021" => ESVersion.ES2021 + case unknown => throw new IllegalArgumentException(s"Warning: unrecognized argument: $unknown for --esVersion parameter") + } + + val All: List[ESVersion] = + List(ESVersion.ES5_1, ESVersion.ES2015, ESVersion.ES2016, ESVersion.ES2017, ESVersion.ES2018, ESVersion.ES2019, ESVersion.ES2020, ESVersion.ES2021) +}