summaryrefslogtreecommitdiff
path: root/core
Commit message (Collapse)AuthorAgeFilesLines
* cleanup `build.sc` importsLi Haoyi2017-11-111-0/+2
|
* `T{}` blocks can now be implicitLi Haoyi2017-11-113-3/+14
|
* - Smoothed out syntax for defining ivy dependenciesLi Haoyi2017-11-112-49/+57
| | | | - Made `build.sc` file directly runnable using Ammonite, without any wrapper
* .Li Haoyi2017-11-111-3/+1
|
* Properly merge groups in `groupAroundNamedTargets` to handle cases where a ↵Li Haoyi2017-11-114-5/+28
| | | | group has multiple terminals
* - Give `Target`s nicer `toString`s using `sourcecode.Enclosing`. Still not ↵Li Haoyi2017-11-118-18/+57
| | | | | | | | | | as good as the `Labeling` they get during evaluation, but better than nothing - Split out `TargetImpl` from `Target`, so we can make our dummy `TestUtils.Test` class implement `Target`s for discoverability etc. - Make `Discovered` only discover `Target`s, not `Task`s - Make `groupAroundNamedTargets` properly sort the groups topologically, and by flexible enough to combine groups which have cycles between them.
* Swap over to new `projectDeps` mechanism for defining dependencies between ↵Li Haoyi2017-11-115-4/+5
| | | | various `scalaplugin.Subproject`s
* First sketch at SBT test integration worksLi Haoyi2017-11-111-83/+69
|
* rename forge -> millLi Haoyi2017-11-1028-106/+106
|
* Add basic tests for un-cached evaluation of `Task`sLi Haoyi2017-11-104-42/+114
|
* 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-0917-245/+265
|
* Move `JavaCompilerJarTests` over to new `Target.ctx()` syntaxLi Haoyi2017-11-092-31/+10
|
* Make `Applicative` macros able to inject a configurable `Ctx` object, used ↵Li Haoyi2017-11-093-25/+60
| | | | 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-074-19/+59
| | | | | | | | `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-075-20/+77
| | | | | | 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-053-55/+73
|
* Crib `createJar` code from CBT to properly set manifestLi Haoyi2017-11-051-16/+46
|
* Break out `Cacher.scala` from `Applicative.scala` to fully separate the ↵Li Haoyi2017-11-054-36/+50
| | | | gnarly macros
* Add a simple consistency checker on `Discovered` to test if any of the ↵Li Haoyi2017-11-052-39/+55
| | | | observable `Target`s in the given base are not being properly cached
* Add test to verify before-hand evaluation order of `Applyable#apply` callsLi Haoyi2017-11-051-0/+15
|
* Add multiple-identical-apply-calls unit testLi Haoyi2017-11-051-0/+10
|
* tweakLi Haoyi2017-11-051-2/+2
|
* Fix up owner chains to allow `Applyable#apply()` calls to work within lambdasLi Haoyi2017-11-052-6/+24
|
* More `ApplicativeTests`Li Haoyi2017-11-051-4/+15
|
* First set of standalone tests for the gnarly `Applicative` logicLi Haoyi2017-11-054-57/+97
|
* Rename `ApplicativeMacros` and contents to shorter namesLi Haoyi2017-11-053-19/+59
|
* Split out `ApplicativeMacros` from `Target`Li Haoyi2017-11-056-123/+149
|
* 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