Commit Graph

478 Commits

Author SHA1 Message Date
Mark Harrah 4bf4a80b5e Deleted unused type parsing class 2013-07-09 14:55:30 -04:00
Mark Harrah 931c297f52 make APIDiff private[inc] 2013-06-25 08:13:06 -04:00
Grzegorz Kossakowski 0d2dc75115 Make api diff context size valuable configurable.
Add `apiDiffContextSize` option to `IncOptions` which allows one
to control the size (in lines) of a context used when printing
diffs for textual API representation.

The default value for `apiDiffContextSize` is 5 which seems to be
enough for most situations. This is verified by many debugging
sessions I performed when using api diffing functionality.
2013-06-25 00:04:45 -07:00
Grzegorz Kossakowski 025eae9103 Log API diffs using ShowAPI and java-diff-utils library.
Implement displaying API changes by using textual representation
of an API (ShowAPI) and good, old textual diff algorithm. We are
using java-diff-utils library that is distributed under Apache 2.0
license.

Notice that we have only soft dependency on java-diff-utils. It means
that we'll try to lookup java-diff-utils class through reflection
and fail gracefully if none is found on the classpath. This way
sbt is not getting any new dependency. If user needs to debug
api diffs then it's matter of starting sbt with
`-Dsbt.extraClasspath=path/to/diffutils.jar` option passed
to sbt launcher.
2013-06-25 00:04:39 -07:00
xuwei-k 3f2133729b allow java varargs main
http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.1.4
2013-06-16 15:47:47 -04:00
Mark Harrah cd2b1edf6c IncOptions class backup directory should be per-compilation, not shared.
Otherwise, one concurrent compilation will clean the directory out from under another.
2013-05-30 15:00:26 -04:00
Mark Harrah 0a7a579f5b Merge ExtendedReporter into Reporter. 2013-05-27 19:12:39 -04:00
Mark Harrah d2d406969b Make imports from MurmurHash explicit for clarity. 2013-05-27 19:12:39 -04:00
Mark Harrah 7088a7dd5a test cases for Java inherited dependency extraction 2013-05-02 12:01:01 -04:00
Mark Harrah 626038bece Merge branch 'feature/inc-track-inherit' into 0.13 2013-05-01 19:25:01 -04:00
Mark Harrah a867d8e87c extract public inherited dependencies from Java class files 2013-05-01 17:54:10 -04:00
Mark Harrah 435bd1d587 Only invalidate package objects that inherit from invalidated files.
Originally described in cf355f1822.
2013-05-01 09:35:53 -04:00
Mark Harrah 0b876cc57d fix compiler interface compatibility with 2.11 2013-04-27 16:27:57 -04:00
Mark Harrah bedc8dbb10 Push full transitive invalidation out a step since step 3 is now relatively cheap. 2013-04-26 22:36:15 -04:00
Mark Harrah 658c3d06c4 Use public inherited dependencies in incremental compilation invalidation.
1. All parents of public/exported classes/modules/packages are tracked as
   'publicInherited' dependencies.  These are dealiased and normalized so
    that the dependency is on the actual underlying template and not the
    source enclosing the alias.
2. All CompilationUnit.depends dependencies are direct dependencies.  These
   include inherited dependencies.
3. When invalidating changed internal sources,
	a. Invalidate all inherited dependencies, transitively and include the
      originally modified sources,
	b. Invalidate all direct dependencies of these sources,
	c. Exclude any sources that were compiled in the previous step unless they
      depend on a newly invalidated source.
4. Invalidate changed external sources in the same way as #3 but remove the
   external sources from the final set.

Only public inheritance dependencies need to be considered because a template
that is not accessible outside its source file and that inherits from another
file can be handled as a normal, direct dependency.  Because the template
isn't public, changes to its API will not propagate outside of the source
file.

Several existing tests cover the correctness, especially:

1. transitive-a covers direct, transitive dependencies with inferred return
   types
2. transitive-b covers inherited, transitive dependencies with inferred return
   types

There are two new tests, one that tests that public inherited dependencies are
tracked and one that verifies the basic invalidation progression.
More tests are needed to verify the improvements that this algorithm brings:

1. Inheritance-related dependencies are processed in one step to avoid the
   otherwise unavoidable several steps.
2. Only immediate direct dependencies are ever processed, which should in many
   typical cases avoid large invalidation sets.
2013-04-26 22:36:06 -04:00
Mark Harrah 4dc75343ae Record and persist public inheritance dependencies.
Includes placeholders for adding public inherited dependencies for Java classes.
2013-04-26 22:35:27 -04:00
Mark Harrah c355bef200 Track public inherited dependencies.
There is a public inherited dependency on each (normalized) base
class of a public template (class, module, trait, structural type).
2013-04-26 22:35:27 -04:00
Mark Harrah 0e1f211fe5 move to compiler's built-in moduleSuffix method 2013-04-26 18:52:16 -04:00
Grzegorz Kossakowski 3ba9348740 Do not normalize types in the api extraction phase.
In summary this commit:

  * drops type normalization in api phase but keeps dealiasing
  * fixes #736 and marks corresponding test as passing

