Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix for #100 #3

Closed
wants to merge 1 commit into from
Closed

Fix for #100 #3

wants to merge 1 commit into from

Conversation

jorgeortiz85
Copy link

harrah added a commit that referenced this pull request Apr 27, 2013
…tion.

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.
@jsuereth jsuereth mentioned this pull request Nov 19, 2013
eed3si9n referenced this pull request in eed3si9n/sbt Apr 22, 2017
Code basically copied and adapted from sbt scala version cross building
dwijnand pushed a commit to dwijnand/sbt that referenced this pull request Jun 26, 2017
Publish artifacts to Bintray
dwijnand pushed a commit to dwijnand/sbt that referenced this pull request Jun 30, 2017
Publish artifacts to Bintray
dwijnand pushed a commit to dwijnand/sbt that referenced this pull request Jul 7, 2017
Publish artifacts to Bintray
dwijnand pushed a commit to dwijnand/sbt that referenced this pull request Oct 7, 2017
Add slash syntax for AttrKey that parity with "in" syntax
dwijnand pushed a commit to dwijnand/sbt that referenced this pull request Apr 25, 2019
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant