summaryrefslogtreecommitdiff
path: root/core/src/main/scala/forge/util
Commit message (Collapse)AuthorAgeFilesLines
* Re-organize `forge/` folder according to ordering of build phases: target ↵Li Haoyi2017-11-053-68/+47
| | | | definition, target discovery, and target evaluation
* Turn on `lihaoyi:acyclic` plugin, enforce it, and break up whatever import ↵Li Haoyi2017-11-051-0/+3
| | | | cycles exist
* Collapse `LocalDef` into `T{...}` macro, make it more flexible so it only ↵Li Haoyi2017-11-041-28/+0
| | | | | | 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-041-0/+28
|
* - Get rid of lazy `Target` wrapper since we're using lazy `def`s everywhereLi Haoyi2017-11-041-12/+0
| | | | - 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-041-0/+12
| | | | to turn `def foo = T{}` into pseudo-`lazy val`s, that we can override in subclasses using stackable traits
* Split up forge into `scalaplugin` an `core` subprojects, to allow us to use ↵Li Haoyi2017-11-035-0/+228
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