package immutability
- Alphabetic
- Public
- Protected
Type Members
- class ClassImmutabilityAnalysis extends FPCFAnalysis
Determines the immutability of instances of a specific class.
Determines the immutability of instances of a specific class. In the case of an abstract class the (implicit) assumption is made that all abstract methods (if any) are/can be implemented without necessarily/always requiring additional state; i.e., only the currently defined fields are taken into consideration. An interfaces is always considered to be transitively immutable. If you need to know if all possible instances of an interface or some type; i.e., all instances of the classes that implement the respective interface/inherit from some class are transitively immutable, you can query the TypeImmutability property.
In case of incomplete class hierarchies or if the class hierarchy is complete, but some class files are not found the sound approximation is done that the respective classes are mutable.
This analysis uses the FieldImmutability property to determine the immutability of a class.
TODO Discuss the case if a constructor calls an instance method which is overrideable (See Verifiable Functional Purity Paper for some arguments.)
- trait ClassImmutabilityAnalysisScheduler extends FPCFAnalysisScheduler
- class TypeImmutabilityAnalysis extends FPCFAnalysis
Determines the immutability of a specific type by checking if all subtypes of a specific type are immutable and checking that the set of types is closed.
- trait TypeImmutabilityAnalysisScheduler extends FPCFAnalysisScheduler
Value Members
- object EagerClassImmutabilityAnalysis extends ClassImmutabilityAnalysisScheduler with FPCFEagerAnalysisScheduler
Scheduler to run the class immutability analysis eagerly.
- object EagerTypeImmutabilityAnalysis extends TypeImmutabilityAnalysisScheduler with BasicFPCFEagerAnalysisScheduler
Starter for the type immutability analysis.
- object LazyClassImmutabilityAnalysis extends ClassImmutabilityAnalysisScheduler with FPCFLazyAnalysisScheduler
Scheduler to run the class immutability analysis lazily.
- object LazyTypeImmutabilityAnalysis extends TypeImmutabilityAnalysisScheduler with BasicFPCFLazyAnalysisScheduler