I discussed type normalization with @adriaanm and according to him
sbt shouldn't call that method. The purpose of this method to
convert to a form that subtyping algorithm expects. Sbt doesn't need
to call it and it's fairly expensive in some cases.

Dropping type normalization also fixes #726 by not running into
stale cache in Scala compiler problem described in SI-7361.
2013-04-27 00:31:31 +02:00
Grzegorz Kossakowski fbe4dedd11 Remove trailing whitespace in API.scala 2013-04-27 00:31:31 +02:00
Mark Harrah bef8ce05b9 Properly track 'abstract override' modifier. Ref #726. 2013-04-15 14:12:15 -04:00
Mark Harrah 77001a4259 drop canonicalization of files on classpath and other cleanup. Fixes #723. 2013-04-09 20:13:06 -04:00
Mark Harrah 6def08e029 remove resident compiler code
The infrastructure for resident compilation still exists,
but the actual scalac-side code that was backported is removed.
Future work on using a resident scalac will use that invalidation
code directly from scalac anyway.
2013-04-09 20:13:06 -04:00
Mark Harrah d7971f6857 temporary option to disable classpath lookup in incremental compiler. Ref #710. 2013-03-14 16:47:46 -04:00
Mark Harrah 6b7fbfe779 Provided details of why external binaries are detected as modified in incremental compiler debug output. 2013-03-13 12:40:03 -04:00
Mark Harrah c9c392d424 toString for Stamp types 2013-03-13 12:40:03 -04:00
Mark Harrah 008c2928b6 note that mixing RangePositions into Global isn't necessary in 2.11 2013-03-13 12:40:03 -04:00
Mark Harrah 925ec98900 Restore class files after an unsuccessful compilation.
This is useful when an error occurs in a later incremental step that
requires a fix in the originally changed files.

CC @gkossakowski
2013-03-04 07:24:31 -05:00
Mark Harrah f2d29d8678 Export approximate command lines executed for 'doc', 'compile', and 'console' 2013-02-28 17:59:38 -05:00
Mark Harrah 1870edfd27 more deprecations 2013-02-26 07:39:23 -05:00
Mark Harrah f6d73128fc deprecations 2013-02-25 09:24:04 -05:00
Mark Harrah a1c70c7462 Include jars from java.ext.dirs in incremental classpath. Fixes #678.
Ideally, we wouldn't need to construct the classpath ourselves and instead
reuse the classpath construction code from a compiler (scalac or javac).
However, we need to ensure that we only call the compiler when needed.
Because we need to construct the classpath even when compilation might
not happen, we have to duplicate classpath construction.
2013-02-22 16:31:32 -05:00
Mark Harrah 6e30bd7842 short-circuit the macro check in the incremental compiler if the source isn't a Scala source file 2013-02-22 16:31:32 -05:00
Grzegorz Kossakowski 4c261d360f Revert "Revert "Fix sbt/sbt#676: swapped declarations and members in `ClassToAPI`.""
This reverts commit 9dd5f076ea which was a revert
itself so we are back to the state before those two reverts.

The problem that caused revert that happened in 9dd5f076ea
has been fixed in 88061dd262.
2013-02-22 07:36:55 -05:00
Grzegorz Kossakowski 129df3e812 Fix problem with initialization order in `ClassToAPI.scala`.
In `ClassToAPI` both `Private` and `Protected` vals had forward
reference to `Unqualified` so they would get `null` as a result.
Fixed that by rearranging the order of vals being declared.

This fixes a problem described in 9dd5f076ea.
2013-02-22 07:36:55 -05:00
Mark Harrah 9dd5f076ea Revert "Fix sbt/sbt#676: swapped declarations and members in `ClassToAPI`."
This reverts commit beb87f2789.  It causes java/options to fail.

CC @gkossakowski
2013-02-21 20:44:54 -05:00
Grzegorz Kossakowski 5119ea2574 Mark inherited definitions in `ShowAPI`.
Mark every inherited definition with `^inherited^` marker. This helps
understanding `ShowAPI`s output.
2013-02-20 10:52:28 -05:00
Grzegorz Kossakowski f101bcd3d0 Show some of inherited members of a structure in `ShowAPI.scala`
Showing inherited members of a structure was disabled so we would not
run into cycles. To best of my knowledge, we can run into cycles only
if inherited member is `ClassLike`. We filter out those and let
anything else to be shown.
2013-02-20 10:52:27 -05:00
Grzegorz Kossakowski beb87f2789 Fix sbt/sbt#676: swapped declarations and members in `ClassToAPI`.
As described in sbt/sbt#676, arguments to `mergeMap` and `merge` methods
were swapped causing wrong structures being created for Java compiled
class files.

This commit fixes sbt/sbt#676 and makes pending test to pass now.
2013-02-20 10:52:27 -05:00
Grzegorz Kossakowski f885458f37 Do not minimize APIs if API debugging option is enabled.
That's foundation for API dumping and tests based on API representation contents.

