summaryrefslogtreecommitdiff
path: root/core/src/main/scala/forge
Commit message (Collapse)AuthorAgeFilesLines
* rename forge -> millLi Haoyi2017-11-1015-1454/+0
|
* Add basic tests for un-cached evaluation of `Task`sLi Haoyi2017-11-101-6/+11
|
* Kill `Router.main` annotation and make routing dependent on the `Command` ↵Li Haoyi2017-11-101-2/+1
| | | | return type
* Migrate over to the new `Task`/`Target`/`Command` splitLi Haoyi2017-11-099-177/+189
|
* Move `JavaCompilerJarTests` over to new `Target.ctx()` syntaxLi Haoyi2017-11-091-20/+0
|
* Make `Applicative` macros able to inject a configurable `Ctx` object, used ↵Li Haoyi2017-11-092-22/+53
| | | | in `Target` to inject the `dest` folder for the `T{...}` block to use
* make scalaplugin.Subproject use the builtin destination folderLi Haoyi2017-11-092-3/+4
|
* Swap `compileScala` over to `T{...}` macroLi Haoyi2017-11-081-2/+0
|
* Include consistency check in main workflowLi Haoyi2017-11-071-28/+34
|
* First full metacircular compile-build-execute workflow now works using the ↵Li Haoyi2017-11-073-17/+57
| | | | | | | | `build.sc` file in the root of the repo. Run using ``` sbt scalaplugin/compile "core/run build.sc ScalaPlugin.console" ```
* fix npeLi Haoyi2017-11-071-5/+5
|
* - Allow main methods to return `Target[T]`s, so they can then be evaled by ↵Li Haoyi2017-11-074-19/+27
| | | | | | an external `Evaluator` that has the `Discovered` mapping available - Basic integration tests for `T.command` entrypoint running in the `JavaCompilerJarTests` suite
* Recursive main-method resolution now works, as part of the normal discovery ↵Li Haoyi2017-11-053-28/+53
| | | | | | | | | | | | | | | | | | | | | | recursion ```scala @ import forge.util.JsonFormatters._ import forge.util.JsonFormatters._ @ forge.discover.Discovered[forge.scalaplugin.MetacircularTests.type] @ forge.discover.Discovered[forge.scalaplugin.MetacircularTests.type].mains res2: Seq[...] = List( NestedEntry(List("ScalaPlugin"), ..., EntryPoint("run", ...)), NestedEntry(List("Core"), ..., EntryPoint("run", ...) ) @ forge.discover.Discovered[forge.scalaplugin.MetacircularTests.Core.type].mains res3: Seq[...] = List( NestedEntry(List(), ..., EntryPoint("run", ...)) ) ```
* Forked `ammonite.main.Router` into `forge.discover.Router`, to let us ↵Li Haoyi2017-11-053-7/+409
| | | | | | generate routes purely based on a type `T`, as part of the target discovery process. We defer the need for a concrete value of type `T` later until we need to evaluate the route. Eventually this should go upstream into ammonite itself, but forking is easier for now
* Break out reusable JVM specific stuff into its own fileLi Haoyi2017-11-052-2/+71
|
* Break out `Cacher.scala` from `Applicative.scala` to fully separate the ↵Li Haoyi2017-11-053-35/+50
| | | | gnarly macros
* Add a simple consistency checker on `Discovered` to test if any of the ↵Li Haoyi2017-11-051-0/+7
| | | | observable `Target`s in the given base are not being properly cached
* tweakLi Haoyi2017-11-051-2/+2
|
* Fix up owner chains to allow `Applyable#apply()` calls to work within lambdasLi Haoyi2017-11-051-6/+12
|
* First set of standalone tests for the gnarly `Applicative` logicLi Haoyi2017-11-052-16/+9
|
* Rename `ApplicativeMacros` and contents to shorter namesLi Haoyi2017-11-052-17/+25
|
* Split out `ApplicativeMacros` from `Target`Li Haoyi2017-11-054-122/+138
|
* Re-organize `forge/` folder according to ordering of build phases: target ↵Li Haoyi2017-11-0510-31/+44
| | | | 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
* 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-041-3/+23
| | | | 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-042-48/+26
| | | | | | 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-042-4/+40
|
* 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-044-2/+32
| | | | 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
|
* `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-0311-0/+782
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