Skip to content

Commit d2b6576

Browse files
szeigerlrytz
authored andcommitted
Generate AnyVal source stubs from sbt
The sbt command `generateSources` now generates both the AnyVal sources and the tuple/function sources (previously done by `genprod`). Source generation is part of the sbt build, the `scala.tools.cmd.gen` package is removed from `scala-compiler`. This simplifies bootstrapping. Generated sources are still in the same location and checked into git. The shell scripts `tools/codegen` and `tools/codegen-anyvals` are also removed. The ant build and the build scripts do not call these. Regenerating sources is a manual step at the moment.
1 parent 1046ff2 commit d2b6576

File tree

15 files changed

+43
-114
lines changed

15 files changed

+43
-114
lines changed

build.sbt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -649,11 +649,14 @@ lazy val root = (project in file("."))
649649
publish := {},
650650
publishLocal := {},
651651
commands ++= ScriptCommands.all,
652-
// Generate (Product|TupleN|Function|AbstractFunction)*.scala files. Once the ANT build is gone,
653-
// we should move them into a managedSources dir instead of overwriting sources checked into git.
654-
commands += Command.command("genprod") { state =>
655-
val dir = (((baseDirectory in ThisBuild).value) / "src" / "library" / "scala").getPath
656-
genprod.main(Array(dir))
652+
// Generate (Product|TupleN|Function|AbstractFunction)*.scala files and scaladoc stubs for all AnyVal sources.
653+
// They should really go into a managedSources dir instead of overwriting sources checked into git but scaladoc
654+
// source links (could be fixed by shipping these sources with the scaladoc bundles) and scala-js source maps
655+
// rely on them being on github.
656+
commands += Command.command("generateSources") { state =>
657+
val dir = (((baseDirectory in ThisBuild).value) / "src" / "library" / "scala")
658+
genprod.main(Array(dir.getPath))
659+
GenerateAnyVals.run(dir.getAbsoluteFile)
657660
state
658661
}
659662
)

src/compiler/scala/tools/cmd/gen/AnyVals.scala renamed to project/GenerateAnyVals.scala

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
1-
/* NSC -- new Scala compiler
2-
* Copyright 2007-2013 LAMP/EPFL
3-
* @author Paul Phillips
4-
*/
5-
6-
package scala.tools.cmd
7-
package gen
8-
91
/** Code generation of the AnyVal types and their companions. */
10-
trait AnyValReps {
11-
self: AnyVals =>
2+
trait GenerateAnyValReps {
3+
self: GenerateAnyVals =>
124

135
sealed abstract class AnyValNum(name: String, repr: Option[String], javaEquiv: String)
146
extends AnyValRep(name,repr,javaEquiv) {
@@ -271,7 +263,7 @@ import scala.language.implicitConversions"""
271263
}
272264
}
273265

274-
trait AnyValTemplates {
266+
trait GenerateAnyValTemplates {
275267
def headerTemplate = """/* __ *\
276268
** ________ ___ / / ___ Scala API **
277269
** / __/ __// _ | / / / _ | (c) 2002-2013, LAMP/EPFL **
@@ -281,8 +273,8 @@ trait AnyValTemplates {
281273
\* */
282274
283275
// DO NOT EDIT, CHANGES WILL BE LOST
284-
// This auto-generated code can be modified in scala.tools.cmd.gen.
285-
// Afterwards, running tools/codegen-anyvals regenerates this source file.
276+
// This auto-generated code can be modified in "project/GenerateAnyVals.scala".
277+
// Afterwards, running "sbt generateSources" regenerates this source file.
286278
287279
package scala
288280
@@ -351,7 +343,7 @@ final val MaxValue = @[email protected]_VALUE
351343
"""
352344
}
353345

354-
class AnyVals extends AnyValReps with AnyValTemplates {
346+
class GenerateAnyVals extends GenerateAnyValReps with GenerateAnyValTemplates {
355347
object B extends AnyValNum("Byte", Some("8-bit signed integer"), "byte")
356348
object S extends AnyValNum("Short", Some("16-bit signed integer"), "short")
357349
object C extends AnyValNum("Char", Some("16-bit unsigned integer"), "char")
@@ -481,3 +473,14 @@ override def getClass(): Class[Boolean] = ???
481473

482474
def make() = values map (x => (x.name, x.make()))
483475
}
476+
477+
object GenerateAnyVals {
478+
def run(outDir: java.io.File) {
479+
val av = new GenerateAnyVals
480+
481+
av.make() foreach { case (name, code ) =>
482+
val file = new java.io.File(outDir, name + ".scala")
483+
sbt.IO.write(file, code, java.nio.charset.Charset.forName("UTF-8"), false)
484+
}
485+
}
486+
}

src/compiler/scala/tools/cmd/gen/Codegen.scala

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/compiler/scala/tools/cmd/gen/CodegenSpec.scala

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/library/scala/Boolean.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
\* */
88

99
// DO NOT EDIT, CHANGES WILL BE LOST
10-
// This auto-generated code can be modified in scala.tools.cmd.gen.
11-
// Afterwards, running tools/codegen-anyvals regenerates this source file.
10+
// This auto-generated code can be modified in "project/GenerateAnyVals.scala".
11+
// Afterwards, running "sbt generateSources" regenerates this source file.
1212

1313
package scala
1414

src/library/scala/Byte.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
\* */
88

99
// DO NOT EDIT, CHANGES WILL BE LOST
10-
// This auto-generated code can be modified in scala.tools.cmd.gen.
11-
// Afterwards, running tools/codegen-anyvals regenerates this source file.
10+
// This auto-generated code can be modified in "project/GenerateAnyVals.scala".
11+
// Afterwards, running "sbt generateSources" regenerates this source file.
1212

1313
package scala
1414

src/library/scala/Char.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
\* */
88

99
// DO NOT EDIT, CHANGES WILL BE LOST
10-
// This auto-generated code can be modified in scala.tools.cmd.gen.
11-
// Afterwards, running tools/codegen-anyvals regenerates this source file.
10+
// This auto-generated code can be modified in "project/GenerateAnyVals.scala".
11+
// Afterwards, running "sbt generateSources" regenerates this source file.
1212

1313
package scala
1414

src/library/scala/Double.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
\* */
88

99
// DO NOT EDIT, CHANGES WILL BE LOST
10-
// This auto-generated code can be modified in scala.tools.cmd.gen.
11-
// Afterwards, running tools/codegen-anyvals regenerates this source file.
10+
// This auto-generated code can be modified in "project/GenerateAnyVals.scala".
11+
// Afterwards, running "sbt generateSources" regenerates this source file.
1212

1313
package scala
1414

src/library/scala/Float.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
\* */
88

99
// DO NOT EDIT, CHANGES WILL BE LOST
10-
// This auto-generated code can be modified in scala.tools.cmd.gen.
11-
// Afterwards, running tools/codegen-anyvals regenerates this source file.
10+
// This auto-generated code can be modified in "project/GenerateAnyVals.scala".
11+
// Afterwards, running "sbt generateSources" regenerates this source file.
1212

1313
package scala
1414

src/library/scala/Int.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
\* */
88

99
// DO NOT EDIT, CHANGES WILL BE LOST
10-
// This auto-generated code can be modified in scala.tools.cmd.gen.
11-
// Afterwards, running tools/codegen-anyvals regenerates this source file.
10+
// This auto-generated code can be modified in "project/GenerateAnyVals.scala".
11+
// Afterwards, running "sbt generateSources" regenerates this source file.
1212

1313
package scala
1414

0 commit comments

Comments
 (0)