Specific list of changes introduced by this commit:
  * `AnalysisCallback` class takes `IncOptions` as argument so it
    can determine if API should be minimized in `api` callback.
  * Introduce `Incremental.apiDebug` method that determines if api debugging
    is enabled. There are two ways to enable api debugging: through system
    property and through incremental compiler options. The system property
    method will be soon deprecated. We introduce it to make it easier to enable
    API debugging until tools (like zinc and ide) catch up with making incremental
    compiler configurable.

NOTE: The `apiDebug` method has been introduced in Incremental for two reasons:
  1. It's analogous to `incDebug` method that's already there.
  2. In other branch I need `apiDebug` to be defined in Incremental.

Once we deprecate and remove enabling debugging options through system properties
the code will be cleaned up.
2013-02-20 10:52:27 -05:00
Grzegorz Kossakowski f3d2df0f9c Use `IncOptions` for `transitiveStep` and `recompileAllFraction`
Recently introduced IncOptions allow us to make both transitiveStep
and recompileAllFraction configurable in incremental compiler.
2013-02-19 12:23:07 -05:00
Grzegorz Kossakowski 70036812ab Introduce incremental compiler options.
Introduce a way to configure incremental compiler itself instead
of underlying Java/Scala compiler.

Specific list of changes in this commit:
  * Add a method to `xsbti.compile.Setup` that returns incremental
    compiler options as a `java.util.Map<String, String>`. We considered
    statis interface instead of a `Map` but based on mailing
    list feedback we decided that it's not the best way to go because
    static interface is hard to evolve it by adding new options.
  * Since passing `java.util.Map<String, String>` not very convenient
    we convert it immediately to `sbt.inc.IncOptions`
  * Add options argument to various methods/classes that implement
    incremental compilation so in the end options reach
    `sbt.inc.IncOptions` object
  * Add `incOptions` task that allows users to configure incremental
    compiler options in their build files. Default implementation of
    that tasks returns just `IncOptions.DEFAULT`
  * Both system property `xsbt.inc.debug` and `IncOptions.relationsDebug`
    trigger debugging of relations now. In the near future, we should
    deprecate use of `xsbt.inc.debug`.
2013-02-19 12:23:07 -05:00
Grzegorz Kossakowski 4fe0c02536 Break long argument list into multiple lines.
Some methods take a lot of arguments and I'm about to add one more
which will make them too long for easy reading.

This change is changes code formatting only. That's done on purpose
to make it easier to review other changes.
2013-02-19 12:18:26 -05:00
Grzegorz Kossakowski d6f4c5ae4f Strip down trailing whitespace.
I have Eclipse configured to do that automatically when saving file.
I decided to finally commit those changes to files I touch a lot.
2013-02-19 12:18:26 -05:00
Jason Zaugg c597b48eda Stop using Predef.error
We'd like to remove this from 2.11.0.

This patch should be backported to 0.12.3.
2013-01-28 22:29:48 +01:00
Paolo G. Giarrusso 19aaaea923 Fix compile error in Eclipse
Let's consider compile/inc/src/main/scala/sbt/CompileSetup.scala.
There are multiple Output types, and according to Eclipse importing
xsbti.compile.Output within the package sbt does not work because the
import is shadowed by sbt.Output.

However, compilation proceeds just fine within SBT. Reproducing the
example however gives the same warning, if the files are in the same
project. The problem here is probably that the shadowing Output
is declared in the same package but in another project, and that seems
to give different results in Eclipse and SBT, but relying on
that looks fragile.
Reading the spec is inconclusive since it doesn't match with Scalac's
behavior — see
https://groups.google.com/d/topic/scala-internals/-Rquc2HBYLk/discussion .

ForkTests has the same behavior as CompileSetup.
2013-01-22 09:05:15 -05:00
Mark Harrah 070a87dda4 Call non-deprecated isRawType instead of isRaw 2013-01-16 10:26:32 -05:00
Mark Harrah cf355f1822 Fix incremental compilation problem with package objects inheriting from invalidated sources in a subpackage.
Resolution of https://issues.scala-lang.org/browse/SI-4695 seems to be to deprecate
inheriting from a class in a subpackage.  This commit is an alternative solution,
possibly to be reverted or restricted if resolution of SI-4695 changes or if this
proves to be too conservative in practice.

