improving incremental compilation

support lazy arguments in data type generator
SafeLazy implementation that explicitly clears the reference to the thunk
in API representation, drop synthetic modifier and merge deferred into abstract
handle cyclic structures in API generation, display, comparison, persistence
gzip compile cache file
bump to 2.8.1.RC3, project definition cleanup
fix main method detection to check for the right name
properly view inherited definitions
exclude constructors of ancestors
This commit is contained in:
Mark Harrah 2010-10-22 21:55:16 -04:00
parent 0425532275
commit 7dca038bde
5 changed files with 20 additions and 9 deletions

View File

@ -14,8 +14,8 @@ Definition
returnType: Type
ClassLike
definitionType: DefinitionType
selfType: Type
structure: Structure
selfType: ~Type
structure: ~Structure
TypeMember
TypeAlias
tpe: Type

View File

@ -20,13 +20,11 @@ Qualifier
Modifiers
isAbstract: Boolean
isDeferred: Boolean
isOverride: Boolean
isFinal: Boolean
isSealed: Boolean
isImplicit: Boolean
isLazy: Boolean
isSynthetic: Boolean
ParameterList
parameters: MethodParameter*

View File

@ -0,0 +1,9 @@
/* sbt -- Simple Build Tool
* Copyright 2008, 2009 Mark Harrah
*/
package xsbti.api;
public interface Lazy<T>
{
T get();
}

View File

@ -3,7 +3,7 @@ Type
SimpleType
Projection
prefix : SimpleType
id : String
id: String
ParameterRef
id: Int
Singleton
@ -16,9 +16,9 @@ Type
baseType : SimpleType
annotations : Annotation*
Structure
parents : Type*
declared: Definition*
inherited: Definition*
parents : ~Type*
declared: ~Definition*
inherited: ~Definition*
Existential
baseType : Type
clause: TypeParameter*

View File

@ -38,7 +38,9 @@ trait Relation[A,B]
def _1s: collection.Set[A]
/** Returns the set of all _2s such that (_1, _2) is in this relation. */
def _2s: collection.Set[B]
/** Returns the number of pairs in this relation */
def size: Int
/** Returns all pairs in this relation.*/
def all: Traversable[(A,B)]
@ -57,6 +59,8 @@ private final class MRelation[A,B](fwd: Map[A, Set[B]], rev: Map[B, Set[A]]) ext
def _1s = fwd.keySet
def _2s = rev.keySet
def size = fwd.size
def all: Traversable[(A,B)] = fwd.iterator.flatMap { case (a, bs) => bs.iterator.map( b => (a,b) ) }.toTraversable