Soft Keywords
A soft modifier is one of the identifiers infix
, inline
, opaque
, open
and transparent
.
A soft keyword is a soft modifier, or one of as
, derives
, end
, extension
, throws
, using
, |
, +
, -
, *
A soft modifier is treated as potential modifier of a definition if it is followed by a hard modifier or a keyword combination starting a definition (def
, val
, var
, type
, given
, class
, trait
, object
, enum
, case class
, case object
). Between the two words there may be a sequence of newline tokens and soft modifiers.
Otherwise, soft keywords are treated specially in the following situations:
inline
, if it is followed by any token that can start an expression.derives
, if it appears after an extension clause or after the name and possibly parameters of a class, trait, object, or enum definition.end
, if it appears at the start of a line following a statement (i.e. definition or toplevel expression)extension
, if it appears at the start of a statement and is followed by(
or[
.using
, if it appears at the start of a parameter or argument list.as
, in a renaming import clause|
, if it separates two patterns in an alternative.+
,-
, if they appear in front of a type parameter.*
, in a wildcard import, or it follows the type of a parameter, or if it appears in a vararg splicex*
.
Everywhere else a soft keyword is treated as a normal identifier.