Review by @gkossakowski.  With separate inheritance/function call dependency tracking,
this probably should only pull in package objects with inheritance dependencies on
invalidated files.
2012-12-19 10:17:56 -05:00
Mark Harrah 329b42453b move Eval test to correct location 2012-12-19 10:17:56 -05:00
Mark Harrah 71f12fbcdb 2.9 compatibility for incremental compilation modules 2012-12-11 14:41:22 -05:00
Grzegorz Kossakowski 4c1c31e190 Fix for dependency on class file corresponding to a package. (#620)
While trying to determine binary dependencies sbt lookups class files
corresponding to symbols. It tried to do that for packages and most of the
time would fail because packages don't have corresponding class file
generated. However, in case of case insensitive file system, combined
with special nesting structure you could get spurious dependency.
See added test case for an example of such structure.

The remedy is to never even try to locate class files corresponding to
packages.

Fixes #620.
2012-12-10 13:53:52 -05:00
Grzegorz Kossakowski 78b0f485fa Add `compilations` field to `Analysis`.
We store `Seq[xsbt.api.Compilation]` in `Analysis`. Compilation are
being appended to sequence for every iteration of the incremental
compiler.

Note that `Compilation`s are never removed from the sequence unless
you start from scratch with empty `Analysis`. You can do that by using
sbt's `clean` command.

The main use-case for using `compilations` field is to determine how
many iterations it took to compilen give code. The `Compilation` object
are also stored in `Source` objects so there's an indirect way to recover
information about files being recompiled in every iteration.

Since `Analysis` is persisted you can use this mechanism to track entire
sessions spanning multiple `compile` commands.
2012-12-10 09:15:52 -05:00
Mark Harrah e3745540c9 More cleanup of Scala version handling, including managedScalaInstance to control automatic 'scala-tool' configuration and dependencies. 2012-12-09 20:40:41 -05:00
Mark Harrah d4fd136192 support defining Projects in .sbt files
vals of type Project are added to the Build
2012-12-09 20:40:41 -05:00
Grzegorz Kossakowski ef39aeb9c1 Follow source layout convention supported by Eclipse.
Moved source files so directory structure follow package
structure. That makes it possible to use Scala Eclipse plugin
with sbt's source code.
2012-12-07 10:27:08 -08:00
Adriaan Moors f7be122eb4 Run apiExtractor after pickler (configurable)
Extract the api after picklers, since that way we see the same symbol
information/structure irrespective of whether we were typechecking
from source / unpickling previously compiled classes.

Previously, the apiExtractor phase ran after typer.

Since this fix is hard to verify with a test (it's based on the
conceptual argument above, and anecdotal evidence of incremental
compilation of a big codebase), we're providing a way to restore the
old behaviour: run sbt with -Dsbt.api.phase=typer.

This fixes #609.
2012-12-06 19:35:51 -05:00
Adriaan Moors cb0e723923 Fix #610: represent refinement typerefs stably
goal:

a representation of a type reference to a refinement class that's stable
across compilation runs (and thus insensitive to typing from source or
unpickling from bytecode)

problem:

the current representation, which corresponds to the owner chain of the
refinement:

  1. is affected by pickling, so typing from source or using unpickled
  symbols give different results (because the unpickler "localizes"
  owners -- this could be fixed in the compiler in the long term)

  2. can't distinguish multiple refinements in the same owner (this is
  a limitation of SBT's internal representation and cannot be fixed in
  the compiler)

solution:

