diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-11-12 14:18:52 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-11-12 15:29:53 -0800 |
commit | ed37907d4fe426ba804fee9d6c7c4062ae4cce5f (patch) | |
tree | 678256c3452474df31603a4100b08ca936b695e7 /src | |
parent | beed16825e53077c40ff38b035bfaafb3a4e39d5 (diff) | |
download | scala-ed37907d4fe426ba804fee9d6c7c4062ae4cce5f.tar.gz scala-ed37907d4fe426ba804fee9d6c7c4062ae4cce5f.tar.bz2 scala-ed37907d4fe426ba804fee9d6c7c4062ae4cce5f.zip |
Refactoring to prepare modularization of the compiler.
Actual modularization is delayed until 2.12.
The one big (one-line) change is to make the interactive compiler independent
of scaladoc. We have one "integration test": `MemoryLeaksTest`.
This commit adds a bunch of comments marked `TODO: modularize the compiler`,
that should be uncommented when we're ready to continue the modularization
effort.
I decided to merge them commented out to avoid having to rebase xml patches.
There's still some chance of bitrot, but I'm willing to take my chances.
I previously refactored the build to make it easier to add jars in a coherent
way, which hinges on the `init-project-prop` mechanism, so the relevant
properties are already injected there.
Diffstat (limited to 'src')
-rw-r--r-- | src/build/bnd/scala-compiler-doc.bnd | 6 | ||||
-rw-r--r-- | src/build/bnd/scala-compiler-interactive.bnd | 6 | ||||
-rw-r--r-- | src/build/maven/maven-deploy.xml | 23 | ||||
-rw-r--r-- | src/build/maven/scala-compiler-doc-pom.xml | 69 | ||||
-rw-r--r-- | src/build/maven/scala-compiler-interactive-pom.xml | 59 | ||||
-rw-r--r-- | src/build/maven/scala-compiler-pom.xml | 17 | ||||
-rw-r--r-- | src/interactive/scala/tools/nsc/interactive/Global.scala | 8 | ||||
-rw-r--r-- | src/interactive/scala/tools/nsc/interactive/tests/core/PresentationCompilerInstance.scala | 10 |
8 files changed, 167 insertions, 31 deletions
diff --git a/src/build/bnd/scala-compiler-doc.bnd b/src/build/bnd/scala-compiler-doc.bnd new file mode 100644 index 0000000000..4910e5fcb0 --- /dev/null +++ b/src/build/bnd/scala-compiler-doc.bnd @@ -0,0 +1,6 @@ +Bundle-Name: Scala Documentation Generator +Bundle-SymbolicName: org.scala-lang.modules.scala-compiler-doc_@SCALA_BINARY_VERSION@ +ver: @SCALA_COMPILER_DOC_VERSION@ +Bundle-Version: ${ver} +Export-Package: *;version=${ver} +Import-Package: * diff --git a/src/build/bnd/scala-compiler-interactive.bnd b/src/build/bnd/scala-compiler-interactive.bnd new file mode 100644 index 0000000000..34d2f2956d --- /dev/null +++ b/src/build/bnd/scala-compiler-interactive.bnd @@ -0,0 +1,6 @@ +Bundle-Name: Scala Interactive Compiler +Bundle-SymbolicName: org.scala-lang.modules.scala-compiler-interactive_@SCALA_BINARY_VERSION@ +ver: @SCALA_COMPILER_INTERACTIVE_VERSION@ +Bundle-Version: ${ver} +Export-Package: *;version=${ver} +Import-Package: * diff --git a/src/build/maven/maven-deploy.xml b/src/build/maven/maven-deploy.xml index 7cff0b457e..822cc1a25f 100644 --- a/src/build/maven/maven-deploy.xml +++ b/src/build/maven/maven-deploy.xml @@ -59,13 +59,18 @@ <copy file="${path}-pom.xml" tofile="${path}-pom-filtered.xml" overwrite="true"> <filterset> - <filter token="VERSION" value="${maven.version.number}" /> - <filter token="SCALA_BINARY_VERSION" value="${scala.binary.version}" /> - <filter token="XML_VERSION" value="${scala-xml.version.number}" /> + <filter token="VERSION" value="${maven.version.number}" /> + <filter token="SCALA_BINARY_VERSION" value="${scala.binary.version}" /> + <filter token="XML_VERSION" value="${scala-xml.version.number}" /> <filter token="PARSER_COMBINATORS_VERSION" value="${scala-parser-combinators.version.number}" /> - <filter token="RELEASE_REPOSITORY" value="${remote.release.repository}" /> - <filter token="SNAPSHOT_REPOSITORY" value="${remote.snapshot.repository}" /> - <filter token="JLINE_VERSION" value="${jline.version}" /> + <filter token="RELEASE_REPOSITORY" value="${remote.release.repository}" /> + <filter token="SNAPSHOT_REPOSITORY" value="${remote.snapshot.repository}" /> + <filter token="JLINE_VERSION" value="${jline.version}" /> + + <!-- TODO modularize compiler. + <filter token="SCALA_COMPILER_DOC_VERSION" value="${scala-compiler-doc.version.number}" /> + <filter token="SCALA_COMPILER_INTERACTIVE_VERSION" value="${scala-compiler-interactive.version.number}" /> + --> </filterset> </copy> <artifact:pom id="@{name}.pom" file="${path}-pom-filtered.xml" /> @@ -112,6 +117,12 @@ <deploy-one dir="@{dir}" name="scala-library" local="@{local}" signed="@{signed}"/> <deploy-one dir="@{dir}" name="scala-reflect" local="@{local}" signed="@{signed}"/> <deploy-one dir="@{dir}" name="scala-compiler" local="@{local}" signed="@{signed}"/> + + <!-- TODO modularize compiler. + <deploy-one dir="@{dir}" name="scala-compiler-doc" local="@{local}" signed="@{signed}"/> + <deploy-one dir="@{dir}" name="scala-compiler-interactive" local="@{local}" signed="@{signed}"/> + --> + <deploy-one dir="@{dir}" name="scala-actors" local="@{local}" signed="@{signed}"/> <deploy-one dir="@{dir}" name="scala-swing" local="@{local}" signed="@{signed}"/> <deploy-one dir="@{dir}" name="scalap" local="@{local}" signed="@{signed}"/> diff --git a/src/build/maven/scala-compiler-doc-pom.xml b/src/build/maven/scala-compiler-doc-pom.xml new file mode 100644 index 0000000000..30161d2fea --- /dev/null +++ b/src/build/maven/scala-compiler-doc-pom.xml @@ -0,0 +1,69 @@ +<?xml version="1.0"?> +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.scala-lang.modules</groupId> + <artifactId>scala-compiler-doc_@SCALA_BINARY_VERSION@</artifactId> + <packaging>jar</packaging> + <version>@SCALA_COMPILER_DOC_VERSION@</version> + <name>Scala Documentation Generator</name> + <description>Documentation generator for the Scala Programming Language</description> + <url>http://www.scala-lang.org/</url> + <inceptionYear>2002</inceptionYear> + <organization> + <name>LAMP/EPFL</name> + <url>http://lamp.epfl.ch/</url> + </organization> + <licenses> + <license> + <name>BSD 3-Clause</name> + <url>http://www.scala-lang.org/license.html</url> + <distribution>repo</distribution> + </license> + </licenses> + <scm> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> + </scm> + <issueManagement> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> + </issueManagement> + <dependencies> + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-compiler</artifactId> + <version>@VERSION@</version> + </dependency> + <dependency> + <groupId>org.scala-lang.modules</groupId> + <artifactId>scala-xml_@SCALA_BINARY_VERSION@</artifactId> + <version>@XML_VERSION@</version> + </dependency> + <dependency> + <groupId>org.scala-lang.modules</groupId> + <artifactId>scala-parser-combinators_@SCALA_BINARY_VERSION@</artifactId> + <version>@PARSER_COMBINATORS_VERSION@</version> + </dependency> + </dependencies> + <distributionManagement> + <repository> + <id>scala-tools.org</id> + <url>@RELEASE_REPOSITORY@</url> + </repository> + <snapshotRepository> + <id>scala-tools.org</id> + <url>@SNAPSHOT_REPOSITORY@</url> + <uniqueVersion>false</uniqueVersion> + </snapshotRepository> + </distributionManagement> + <developers> + <developer> + <id>lamp</id> + <name>EPFL LAMP</name> + </developer> + <developer> + <id>Typesafe</id> + <name>Typesafe, Inc.</name> + </developer> + </developers> +</project> diff --git a/src/build/maven/scala-compiler-interactive-pom.xml b/src/build/maven/scala-compiler-interactive-pom.xml new file mode 100644 index 0000000000..d59f305a9f --- /dev/null +++ b/src/build/maven/scala-compiler-interactive-pom.xml @@ -0,0 +1,59 @@ +<?xml version="1.0"?> +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.scala-lang.modules</groupId> + <artifactId>scala-compiler-interactive_@SCALA_BINARY_VERSION@</artifactId> + <packaging>jar</packaging> + <version>@SCALA_COMPILER_INTERACTIVE_VERSION@</version> + <name>Scala Interactive Compiler</name> + <description>Interactive Compiler for the Scala Programming Language</description> + <url>http://www.scala-lang.org/</url> + <inceptionYear>2002</inceptionYear> + <organization> + <name>LAMP/EPFL</name> + <url>http://lamp.epfl.ch/</url> + </organization> + <licenses> + <license> + <name>BSD 3-Clause</name> + <url>http://www.scala-lang.org/license.html</url> + <distribution>repo</distribution> + </license> + </licenses> + <scm> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> + </scm> + <issueManagement> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> + </issueManagement> + <dependencies> + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-compiler</artifactId> + <version>@VERSION@</version> + </dependency> + </dependencies> + <distributionManagement> + <repository> + <id>scala-tools.org</id> + <url>@RELEASE_REPOSITORY@</url> + </repository> + <snapshotRepository> + <id>scala-tools.org</id> + <url>@SNAPSHOT_REPOSITORY@</url> + <uniqueVersion>false</uniqueVersion> + </snapshotRepository> + </distributionManagement> + <developers> + <developer> + <id>lamp</id> + <name>EPFL LAMP</name> + </developer> + <developer> + <id>Typesafe</id> + <name>Typesafe, Inc.</name> + </developer> + </developers> +</project> diff --git a/src/build/maven/scala-compiler-pom.xml b/src/build/maven/scala-compiler-pom.xml index 442fe6a8d5..a16fe22343 100644 --- a/src/build/maven/scala-compiler-pom.xml +++ b/src/build/maven/scala-compiler-pom.xml @@ -35,23 +35,22 @@ <version>@VERSION@</version> </dependency> <dependency> - <!-- for scaladoc --> + <groupId>org.scala-lang</groupId> + <artifactId>scala-reflect</artifactId> + <version>@VERSION@</version> + </dependency> + <!-- TODO modularize compiler: these dependencies will disappear then the compiler is modularized --> + <dependency> <!-- for scala-compiler-doc --> <groupId>org.scala-lang.modules</groupId> <artifactId>scala-xml_@SCALA_BINARY_VERSION@</artifactId> <version>@XML_VERSION@</version> </dependency> - <dependency> - <!-- for scaladoc --> + <dependency> <!-- for scala-compiler-doc --> <groupId>org.scala-lang.modules</groupId> <artifactId>scala-parser-combinators_@SCALA_BINARY_VERSION@</artifactId> <version>@PARSER_COMBINATORS_VERSION@</version> </dependency> - <dependency> - <groupId>org.scala-lang</groupId> - <artifactId>scala-reflect</artifactId> - <version>@VERSION@</version> - </dependency> - <dependency> + <dependency> <!-- for scala-compiler-repl--> <groupId>jline</groupId> <artifactId>jline</artifactId> <version>@JLINE_VERSION@</version> diff --git a/src/interactive/scala/tools/nsc/interactive/Global.scala b/src/interactive/scala/tools/nsc/interactive/Global.scala index 736a1e68c4..94f9aef38b 100644 --- a/src/interactive/scala/tools/nsc/interactive/Global.scala +++ b/src/interactive/scala/tools/nsc/interactive/Global.scala @@ -13,7 +13,6 @@ import scala.tools.nsc.io.AbstractFile import scala.reflect.internal.util.{ SourceFile, BatchSourceFile, Position, NoPosition } import scala.tools.nsc.reporters._ import scala.tools.nsc.symtab._ -import scala.tools.nsc.doc.ScaladocAnalyzer import scala.tools.nsc.typechecker.Analyzer import symtab.Flags.{ACCESSOR, PARAMACCESSOR} import scala.annotation.{ elidable, tailrec } @@ -32,13 +31,6 @@ trait CommentPreservingTypers extends Typers { override def resetDocComments() = {} } -trait InteractiveScaladocAnalyzer extends InteractiveAnalyzer with ScaladocAnalyzer { - val global : Global - override def newTyper(context: Context) = new Typer(context) with InteractiveTyper with ScaladocTyper { - override def canAdaptConstantTypeToLiteral = false - } -} - trait InteractiveAnalyzer extends Analyzer { val global : Global import global._ diff --git a/src/interactive/scala/tools/nsc/interactive/tests/core/PresentationCompilerInstance.scala b/src/interactive/scala/tools/nsc/interactive/tests/core/PresentationCompilerInstance.scala index 9a2abd5139..29e546f9fe 100644 --- a/src/interactive/scala/tools/nsc/interactive/tests/core/PresentationCompilerInstance.scala +++ b/src/interactive/scala/tools/nsc/interactive/tests/core/PresentationCompilerInstance.scala @@ -7,22 +7,16 @@ import reporters.{Reporter => CompilerReporter} /** Trait encapsulating the creation of a presentation compiler's instance.*/ private[tests] trait PresentationCompilerInstance extends TestSettings { protected val settings = new Settings - protected val withDocComments = false protected val compilerReporter: CompilerReporter = new InteractiveReporter { override def compiler = PresentationCompilerInstance.this.compiler } - private class ScaladocEnabledGlobal extends Global(settings, compilerReporter) { - override lazy val analyzer = new { - val global: ScaladocEnabledGlobal.this.type = ScaladocEnabledGlobal.this - } with InteractiveScaladocAnalyzer - } + protected def createGlobal: Global = new Global(settings, compilerReporter) protected lazy val compiler: Global = { prepareSettings(settings) - if (withDocComments) new ScaladocEnabledGlobal - else new Global(settings, compilerReporter) + createGlobal } /** |