Skip to content

v0.9.0

Compare
Choose a tag to compare
@sjrd sjrd released this 18 Jul 07:58
· 285 commits to main since this release
6b85491

This release makes a number of breaking changes to adhere more closely to the Scala 3 specification, as well as to have a clearer API.

  • Reorganize the Type hierarchy:
    • A Type is now only what the spec calls a type. Methodic types, wildcard type args and package refs are excluded from it.
    • Introduce TypeOrMethodic for the type of term definitions.
    • Introduce TypeOrWildcard for the arguments of AppliedTypes.
    • TermType is the type assigned to term expressions: Type, MethodicType or PackageRef.
    • Rename WildcardTypeBounds to WildcardTypeArg.
  • Introduce "primitive" NothingType and AnyKindType. The members scala.Nothing and scala.AnyKind are type aliases to the underlying primitive types.
  • Remove Symbol.flags and Symbol.privateWithin. Instead, introduce a number of dedicated, semantic accessors such as TermOrTypeSymbol.visibility or TermSymbol.isSetter.
  • Type.baseType(ClassSymbol) follows the spec more closely.
  • Expose whether method types are using or implicit clauses (as MethodType.isContextual and isImplicit, respectively).
  • Remove the (using Context) from a number of API methods. Those methods, by construction, guarantee that they work without loading anything from the classpath. They constitute the API that is safe to use without a semantically complete classpath.