expand the reference to the corresponding refinement type: doing that
recursively may not terminate, but we can deal with that by
approximating recursive references (all we care about is being sound for
recompilation: recompile iff a dependency changes, and this will happen
as long as we have one unrolling of the reference to the refinement)
2012-12-06 19:11:12 -05:00
Lex Spoon b7250bb528 Fix -Yrangepos. Unlike other settings, it requires that a mixin be added to Global. 2012-12-03 20:34:11 -05:00
Mark Harrah 1c22478edc task setting macros for :=, +=, ++=
also, bump to 2.10.0-M6
2012-11-17 20:19:24 -05:00
Mark Harrah 87e406fcbd support vals/defs in build.sbt
* must start with val, lazy val, or def (no modifiers currently)
* visible only within the same .sbt file
* multiple definitions allowed without being separated by blank lines
* no blank lines allowed within a definition
2012-11-17 16:27:25 -05:00
Benjy 657d842238 Analysis.groupBy implementation. 2012-11-10 19:01:41 -05:00
Mark Harrah 52b7dccff4 Handle removed files when skipping to recompiling all files. 2012-11-10 18:18:15 -05:00
Mark Harrah 4946115521 Recompile everything when invalidated sources exceed a certain fraction of all sources 2012-11-05 10:02:33 -05:00
nau bdfb570a42 Update compile/inc/Incremental.scala
Fix for http://stackoverflow.com/questions/12972183/sbt-always-does-full-rebuild-because-of-modified-binary-dependency-rt-jar
def externalBinaryModified uses java.io.File.equals() to check if files are the same. It's better to use File.getCanonicalPath in this case.
2012-10-22 08:23:23 -04:00
Mark Harrah d6072275aa replace Symbol.nameString calls with simpleName(Symbol). Fixes #577.
nameString is only for printing and has different behavior when scalac is
given -uniqid.
2012-10-15 12:42:27 -04:00
Mark Harrah 18a03f0e25 API extraction: handle any type that is annotated, not just the spec'd simple type. Fixes #559. 2012-10-05 09:06:35 -04:00
James Roper 702ee44e0e Source position mapper support 2012-08-31 06:24:16 -04:00
James Roper 5e2fc5f005 Reported file name when an error occurs while opening a corrupt zip file in Locate 2012-08-31 06:15:33 -04:00
Mark Harrah eca9ab9bb1 2.10 compatibility 2012-08-27 10:49:13 -04:00
Mark Harrah b53104f8ff note about Scala build and compiler interface 2012-08-27 08:41:08 -04:00
Mark Harrah 42042a9d85 2.8.1 compatibility for compiler interface 2012-08-27 08:33:33 -04:00
Mark Harrah 8c0a2fbe1c require a smaller set of sources in the third (transitive) step of inc. compilation 2012-08-26 13:44:32 -04:00
Mark Harrah 089b4e284c three-stage incremental compilation 2012-08-25 07:15:23 -04:00
Eugene Vigdorchik 61dee253dd Convert println() to log.debug() 2012-08-19 22:19:39 -04:00
Eugene Vigdorchik 1b814ae8b1 Extend reporter to be used by the IDE. 2012-07-24 15:35:06 -04:00
Eugene Vigdorchik 76943e82ed Add xsbti.Reporter to required inputs instead of maxErrors. 2012-07-13 14:33:26 -04:00
Eugene Vigdorchik b5a29987e6 Changes required to use sbt as-is from Scala-IDE. 2012-07-13 14:33:26 -04:00
Eugene Vigdorchik e23df839b7 Make compiler projects compilable with 2.10 2012-07-13 14:33:26 -04:00
Eugene Vigdorchik a6c2054292 Break compiler dependency from 'collection' project. 2012-07-13 14:33:26 -04:00
Mark Harrah d8f5c39465 remove most occurrences of ScalaObject 2012-07-01 15:16:41 -04:00
Mark Harrah 3f12f2eb9f drop compilation tests
1. overlapped with integration tests
2. slower than integration tests
3. more fragile than integration tests
2012-07-01 15:16:41 -04:00
Mark Harrah b405110e7b compilation timings 2012-06-23 13:52:09 -04:00
Mark Harrah 0de4444665 sync resident compiler code 2012-06-18 08:18:39 -04:00
Mark Harrah f53d20a7a3 disable resident-compiler related code paths when it isn't being used. fixes #486.
The underlying issue with the resident compiler needs fixing, however.
2012-06-16 23:40:52 -04:00
Mark Harrah 919ac33c1a compiler interface compatibility hardening 2012-06-10 23:06:35 -04:00
Mark Harrah b7df87e2d8 compiler interface source compatibility with Scala 2.8.1/0 2012-06-02 19:03:57 -04:00
Mark Harrah 4bc993e0ba Revert "remove unneeded unlinking in compiler interface"
Unlinking is actually needed.

This reverts commit 1581d1b7e1.
2012-06-02 19:03:57 -04:00
Mark Harrah 1581d1b7e1 remove unneeded unlinking in compiler interface 2012-05-30 07:41:02 -04:00
Mark Harrah 2db0101eb8 resident compiler that passes all tests
core logic from odersky/scala/topic/inkling
2012-05-30 07:13:15 -04:00
Peter Vlugter 737b1b09bd Add scala library when compiling compiler interface sources 2012-05-25 07:21:05 -04:00
Mark Harrah 9ee30636b3 don't put scala-library.jar on the boot classpath unless it is on the classpath 2012-05-21 22:23:44 -04:00
Mark Harrah 63895a3d77 source compatibility with 2.8.1, where resident mode can't be supported 2012-05-19 18:20:20 -04:00
Mark Harrah 5ff33fad3e Second try at printing message when stack trace suppressed.
Problems:

  1. Without a message, users don't find 'last'
  2. Showing a message for every error clutters output.

This tries to address these issues by:

1. Only showing the message when other feedback has not been provided and
   'last' would not usually be helpful.  This will require ongoing tweaking.
   For now, all commands except 'compile' display the message.  'update' could
   omit the message as well, but perhaps knowing about 'last' might be
   useful there.

2. Including the exact command to show the output:
    last test:compile
   and not just
    last <task>

3. Highlighting the command in blue for visibility as an experiment.

Review by @ijuma and @retronym, please.
2012-05-19 18:20:19 -04:00
Mark Harrah 50ddd485af add a missing 'lazy' 2012-05-13 22:38:00 -04:00
Mark Harrah 208b46fd10 resident mode: package objects 2012-05-13 21:31:40 -04:00
Mark Harrah 7bed381bec cleanup compilation tests 2012-05-12 23:12:29 -04:00
Mark Harrah 864580aae1 approximate type parameters and references by name
not as accurate, but simpler.
2012-05-12 23:12:29 -04:00
Mark Harrah 00d0918714 workaround separate compilation and raw types 2012-05-12 23:12:29 -04:00
Peter Vlugter 1ed64e4d5f Use Maybe rather than Option in IC 2012-05-07 19:09:25 -04:00
Peter Vlugter fdf9be166f Add helper methods to IC for reading analysis cache files 2012-05-06 21:41:38 -04:00
Mark Harrah 99a04466f1 move to revised warning interface in the compiler 2012-05-06 14:15:03 -04:00
Mark Harrah e537cbc474 second part of fix for excessive recompilations 2012-04-30 20:34:48 -04:00
Mark Harrah 5c8f212cf3 convert stray println to debug logging statement 2012-04-28 20:17:43 -04:00
Mark Harrah ddcf885fb9 fresh scope for each inherited definition when tagging type variables 2012-04-28 18:58:52 -04:00
Mark Harrah 408d11557d handle Java sources not compiled in Mixed configuration 2012-04-28 18:58:52 -04:00
Mark Harrah 6769c94208 basis for a resident compiler
unstable, but can be tested with -Dsbt.resident.limit=n
 n is the maximum Globals kept around
