diff options
-rw-r--r-- | build.xml | 6 | ||||
-rw-r--r-- | src/build/four.xml | 32 | ||||
-rw-r--r-- | src/build/msil.xml | 38 | ||||
-rw-r--r-- | src/dotnet-library/scala/List.scala | 2 |
4 files changed, 60 insertions, 18 deletions
@@ -1015,11 +1015,13 @@ FORWARDED TARGETS FOR PACKAGING <ant antfile="${src.dir}/build/pack.xml" target="pack-all.done" inheritall="yes" inheritrefs="yes"/> </target> - <target name="fourdistpack" depends="fourdist"> + <target name="fourdistpack" depends="pack.done"> + <ant antfile="${src.dir}/build/four.xml" target="four-dist.done" inheritall="yes" inheritrefs="yes"/> <ant antfile="${src.dir}/build/pack.xml" target="fourpack-all.done" inheritall="yes" inheritrefs="yes"/> </target> - <target name="msildistpack" depends="msildist"> + <target name="msildistpack" depends="pack.done"> + <ant antfile="${src.dir}/build/msil.xml" target="msil-dist.done" inheritall="yes" inheritrefs="yes"/> <ant antfile="${src.dir}/build/pack.xml" target="msilpack-all.done" inheritall="yes" inheritrefs="yes"/> </target> diff --git a/src/build/four.xml b/src/build/four.xml index 6e31124203..6dd92f34f4 100644 --- a/src/build/four.xml +++ b/src/build/four.xml @@ -21,17 +21,37 @@ PROPERTIES <!-- =========================================================================== JAVA 1.4 LIBRARY AND COMPILER BUILD (FOUR) ============================================================================ --> - + <target name="four.start"/> - + <target name="four.src" depends="four.start"> + <!-- simple sync & copy overwrite is not very nice, because overwritten files + will then have a new timestamp, and be recompiled --> <mkdir dir="${build-four-src.dir}"/> - <sync todir="${build-four-src.dir}"> - <fileset dir="${src.dir}/library"/> - </sync> <copy todir="${build-four-src.dir}" overwrite="true"> - <fileset dir="${src.dir}/jvm14-library"/> + <fileset dir="${src.dir}/library"> + <and> + <present present="srconly" targetdir="${src.dir}/jvm14-library"/> + <different targetdir="${build-four-src.dir}" ignoreFileTimes="true"/> + </and> + </fileset> + <fileset dir="${src.dir}/jvm14-library"> + <different targetdir="${build-four-src.dir}" ignoreFileTimes="true"/> + </fileset> </copy> + <delete verbose="true"> + <difference> + <fileset dir="${build-four-src.dir}"/> + <union> + <fileset dir="${build-four-src.dir}"> + <present targetdir="${src.dir}/jvm14-library"/> + </fileset> + <fileset dir="${build-four-src.dir}"> + <present targetdir="${src.dir}/library"/> + </fileset> + </union> + </difference> + </delete> </target> <target name="four.lib" depends="four.src"> diff --git a/src/build/msil.xml b/src/build/msil.xml index 9167908304..a5e179e57b 100644 --- a/src/build/msil.xml +++ b/src/build/msil.xml @@ -6,11 +6,12 @@ SuperSabbus extension for the MSIL library targeted for the dotnet framework. THIS FILE IS NOT STAND-ALONE AND SHOULD ONLY BE USED THROUGH ENTRY POINTS IN SUPERSABBUS. </description> - <!-- TODO: run test suite (or at least a part of it) on .NET --> - <!-- TODO: generate sbaz package scala-msil --> <!-- TODO: test / make it work on Windows (use <ilasm/> task) --> - <!-- TODO: (?) generate the runner scripts with scala.tools.ant.ScalaTool --> + <!-- TODO: for separate compilation: make sure only files that have been changed + since last run are re-compiled --> + <!-- TODO: run test suite (or at least a part of it) on .NET --> <!-- TODO: generate scaladoc of .NET library --> + <!-- TODO: (?) generate the runner scripts with scala.tools.ant.ScalaTool --> <!-- =========================================================================== PROPERTIES @@ -95,13 +96,33 @@ MSIL BUILD <target name="msil.start" depends="msil.init"/> <target name="msil.src" depends="msil.start"> + <!-- simple sync & copy overwrite is not very nice, because overwritten files + will then have a new timestamp, and be recompiled --> <mkdir dir="${build-msil-src.dir}"/> - <sync todir="${build-msil-src.dir}"> - <fileset dir="${src.dir}/library"/> - </sync> <copy todir="${build-msil-src.dir}" overwrite="true"> - <fileset dir="${src.dir}/dotnet-library"/> + <fileset dir="${src.dir}/library"> + <and> + <present present="srconly" targetdir="${src.dir}/dotnet-library"/> + <different targetdir="${build-msil-src.dir}" ignoreFileTimes="true"/> + </and> + </fileset> + <fileset dir="${src.dir}/dotnet-library"> + <different targetdir="${build-msil-src.dir}" ignoreFileTimes="true"/> + </fileset> </copy> + <delete verbose="true"> + <difference> + <fileset dir="${build-msil-src.dir}"/> + <union> + <fileset dir="${build-msil-src.dir}"> + <present targetdir="${src.dir}/dotnet-library"/> + </fileset> + <fileset dir="${build-msil-src.dir}"> + <present targetdir="${src.dir}/library"/> + </fileset> + </union> + </difference> + </delete> </target> <target name="msil.lib" depends="msil.src"> @@ -113,8 +134,7 @@ MSIL BUILD srcdir="${build-msil-src.dir}" destdir="${build-msil.dir}/library" target="msil" - assemname="predef" assemrefs="${lib.dir}" - failonerror="false"> + assemname="predef" assemrefs="${lib.dir}"> <include name="**/*.scala"/> <exclude name="scala/ScalaObject.scala"/> </scalac> diff --git a/src/dotnet-library/scala/List.scala b/src/dotnet-library/scala/List.scala index 28228cc2f8..dea3a9a255 100644 --- a/src/dotnet-library/scala/List.scala +++ b/src/dotnet-library/scala/List.scala @@ -450,7 +450,7 @@ sealed abstract class List[+A] extends Seq[A] { * @param x the element to append. * @return the list with <code>x</code> added at the end. */ - def +[B >: A](x: B): List[B] = + override def +[B >: A](x: B): List[B] = if (isEmpty) List(x) else { val buf = new ListBuffer[B] |