summaryrefslogtreecommitdiff
path: root/core
Commit message (Collapse)AuthorAgeFilesLines
* Re-organize `forge/` folder according to ordering of build phases: target ↵Li Haoyi2017-11-0518-35/+66
| | | | definition, target discovery, and target evaluation
* Turn on `lihaoyi:acyclic` plugin, enforce it, and break up whatever import ↵Li Haoyi2017-11-055-81/+93
| | | | cycles exist
* Get rid of custom `coursier.Dependency` formatter, which was only needed due ↵Li Haoyi2017-11-041-33/+4
| | | | to initialization order problems, which we can solve by making everything `lazy val`s
* Split out `MacroErrorTests` into it's own fileLi Haoyi2017-11-042-53/+63
|
* add another negative test to ensure we give good error messages when trying ↵Li Haoyi2017-11-041-0/+15
| | | | to apply() a value coming from inside a T{...} block, this time as the param of a lambda
* Synchronize `Target.Cacher#cachedTarget` call, to match the thread-safety we ↵Li Haoyi2017-11-041-1/+1
| | | | get from `lazy val`s
* First pass at providing good compile errors to invalid uses of the `T{...}` ↵Li Haoyi2017-11-042-5/+56
| | | | macro: we should only allow you to `Target#apply()` on expressions whose values come from outside the `T{...}` block
* Swap over to `typingTransformer`Li Haoyi2017-11-041-15/+14
|
* Collapse `LocalDef` into `T{...}` macro, make it more flexible so it only ↵Li Haoyi2017-11-043-52/+27
| | | | | | caches `def`s (and complains about `val`s) if it's defined top-level in a class/trait/object, for easy overriding. If it's in some helper function somewhere, overriding doesn't matter, and it's up to the user to figure out how to construct a target graph without redundancy
* Add some basic compile-time checks to enforce usage of `T{...}` within traitsLi Haoyi2017-11-044-4/+51
|
* Add some tests to verify Cacher happy-pathsLi Haoyi2017-11-041-0/+50
|
* Mark `Cacher#T`-related things as protected, since you shouldn't access them ↵Li Haoyi2017-11-041-3/+3
| | | | from outside the class body
* - Get rid of lazy `Target` wrapper since we're using lazy `def`s everywhereLi Haoyi2017-11-042-23/+5
| | | | - Switch to using just `sourcecode.Enclosing` to key the `cacherLazyMap`, since the caller is already present as the `this` owning the `cacherLazyMap` and does not need to be stored
* First experiment using `Cacher interface` combined with `Caller` implicits ↵Li Haoyi2017-11-047-15/+133
| | | | to turn `def foo = T{}` into pseudo-`lazy val`s, that we can override in subclasses using stackable traits
* Implement `ScalaDep` ADT to encapsulate handling on scala cross-version suffixesLi Haoyi2017-11-041-0/+10
|
* Rename `IntegrationTests` to `JavaCompileJarTests`, make use of new `T{...}` ↵Li Haoyi2017-11-031-5/+4
| | | | macro in it
* `Target#apply[T](t: => Target[T])` doesn't need to be implicitLi Haoyi2017-11-031-1/+1
|
* Split up forge into `scalaplugin` an `core` subprojects, to allow us to use ↵Li Haoyi2017-11-0323-0/+1638
the `T#apply` macro in the implementation of `scalaplugin.Subproject` Also needed to implement inter-`Subproject` dependencies so the `MetacircularTests` can continue to support the new layout