2012-04-28 18:58:52 -04:00
Mark Harrah 2bd103f1fa implement embedded interface 2012-04-18 16:01:45 -04:00
Mark Harrah d837f869bd using some of the embedding interfaces 2012-04-18 11:02:52 -04:00
Mark Harrah 8594e4443d reorganize compilation modules 2012-04-18 08:08:25 -04:00
Mark Harrah db7ec09591 move compiler integration classes to subproject compile/integration 2012-04-18 03:33:49 -04:00
Mark Harrah 882ab1e4e8 Revert "Fix cavalier approach to reflection." (ClassNotFoundException)
This reverts commit 1537a9d6b1.
2012-04-18 03:15:14 -04:00
Paul Phillips 1537a9d6b1 Fix cavalier approach to reflection.
No need to recreate the Method instance thousands of times.
2012-04-16 19:42:56 +01:00
Indrajit Raychaudhuri 89678735e1 Improved implementation for `parents` accumulation for java classes
It now considers `ParameterizedType` and includes all interfaces recursively
2012-03-27 01:40:10 +05:30
Indrajit Raychaudhuri 2525eeb7e6 Ensure that `parents` for java classes have all the ancestors
Currently, only immediate parents classes are picked up for java classes.
This could be problematic, for example, in detecting Fingerprint for test frameworks.
So far, Scala types are not affected –– all the ancestors are available for them.
2012-03-25 15:44:16 +05:30
Mark Harrah 1cbb7ce93c print-warnings task for Scala 2.10+ to avoid needing to rerun 'compile' to see deprecation/unchecked warnings 2012-03-17 19:31:55 -04:00
Mark Harrah 868196e652 delete empty parent directories of deleted class files. fixes #387 2012-03-05 13:40:17 -05:00
Jason Zaugg 17eeec6876 Move condition out of SameAPI.
It was tenuously relying on the caller short-circuiting with `shortcutSameSource`.
2012-03-04 21:28:01 +01:00
Jason Zaugg a1cc62a598 Avoid copy-paste of Flags.MACRO with source-compatibility trickery. 2012-03-04 19:07:33 +01:00
Jason Zaugg 72e41c3329 whitespace 2012-03-04 17:41:39 +01:00
Jason Zaugg 067917a0fb Macro def aware recompilation.
- Read macro modifier from method definition.
 - Always recompile downstream files after a file containing macro defs is recompiled.
 - Source is extended with a hasMacro attribute. Mark suggests that this might be better
   tracked in Relations, but I'm not sure how to make that change.
2012-03-04 17:35:51 +01:00
Mark Harrah d61ae7899f drop 2.7 compatibility in compiler reporter 2012-02-07 21:56:37 -05:00
Mark Harrah c17bf071d7 simpler compatibility fix works ok 2012-02-04 21:10:30 -05:00
Mark Harrah b5c4e5290e fix compiler interface to work with 2.10.0-SNAPSHOT 2012-01-19 11:00:24 -05:00
soc 8ec1b9a841 Fix messages like “class class ...”. 2012-01-04 16:20:22 +01:00
Thomas Koch 9e8c441159 missing(?) imports, fix emacs syntax highlighting
While trying to build sbt without sbt, I got compile errors claiming that
util.Random would not be a member of util. The added import statements fixed
this.

