diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-12-09 11:06:22 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-12-09 17:11:05 -0800 |
commit | e55510607031aaf7b8473453f83c44a26c9b97e0 (patch) | |
tree | 987d4aeeef387ed435acc64ffadfdf78e6f65bce /docs/examples/plugintemplate | |
parent | dc6dd58d9da441b591580684f3d2f38d7898e7d4 (diff) | |
download | scala-e55510607031aaf7b8473453f83c44a26c9b97e0.tar.gz scala-e55510607031aaf7b8473453f83c44a26c9b97e0.tar.bz2 scala-e55510607031aaf7b8473453f83c44a26c9b97e0.zip |
Remove docs/examples; they reside at scala/scala-dist
Diffstat (limited to 'docs/examples/plugintemplate')
19 files changed, 0 insertions, 838 deletions
diff --git a/docs/examples/plugintemplate/.classpath b/docs/examples/plugintemplate/.classpath deleted file mode 100644 index e9069639ae..0000000000 --- a/docs/examples/plugintemplate/.classpath +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" path="src"/> - <classpathentry kind="src" path="doc/examples"/> - <classpathentry kind="src" path="test"/> - <classpathentry kind="con" path="ch.epfl.lamp.sdt.launching.SCALA_CONTAINER"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> - <classpathentry kind="lib" path="/Applications/eclipse-3.4M6a/plugins/ch.epfl.lamp.sdt.core_2.7.1.r14724-b20080421111118/lib/scala-compiler.jar"/> - <classpathentry kind="lib" path="lib/scalatest.jar"/> - <classpathentry kind="output" path="build/eclipse"/> -</classpath> diff --git a/docs/examples/plugintemplate/.project b/docs/examples/plugintemplate/.project deleted file mode 100644 index 075b0c580c..0000000000 --- a/docs/examples/plugintemplate/.project +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>plugintemplate</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>ch.epfl.lamp.sdt.core.scalabuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>ch.epfl.lamp.sdt.core.scalanature</nature> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> diff --git a/docs/examples/plugintemplate/build.xml b/docs/examples/plugintemplate/build.xml deleted file mode 100644 index 37c8441ce3..0000000000 --- a/docs/examples/plugintemplate/build.xml +++ /dev/null @@ -1,265 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<project name="plugintemplate" default="pack"> - <!-- Edit the file plugin.properties to set - - scala.home - - plugin.name - - plugin.commandname - - plugin.description - - plugin.mainclass - - version numbers - --> - <property file="${basedir}/plugin.properties"/> - - <property name="version" value="${version.major}.${version.minor}"/> - - <taskdef resource="scala/tools/ant/antlib.xml"> - <classpath> - <pathelement location="${scala.home}/lib/scala-compiler.jar"/> - <pathelement location="${scala.home}/lib/scala-library.jar"/> - </classpath> - </taskdef> - - - <!-- ================================================================= - End-user targets - ================================================================== --> - - <target name="build" depends="build.main"/> - <target name="build.all" depends="build.done"/> - <target name="test" depends="test.all"/> - <target name="guitest" depends="guitest.all"/> - <target name="doc" depends="doc.done"/> - <target name="pack" depends="pack.done"/> - <target name="dist" depends="dist.done"/> - <target name="clean" depends="clean.all"/> - - <!-- ================================================================= - Build targets - ================================================================== --> - - <target name="build.main"> - <mkdir dir="build/build.main"/> - <scalac srcdir="src" - destdir="build/build.main" - includes="**/*.scala"> - <classpath> - <pathelement location="${scala.home}/lib/scala-library.jar"/> - <pathelement location="${scala.home}/lib/scala-compiler.jar"/> - </classpath> - </scalac> - </target> - - <target name="build.test" depends="build.main"> - <mkdir dir="build/build.test"/> - <scalac srcdir="test" - destdir="build/build.test" - includes="**/*.scala"> - <classpath> - <pathelement location="${scala.home}/lib/scala-library.jar"/> - <pathelement location="${scala.home}/lib/scala-compiler.jar"/> - <pathelement location="lib/scalatest.jar"/> - <pathelement location="build/build.main"/> - </classpath> - </scalac> - </target> - - <target name="build.examples" depends="build.test"> - <mkdir dir="build/build.examples"/> - <scalac srcdir="doc/examples" - destdir="build/build.examples" - includes="**/*.scala"> - <classpath> - <pathelement location="${scala.home}/lib/scala-library.jar"/> - <pathelement location="${scala.home}/lib/scala-compiler.jar"/> - <pathelement location="build/build.main"/> - </classpath> - </scalac> - </target> - - <target name="build.done" depends="build.examples"/> - - <!-- ================================================================= - Test targets - ================================================================== --> - - <target name="test.all" depends="build.done"> - <!-- fork="true" is good for running the graphical mode --> - <java classname="org.scalatest.tools.Runner" fork="true"> - <classpath> - <pathelement location="${scala.home}/lib/scala-compiler.jar" /> - <pathelement location="${scala.home}/lib/scala-library.jar" /> - <pathelement location="lib/scalatest.jar" /> - <pathelement location="build/build.main" /> - <pathelement location="build/build.test" /> - </classpath> - - <arg value="-p" /> - <arg value="build/build.test" /> - - <arg value="-o" /> - </java> - </target> - - <target name="guitest.all" depends="build.done"> - <!-- fork="true" is good for running the graphical mode --> - <java classname="org.scalatest.tools.Runner" fork="true"> - <classpath> - <pathelement location="${scala.home}/lib/scala-compiler.jar" /> - <pathelement location="${scala.home}/lib/scala-library.jar" /> - <pathelement location="lib/scalatest.jar" /> - <pathelement location="build/build.main" /> - <pathelement location="build/build.test" /> - </classpath> - - <arg value="-p" /> - <arg value="build/build.test" /> - - <arg value="-g" /> - </java> - </target> - - <!-- ================================================================= - Doc targets - ================================================================== --> - - <target name="doc.main"> - <mkdir dir="doc/api"/> - <scaladoc srcdir="src" - destdir="doc/api" - includes="**/*.scala"> - <classpath> - <pathelement location="${scala.home}/lib/scala-library.jar"/> - <pathelement location="${scala.home}/lib/scala-compiler.jar"/> - </classpath> - </scaladoc> - </target> - - <target name="doc.done" depends="doc.main"/> - - <!-- ================================================================= - Pack targets - ================================================================== --> - - <target name="pack.main" depends="build.done"> - <mkdir dir="build/pack"/> - <jar destfile="build/pack/${plugin.name}.jar"> - <fileset dir="build/build.main"/> - <fileset file="plugin.properties"/> - <fileset file="misc/scalac-plugin.xml"/> - </jar> - </target> - - <target name="pack.src" depends="pack.main"> - <jar destfile="build/pack/${plugin.name}-src.jar" - basedir="src" - includes="**/*.scala"/> - </target> - - <target name="pack.done" depends="pack.src"/> - - <!-- ================================================================= - Dist targets - ================================================================== --> - - <target name="dist.bin" depends="test.all,pack.done,doc.done"> - <mkdir dir="build/toolscript"/> - <scalascript - file="build/toolscript/${plugin.commandname}" - class="${plugin.mainclass}"/> - <chmod dir="build/toolscript" perm="a+rx" excludes="*.bat"/> - </target> - - <target name="dist.archive" depends="dist.bin"> - <mkdir dir="build/dist"/> - <tar destfile="build/dist/${plugin.name}-${version}.tgz" - compression="gzip"> - <tarfileset prefix="lib" dir="build/pack" - includes="${plugin.name}.jar"/> - <tarfileset prefix="src" dir="build/pack" - includes="${plugin.name}-src.jar"/> - <tarfileset prefix="doc/${plugin.name}" dir="doc" - includes="README"/> - <tarfileset prefix="doc/${plugin.name}" dir="doc" - includes="examples/**"/> - <tarfileset prefix="doc/${plugin.name}" dir="doc" - includes="api/**"/> - <tarfileset prefix="bin" dir="build/toolscript" - includes="${plugin.commandname}" mode="755"/> - <tarfileset prefix="bin" dir="build/toolscript" - includes="${plugin.commandname}.bat"/> - <tarfileset prefix="misc/scala-devel/plugins" dir="build/pack" - includes="${plugin.name}.jar"/> - </tar> - </target> - - <target name="dist.sbaz" depends="dist.archive"> - <sbaz file="build/dist/${plugin.name}-${version}.sbp" - adfile="build/dist/${plugin.name}-${version}.advert" - name="${plugin.name}" - version="${version}" - depends="scala-devel" - desc="${plugin.description}" - link="${plugin.sbazbaseurl}/${plugin.name}-${version}.sbp"> - <libset dir="build/pack" includes="${plugin.name}.jar"/> - <srcset dir="build/pack" includes="${plugin.name}-src.jar"/> - <docset dir="doc" includes="README"/> - <docset dir="doc" includes="examples/**"/> - <docset dir="doc" includes="api/**"/> - <binset dir="build/toolscript"/> - <looseset destination="misc/scala-devel/plugins"> - <fileset file="build/pack/${plugin.name}.jar"/> - </looseset> - </sbaz> - </target> - - <target name="dist.done" depends="dist.sbaz"/> - - <!-- ================================================================= - Local installation - ================================================================== --> - - <target name="install" depends="dist.done"> - <exec executable="sbaz"> - <arg line="-v install -f build/dist/${plugin.name}-${version}.sbp"/> - </exec> - </target> - - <target name="uninstall"> - <exec executable="sbaz"> - <arg line="remove ${plugin.name}"/> - </exec> - </target> - - <!-- ================================================================= - Clean targets - ================================================================== --> - - <target name="clean.build"> - <delete dir="build/build.main" includeemptydirs="yes" - quiet="yes" failonerror="no"/> - <delete dir="build/build.test" includeemptydirs="yes" - quiet="yes" failonerror="no"/> - <delete dir="build/build.examples" includeemptydirs="yes" - quiet="yes" failonerror="no"/> - </target> - - <target name="clean.pack" depends="clean.build"> - <delete dir="build/pack" includeemptydirs="yes" - quiet="yes" failonerror="no"/> - </target> - - <target name="clean.dist" depends="clean.pack"> - <delete dir="build/dist" includeemptydirs="yes" - quiet="yes" failonerror="no"/> - <delete dir="build/toolscript" includeemptydirs="yes" - quiet="yes" failonerror="no"/> - </target> - - <target name="clean.doc"> - <delete dir="doc/api" includeemptydirs="yes" - quiet="yes" failonerror="no"/> - </target> - - <target name="clean.all" depends="clean.dist,clean.doc"/> -</project> diff --git a/docs/examples/plugintemplate/doc/README b/docs/examples/plugintemplate/doc/README deleted file mode 100644 index 958f71282b..0000000000 --- a/docs/examples/plugintemplate/doc/README +++ /dev/null @@ -1,68 +0,0 @@ -Scala compiler plugin template ------------------------------- - -This project is a template that can be used for creating compiler -plugins for the Scala compiler. - - -Installation ------------- -To install the compiler plugin, run "ant install". This will create -an sbaz package for the template plugin and install it in the scala -installation available in your PATH. -The install command will also create a script for running the plugin -as standalone application. The command is called "runplugintemplate" -and available in your scala installation as well. -To uninstall the plugin again, run "and uninstall". - -Alternatively, copy the file build/pack/plugintemplate.jar, generated -by "ant pack", to the directory misc/scala-devel/plugins of your -scala distribution. The scala compiler will then find and integrate -the new plugin. - -Customization -------------- -The following files need to be edited when creating a new plugin -- plugin.properties -- misc/scalac-plugin.xml -- src / test / doc/examples: The source files of the template plugin - are located a package called "plugintemplate". This will most likely - be changed for new plugins. - -When using eclipse for development, make sure "scala-compiler.jar" is -in the Java Build Path: Right-Click the project and select "Properties". -Then go to "Java Build Path" -> "Libraries" and add the jar file -"eclipse/plugins/ch.epfl.lamp.sdt.core[..]/lib/scala-compiler.jar". - -Traverse, Transform, Check --------------------------- -There are several pre-defined components that can be used to code -the behavior of a plugin: -- TemplateTraverseComponent: a template for tree traversers. Used - to analyze and collect data about compiler trees. - -> implement the "check" method - -- TemplateTransformComponent: a template for tree transformers. - -> implement "preTransform" and / or "postTransform" - -- TemplateInfoTransformComponent: also a tree transformer, which - additionally is an InfoTransformer. Allows changing the type - of some symbols for later phases. - -> implement "preTransform" and / or "postTransform", and the - "apply" method of the "infoTransformer". - -- TemplateAnnotationChecker: a plugin for the typechecker, useful - for pluggable type systems. Computes the subtyping between two - annotated types, and allows providing inferred type information. - -> implement "annotationsConform" and optionally "addAnnotations" - -- TemplateComponent: the most general component. Can do anything it - likes with the CompilationUnits. - -> implement the "run" method - -Ant tasks ---------- -"build.xml" defines Ant tasks for building, testing and packing a -plugin. The tests are written using the ScalaTest framework -(http://www.artima.com/scalatest/). -Run the tests using "ant test", or "ant guitest". diff --git a/docs/examples/plugintemplate/doc/examples/plugintemplate/examples/BasicExample.scala b/docs/examples/plugintemplate/doc/examples/plugintemplate/examples/BasicExample.scala deleted file mode 100644 index d1f6c91cdc..0000000000 --- a/docs/examples/plugintemplate/doc/examples/plugintemplate/examples/BasicExample.scala +++ /dev/null @@ -1,8 +0,0 @@ -package plugintemplate.examples - -/** An example demonstrating the fancy features of the new - * compiler plugin. - */ -class BasicExample { - def foo = () -} diff --git a/docs/examples/plugintemplate/lib/scalatest.jar.desired.sha1 b/docs/examples/plugintemplate/lib/scalatest.jar.desired.sha1 deleted file mode 100644 index 14c20f874f..0000000000 --- a/docs/examples/plugintemplate/lib/scalatest.jar.desired.sha1 +++ /dev/null @@ -1 +0,0 @@ -8b6ba65c8146217333f0762087fe2340d572e832 ?scalatest.jar diff --git a/docs/examples/plugintemplate/misc/scalac-plugin.xml b/docs/examples/plugintemplate/misc/scalac-plugin.xml deleted file mode 100644 index bad4e87327..0000000000 --- a/docs/examples/plugintemplate/misc/scalac-plugin.xml +++ /dev/null @@ -1,4 +0,0 @@ -<plugin> - <name>plugintemplate</name> - <classname>plugintemplate.TemplatePlugin</classname> -</plugin> diff --git a/docs/examples/plugintemplate/plugin.properties b/docs/examples/plugintemplate/plugin.properties deleted file mode 100644 index 131f96110f..0000000000 --- a/docs/examples/plugintemplate/plugin.properties +++ /dev/null @@ -1,10 +0,0 @@ -scala.home=../../../build/pack - -plugin.name=plugintemplate -plugin.commandname=runplugintemplate -plugin.description=A template compiler plugin saying hello to the World -plugin.mainclass=plugintemplate.standalone.Main -plugin.sbazbaseurl=http://scala.epfl.ch/downloads/packages - -version.major=0 -version.minor=1 diff --git a/docs/examples/plugintemplate/src/plugintemplate/PluginProperties.scala b/docs/examples/plugintemplate/src/plugintemplate/PluginProperties.scala deleted file mode 100644 index ed078a03d7..0000000000 --- a/docs/examples/plugintemplate/src/plugintemplate/PluginProperties.scala +++ /dev/null @@ -1,61 +0,0 @@ -package plugintemplate - -import java.util.Properties - -/** A utility to load properties of this plugin via the property - * file "plugin.properties" - */ -object PluginProperties { - private val propFilename = "plugin.properties" - - val pluginName = getOrElse("plugin.name", "(name_unknown)") - val pluginDescription = getOrElse("plugin.description", "(plugin description not found)") - val pluginCommand = getOrElse("plugin.commandname", "(command_unknown)") - val versionString = { - val default = "(version_unknown)" - props match { - case Some(p) => - val major = p.getProperty("version.major") - val minor = p.getProperty("version.minor") - if ((major eq null) || (minor eq null)) default - else major +"."+ minor - case None => default - } - } - - private def getOrElse(property: String, default: String) = { - props match { - case Some(p) if (p.getProperty(property) != null) => - p.getProperty(property) - case _ => - default - } - } - - private lazy val props: Option[Properties] = { - /** Running from JAR file: the properties file should be in the - * jar as well - */ - var stream = this.getClass.getResourceAsStream("/"+ propFilename) - if (stream == null) { - /** Running from .class files: expect classfiles to be in - * directory [...]/build/build.main, and [...] to contain - * the properties file. - */ - try { - val current = this.getClass.getClassLoader.getResource(".") - val dir = new java.io.File(current.toURI) - // dir will be [...]/build/build.main/ - stream = new java.io.FileInputStream(dir.getParentFile.getParent +"/"+ propFilename) - } catch { - case _ => () - } - } - if (stream == null) None - else { - val p = new Properties - p.load(stream) - Some(p) - } - } -} diff --git a/docs/examples/plugintemplate/src/plugintemplate/TemplateAnnotationChecker.scala b/docs/examples/plugintemplate/src/plugintemplate/TemplateAnnotationChecker.scala deleted file mode 100644 index 6cd3472675..0000000000 --- a/docs/examples/plugintemplate/src/plugintemplate/TemplateAnnotationChecker.scala +++ /dev/null @@ -1,20 +0,0 @@ -package plugintemplate - -import scala.tools.nsc.Global - -abstract class TemplateAnnotationChecker { - val global: Global - import global._ - - object checker extends AnnotationChecker { - def annotationsConform(tpe1: Type, tpe2: Type): Boolean = { - println("checking: "+ tpe1 +" <: "+ tpe2) - true - } - - override def addAnnotations(tree: Tree, tpe: Type): Type = { - println("adding annot to "+ tree.symbol) - tpe - } - } -} diff --git a/docs/examples/plugintemplate/src/plugintemplate/TemplateComponent.scala b/docs/examples/plugintemplate/src/plugintemplate/TemplateComponent.scala deleted file mode 100644 index b63f3203b5..0000000000 --- a/docs/examples/plugintemplate/src/plugintemplate/TemplateComponent.scala +++ /dev/null @@ -1,35 +0,0 @@ -package plugintemplate - -import scala.tools.nsc._ -import scala.tools.nsc.plugins.PluginComponent - -/** This class shows how to implement a compiler component that - * can be used in a compiler plugin. If the plugin uses a tree - * transformer and / or an InfoTransformer, look at the two - * classes <code>TemplateTransformComponent</code> and - * <code>TemplateInfoTransformComponent</code>. - * - * @todo Adapt the name of this class to the plugin, and implement it. - */ -class TemplateComponent(val global: Global) extends PluginComponent { - import global._ - - val runsAfter = List[String]("refchecks") - - /** The name of this plugin phase - * @todo Adapt to specific plugin. - */ - val phaseName = "plugintemplate" - - def newPhase(prev: Phase) = new Phase(prev) { - def name = phaseName - - /** The implementation of this Phase's behavior - * - * @todo Implementation. - */ - def run { - println("Hello from phase "+ name) - } - } -} diff --git a/docs/examples/plugintemplate/src/plugintemplate/TemplateInfoTransformComponent.scala b/docs/examples/plugintemplate/src/plugintemplate/TemplateInfoTransformComponent.scala deleted file mode 100644 index 71069aed6f..0000000000 --- a/docs/examples/plugintemplate/src/plugintemplate/TemplateInfoTransformComponent.scala +++ /dev/null @@ -1,79 +0,0 @@ -package plugintemplate - -import scala.tools.nsc._ -import scala.tools.nsc.plugins.PluginComponent -import scala.tools.nsc.transform.InfoTransform -// import scala.tools.nsc.transform.TypingTransformers - -/** This class implements a plugin component using tree transformers and - * InfoTransformer. An InfoTransformer will be automatically created - * and registered in <code>SymbolTable.infoTransformers</code>. If - * a <code>Typer</code> is needed during transformation, the component - * should mix in <code>TypingTransformers</code>. This provides a local - * variable <code>localTyper: Typer</code> that is always updated to - * the current context. - * - * @todo Adapt the name of this class to the plugin, and implement it. - */ -class TemplateInfoTransformComponent(val global: Global) extends PluginComponent - // with TypingTransformers - with InfoTransform { - - import global._ - import global.definitions._ - - val runsAfter = List[String]("refchecks") - /** The phase name of the compiler plugin - * @todo Adapt to specific plugin. - */ - val phaseName = "plugintemplateinfotransform" - - def transformInfo(sym: Symbol, tp: Type): Type = infoTransformer.mapOver(tp) - - def newTransformer(unit: CompilationUnit) = new TemplateTransformer - - /** The type transformation applied by this component. The trait InfoTransform - * will create an instance of InfoTransformer applying this TypeMap. The type - * map will be applied when computing a symbol's type in all phases - * <em>after</em> "plugintemplateinfotransform". - * - * @todo Implement. - */ - private val infoTransformer = new TypeMap { - def apply(tp: Type): Type = tp match { - case MethodType(pts, rt) => - println("methodType (_, _, ..) => "+ rt) - tp - case _ => mapOver(tp) - } - } - - /** The tree transformer that implements the behavior of this - * component. Change the superclass to <code>TypingTransformer</code> - * to make a local typechecker <code>localTyper</code> available. - * - * @todo Implement. - */ - class TemplateTransformer extends /*Typing*/ Transformer { - /** When using <code>preTransform</code>, each node is - * visited before its children. - */ - def preTransform(tree: Tree): Tree = tree match { - case ValDef(_, name, _, _) => - println("pre-info-transforming valdef "+ name) - tree - case _ => tree - } - - /** When using <code>postTransform</code>, each node is - * visited after its children. - */ - def postTransform(tree: Tree): Tree = tree match { - case _ => tree - } - - override def transform(tree: Tree): Tree = { - postTransform(super.transform(preTransform(tree))) - } - } -} diff --git a/docs/examples/plugintemplate/src/plugintemplate/TemplatePlugin.scala b/docs/examples/plugintemplate/src/plugintemplate/TemplatePlugin.scala deleted file mode 100644 index 6cda37d4e3..0000000000 --- a/docs/examples/plugintemplate/src/plugintemplate/TemplatePlugin.scala +++ /dev/null @@ -1,52 +0,0 @@ -package plugintemplate - -import scala.tools.nsc.Global -import scala.tools.nsc.plugins.Plugin - -/** A class describing the compiler plugin - * - * @todo Adapt the name of this class to the plugin being - * implemented - */ -class TemplatePlugin(val global: Global) extends Plugin { - /** The name of this plugin. Extracted from the properties file. */ - val name = PluginProperties.pluginName - - val runsAfter = List[String]("refchecks") - - /** A short description of the plugin, read from the properties file */ - val description = PluginProperties.pluginDescription - - /** @todo A description of the plugin's options */ - override val optionsHelp = Some( - " -P:"+ name +":option sets some option for this plugin") - - /** @todo Implement parsing of plugin options */ - override def processOptions(options: List[String], error: String => Unit) { - super.processOptions(options, error) - } - - /** The compiler components that will be applied when running - * this plugin - * - * @todo Adapt to the plugin being implemented - */ - val components = TemplatePlugin.components(global) - - val checker = new TemplateAnnotationChecker { - val global: TemplatePlugin.this.global.type = TemplatePlugin.this.global - } - global.addAnnotationChecker(checker.checker) -} - -object TemplatePlugin { - /** Yields the list of Components to be executed in this plugin - * - * @todo: Adapt to specific implementation. - */ - def components(global: Global) = - List(new TemplateComponent(global), - new TemplateTraverseComponent(global), - new TemplateTransformComponent(global), - new TemplateInfoTransformComponent(global)) -} diff --git a/docs/examples/plugintemplate/src/plugintemplate/TemplateTransformComponent.scala b/docs/examples/plugintemplate/src/plugintemplate/TemplateTransformComponent.scala deleted file mode 100644 index 7c2630dc16..0000000000 --- a/docs/examples/plugintemplate/src/plugintemplate/TemplateTransformComponent.scala +++ /dev/null @@ -1,58 +0,0 @@ -package plugintemplate - -import scala.tools.nsc._ -import scala.tools.nsc.plugins.PluginComponent -import scala.tools.nsc.transform.Transform -// import scala.tools.nsc.transform.TypingTransformers - -/** This class implements a plugin component using tree transformers. If - * a <code>Typer</code> is needed during transformation, the component - * should mix in <code>TypingTransformers</code>. This provides a local - * variable <code>localTyper: Typer</code> that is always updated to - * the current context. - * - * @todo Adapt the name of this class to the plugin, and implement it. - */ -class TemplateTransformComponent(val global: Global) extends PluginComponent - // with TypingTransformers - with Transform { - import global._ - import global.definitions._ - - val runsAfter = List[String]("refchecks") - /** The phase name of the compiler plugin - * @todo Adapt to specific plugin. - */ - val phaseName = "plugintemplatetransform" - - def newTransformer(unit: CompilationUnit) = new TemplateTransformer - - /** The tree transformer that implements the behavior of this - * component. Change the superclass to <code>TypingTransformer</code> - * to make a local typechecker <code>localTyper</code> available. - * - * @todo Implement. - */ - class TemplateTransformer extends /*Typing*/ Transformer { - /** When using <code>preTransform</code>, each node is - * visited before its children. - */ - def preTransform(tree: Tree): Tree = tree match { - case _ => tree - } - - /** When using <code>postTransform</code>, each node is - * visited after its children. - */ - def postTransform(tree: Tree): Tree = tree match { - case New(tpt) => - println("post-transforming new "+ tpt) - tree - case _ => tree - } - - override def transform(tree: Tree): Tree = { - postTransform(super.transform(preTransform(tree))) - } - } -} diff --git a/docs/examples/plugintemplate/src/plugintemplate/TemplateTraverseComponent.scala b/docs/examples/plugintemplate/src/plugintemplate/TemplateTraverseComponent.scala deleted file mode 100644 index 400daf7437..0000000000 --- a/docs/examples/plugintemplate/src/plugintemplate/TemplateTraverseComponent.scala +++ /dev/null @@ -1,32 +0,0 @@ -package plugintemplate - -import scala.tools.nsc._ -import scala.tools.nsc.plugins.PluginComponent - -/** This class implements a plugin component using a tree - * traverser */ -class TemplateTraverseComponent (val global: Global) extends PluginComponent { - import global._ - import global.definitions._ - - val runsAfter = List[String]("refchecks") - /** The phase name of the compiler plugin - * @todo Adapt to specific plugin. - */ - val phaseName = "plugintemplatetraverse" - - def newPhase(prev: Phase): Phase = new TraverserPhase(prev) - class TraverserPhase(prev: Phase) extends StdPhase(prev) { - def apply(unit: CompilationUnit) { - newTraverser().traverse(unit.body) - } - } - - def newTraverser(): Traverser = new ForeachTreeTraverser(check) - - def check(tree: Tree): Unit = tree match { - case Apply(fun, args) => - println("traversing application of "+ fun) - case _ => () - } -} diff --git a/docs/examples/plugintemplate/src/plugintemplate/standalone/Main.scala b/docs/examples/plugintemplate/src/plugintemplate/standalone/Main.scala deleted file mode 100644 index 0bfcbf53c7..0000000000 --- a/docs/examples/plugintemplate/src/plugintemplate/standalone/Main.scala +++ /dev/null @@ -1,44 +0,0 @@ -package plugintemplate.standalone - -import plugintemplate.PluginProperties -import scala.tools.nsc.CompilerCommand -import scala.tools.nsc.Settings - -/** An object for running the plugin as standalone application. - * - * @todo: print, parse and apply plugin options !!! - * ideally re-use the TemplatePlugin (-> runsAfter, optionsHelp, - * processOptions, components, annotationChecker) instead of - * duplicating it here and in PluginRunner. - */ -object Main { - def main(args: Array[String]) { - val settings = new Settings - - val command = new CompilerCommand(args.toList, settings) { - /** The command name that will be printed in the usage message. - * This is automatically set to the value of 'plugin.commandname' in the - * file build.properties. - */ - override val cmdName = PluginProperties.pluginCommand - } - - if (!command.ok) - return() - - /** The version number of this plugin is read from the properties file - */ - if (settings.version.value) { - println(command.cmdName +" version "+ PluginProperties.versionString) - return() - } - if (settings.help.value) { - println(command.usageMsg) - return() - } - - val runner = new PluginRunner(settings) - val run = new runner.Run - run.compile(command.files) - } -} diff --git a/docs/examples/plugintemplate/src/plugintemplate/standalone/PluginRunner.scala b/docs/examples/plugintemplate/src/plugintemplate/standalone/PluginRunner.scala deleted file mode 100644 index 06fe669cbd..0000000000 --- a/docs/examples/plugintemplate/src/plugintemplate/standalone/PluginRunner.scala +++ /dev/null @@ -1,36 +0,0 @@ -package plugintemplate.standalone - -import plugintemplate.{TemplateAnnotationChecker, TemplatePlugin} -import scala.tools.nsc.{Global, Settings, SubComponent} -import scala.tools.nsc.reporters.{ConsoleReporter, Reporter} - -/** This class is a compiler that will be used for running - * the plugin in standalone mode. - */ -class PluginRunner(settings: Settings, reporter: Reporter) -extends Global(settings, reporter) { - def this(settings: Settings) = this(settings, new ConsoleReporter(settings)) - - val annotChecker = new TemplateAnnotationChecker { - val global: PluginRunner.this.type = PluginRunner.this - } - addAnnotationChecker(annotChecker.checker) - - /** The phases to be run. - * - * @todo: Adapt to specific plugin implementation - */ - override protected def computeInternalPhases() { - phasesSet += syntaxAnalyzer - phasesSet += analyzer.namerFactory - phasesSet += analyzer.typerFactory - phasesSet += superAccessors // add super accessors - phasesSet += pickler // serialize symbol tables - phasesSet += refChecks // perform reference and override checking, translate nested objects - - for (phase <- TemplatePlugin.components(this)) { - phasesSet += phase - } - } - -} diff --git a/docs/examples/plugintemplate/test/plugintemplate/PluginPropertiesSuite.scala b/docs/examples/plugintemplate/test/plugintemplate/PluginPropertiesSuite.scala deleted file mode 100644 index a07796a7f2..0000000000 --- a/docs/examples/plugintemplate/test/plugintemplate/PluginPropertiesSuite.scala +++ /dev/null @@ -1,14 +0,0 @@ -package plugintemplate - -import org.scalatest.Suite - -class PluginPropertiesSuite extends Suite { - def testProperties() { - expect("A template compiler plugin saying hello to the World") { - PluginProperties.pluginDescription - } - expect("0.1") { - PluginProperties.versionString - } - } -} diff --git a/docs/examples/plugintemplate/test/plugintemplate/TemplatePluginSuite.scala b/docs/examples/plugintemplate/test/plugintemplate/TemplatePluginSuite.scala deleted file mode 100644 index 06916f9dd3..0000000000 --- a/docs/examples/plugintemplate/test/plugintemplate/TemplatePluginSuite.scala +++ /dev/null @@ -1,22 +0,0 @@ -package plugintemplate - -import org.scalatest.Suite -import org.scalatest.Ignore - -class TemplatePluginSuite extends Suite { - def testName() { - import scala.tools.nsc.{Global, Settings} - import scala.tools.nsc.reporters.ConsoleReporter - val settings = new Settings - val compiler = new Global(settings, new ConsoleReporter(settings)) - val plugin = new TemplatePlugin(compiler) - expect("plugintemplate") { - plugin.name - } - } - - @Ignore - def testFail() { - expect(1) { 2 } - } -} |