The inserted spaces in the comments in project/Sbt.scala are a work around in a
bug in emacs scala syntax highlighting.
2011-12-14 14:35:17 +01:00
Mark Harrah 51f88855c2 fix maxErrors to filter errors, not warnings 2011-12-13 17:29:08 -05:00
Mark Harrah cf450a963f drop more 2.7 compatibility code 2011-11-27 17:48:01 -05:00
Indrajit Raychaudhuri c039925748 Append dummy argument to `-classpath` when it is actually empty.
Scala compiler's way of handling empty classpath argument is problematic.
This workaround appends a dummy classpath argument when the classpath is
actually empty. Fixes #269 (also see #82, #85).
2011-11-19 16:51:53 +05:30
Mark Harrah a49c907146 invalidate sources that claim to generate the same class. fixes #260 2011-11-10 21:30:30 -05:00
Indrajit Raychaudhuri ad7aede533 Enable Javadoc generation in `doc` task.
`docSetting` has been updated to do both Scaladoc and Javadoc. In
Scala/Java hybrid projects, the output docs are rebased to `scala`
or `java` sub-directory accordingly. But for pure scala or pure java
projects the subdirectories aren't added to becompliant with user
expectation as much as possible. We do hybrid mode iff both *.scala
and *.java files exist; other doc resources (package.html, *.jpg etc.)
don't influence the decision.
2011-11-09 17:49:54 +05:30
Mark Harrah 6405f2a6cb cleanup 2.7 warn fatal setting compatibility 2011-11-04 18:39:25 -04:00
Indrajit Raychaudhuri 66500ea776 Use full form of `-classpath` option
short form `-cp` isn't always honored (e.g., javadoc)
2011-11-04 13:40:59 -04:00
Mark Harrah 82ad44a701 preserve API information needed for detecting annotations on defs. fixes #232 2011-10-19 22:23:47 -04:00
Mark Harrah 1578341a10 add cleanupCommands setting to specify commands to run before interpreter exits. fixes #219 2011-10-16 17:27:36 -04:00
Mark Harrah 7632c0910a fixes #220. properly record source dependencies from separate compilation runs in the same step. 2011-10-10 20:53:57 -04:00
Mark Harrah f70b68d3b4 fix symmetric hashing 2011-10-09 21:48:15 -04:00
Mark Harrah c74ecb55e9 finalize hash 2011-10-05 21:04:34 -04:00
Mark Harrah e4848efcc8 store hashes of API instead of full API. fixes #21 2011-10-05 18:09:27 -04:00
Mark Harrah 0436b721be Merge pull request #174 from paulp/master
reduce, reuse, recycle
2011-09-29 06:40:04 -07:00
Mark Harrah dcea4f2293 make ComponentManager honor value of Ivy home provided by the launcher 2011-09-16 23:08:01 -04:00
Mark Harrah 9d0cb47e0a force REPL startup to be synchronous. fixes #175. 2011-09-12 19:48:10 -04:00
Paul Phillips 528b4ed342 Limit unnecessary Array allocations from ClassToAPI.
+----------------------------------------------------------------------------+----------------+
|                                    Name                                    |  Shallow Size  |
+----------------------------------------------------------------------------+----------------+
|  +---1571683 zero length arrays xsbti.api.Annotation[]                     |    25,146,928  |
|  |                                                                         |                |
|  +---1373273 zero length arrays xsbti.api.TypeParameter[]                  |    21,972,368  |
|  |                                                                         |                |
|  +---305126 zero length arrays xsbti.api.ParameterList[]                   |     4,882,016  |
|  |                                                                         |                |
|  +---295294 zero length arrays xsbti.api.MethodParameter[]                 |     4,724,704  |
|  |                                                                         |                |
2011-09-07 13:09:53 -07:00
Paul Phillips fae7c3b429 Make large Relations more readable.
For those poor suckers attempting to use -Dxsbt.inc.debug.
2011-09-06 11:55:18 -07:00
Mark Harrah 02f666ec0e miscellaneous fixes 2011-08-31 20:59:40 -04:00
Mark Harrah ff95799af7 drop 2.7 support, fix fatal warnings support. fixes #153 2011-08-17 21:50:46 -04:00
Mark Harrah b36e40a8f7 move to 2.9.1 (RC3), bump to 0.11.0-SNAPSHOT 2011-08-16 17:32:26 -04:00
Mark Harrah 3b86fc628e fix Locate to only try to open archives 2011-08-05 21:56:32 -04:00
Mark Harrah 980e906ca1 handle custom -bootclasspath in incremental recompilation 2011-08-04 07:20:25 -04:00
Mark Harrah 0b3ec05a81 support incremental recompilation when using exportJars. fixes #108 2011-07-18 17:14:22 -04:00
Mark Harrah 094f094d2e eval test fixes 2011-07-09 20:18:42 -04:00
Mark Harrah b096d1b175 global settings preparation: separate compilation/loading stages of Eval 2011-07-09 16:54:41 -04:00
Mark Harrah 60dcd4404f pass empty classpath instead of no classpath. fixes #85. ref #82 2011-07-06 07:30:47 -04:00
Mark Harrah 0831552dc5 apply javac log level approach to directJavac 2011-06-26 12:27:06 -04:00
Mark Harrah 1dc3f0ed56 add missing file 2011-06-22 19:50:41 -04:00
Mark Harrah c919a9c3fd cache calls to definesClass within a run. closes #67 2011-06-22 19:17:10 -04:00
Mark Harrah 52cd688de6 Try out some better error messages for build.sbt in a few common situations. fixes #58 2011-06-16 22:15:29 -04:00
Mark Harrah 997a501771 fix compiler interface 2011-06-11 20:09:15 -04:00
Mark Harrah bc5253e386 include retronym's compatibility patch, closes #5 2011-06-11 20:09:15 -04:00
Mark Harrah 13adcfb28c fix some tests 2011-06-10 08:08:51 -04:00
Mark Harrah 520f74d114 properly handle arguments to compiler when classpath is empty 2011-06-10 07:48:53 -04:00
Mark Harrah c0a21c1524 implement shortcut for API equality checking, fixes #18 2011-06-01 02:19:46 -04:00
Mark Harrah f786060883 Revert to using 2.8.1 2011-05-30 17:49:39 -04:00
Mark Harrah 437a3f7f50 clean up incremental debugging messages 2011-05-29 19:17:31 -04:00
Mark Harrah a94247d1b6 more release-worthy compile message and analysis toString 2011-05-29 19:17:31 -04:00
Mark Harrah 9002720933 move to 2.9.0-1, bump to 0.9.9 2011-05-29 00:22:08 -04:00
Mark Harrah 58d9f3b0a0 fix structural type comparison 2011-05-25 22:44:22 -04:00
Mark Harrah 85a55c25bf settle scala-library situation 2011-05-25 22:44:22 -04:00
Mark Harrah e840d66622 Turn some errors in API into warnings+emptyType 2011-05-25 08:09:24 -04:00
Mark Harrah eef1fd8a10 fix #26 2011-05-25 07:57:14 -04:00
Mark Harrah 24dfb69400 an annotation can reference a non-simple type, fixes #24 2011-05-23 18:40:03 -04:00
Mark Harrah 1d36be9b00 properly handle nested class cycles in Java sources, fixes #22 2011-05-21 21:16:18 -04:00
Mark Harrah 4509428af9 locking of boot directory can be disabled by with [boot].lock: true in boot.properties 2011-05-19 22:04:05 -04:00
Mark Harrah 06ec88af3d build sxr, api docs and use sbinary 0.4.0 2011-05-17 20:09:20 -04:00
Mark Harrah 40c6ca3b3d Pluggable build resolvers 2011-05-07 22:02:06 -04:00
Mark Harrah 9dec02ee51 fix analysis of Java sources being overwritten 2011-04-26 21:19:56 -04:00
Mark Harrah bf013d2b3f trap all exceptions when restoring cache 2011-04-19 17:54:03 -04:00
Mark Harrah dc6584ff68 scripts: change base directory 2011-04-18 18:26:57 -04:00
Mark Harrah 6e3a7083e2 only look at .class file modified times in Eval
previously, for a directory on the classpath,
  all files and directories under it would be checked
this caused unnecessary setting recompilation when
  non-classfiles changed in the directory
One example was the sbt.plugins file, which doesn't affect
  compilation, and caused projects with plugins to take longer
  than necessary to start up
2011-04-12 20:24:42 -04:00
Mark Harrah 14c6ee4b2a updating tests to use newer Scala versions 2011-04-08 19:34:23 -04:00
Mark Harrah 3e63a082bd fill the stack trace for CompileFailed again 2011-04-08 19:32:01 -04:00
Mark Harrah e965785646 drop clashing, obsolete CompileOptions object 2011-04-04 19:09:45 -04:00
Mark Harrah a750c1563f Java/Scala compilation order support 2011-04-03 22:12:51 -04:00
Mark Harrah a5f3e1b839 clean up build definition exceptions and messages 2011-04-03 22:12:51 -04:00
Mark Harrah 801c0567fd handle information only options that disable a full compilation 2011-04-01 21:04:08 -04:00
Mark Harrah a79d06ab1f temporary fix for #4426 2011-04-01 21:03:44 -04:00
Mark Harrah 07dbba65d1 memoize aggregation, cleanup 2011-03-23 07:06:51 -04:00
Mark Harrah d53d5fb7cf api extraction fixes for self types and expanded names 2011-03-11 16:57:15 -05:00
Mark Harrah d719c7d6a9 add missing debug case for SameAPI 2011-03-11 16:55:23 -05:00
Mark Harrah 700b67c322 clean up boot classpath handling 2011-03-11 16:54:45 -05:00
Mark Harrah 0935fba0b5 better cycle handling in SameAPI 2011-03-08 17:51:14 -05:00
Mark Harrah 37f793be6e make ClasspathOptions configurable 2011-03-08 17:50:19 -05:00
Mark Harrah a680dc2336 fix tests 2011-03-06 15:32:06 -05:00
Mark Harrah b7f92ae07f 2.9 compatibility fixes 2011-03-04 06:16:35 -05:00
Mark Harrah 70972c6499 normalize key names 2011-03-02 06:46:28 -05:00
Mark Harrah 507dff6b0f less deceptive name for debug 2011-02-26 20:51:21 -05:00
Mark Harrah 83866ffb42 incremental tests, misc fixes 2011-02-26 20:34:18 -05:00
Mark Harrah a68e4c74f9 updating more integration tests 2011-02-25 18:35:52 -05:00
Mark Harrah 4f4ae170d3 work on plugins, added console-project, re-integrated more tests 2011-02-24 23:30:06 -05:00
Mark Harrah 9db4afd222 bring more integration tests back online with associated fixes 2011-02-23 19:19:44 -05:00
Mark Harrah ba8f43a23e starting to convert integration tests 2011-02-22 22:36:48 -05:00