* vim-syntax: fix highlighting for indirect case/enum
without skipwhite, `indirect enum` never gets highlighted. this
commit also adds the `indirect case` multiword keyword.
* vim-syntax: allow whitespace before type parameters
Added skipwhite to multiple match groups so that whitespace can be used
before type parameters (`Type <Param>`). This matches Xcode's behavior.
* vim-syntax: update last change line
* vim-syntax: remove indirect case from multiword type def group
* vim-syntax: highlight #function preproc macro
* vim-syntax: highlight preproc macros in string interpolation
* vim syntax: make string interpolation a matchgroup
Now, only the opening \( and ) are highlighted, and everything inside retains its coloring
This has the same semantics as open_existential_box, but returns an object value
instead of an address.
This is used in SIL opaque values mode. Attempting to reuse open_existential_box
in this mode causes SIL type inconsistencies that are too difficult to work
around. Adding this instruction allows for consistent handling of opaque values.
The original versions of several of these currently redundant instructions will
be removed once the SIL representation stabilizes.
These instructions have the same semantics as the *ExistentialAddr instructions
but operate directly on the existential value, not its address.
This is in preparation for adding ExistentialBoxValue instructions.
The previous name would cause impossible confusion with "opaque existentials"
and "opaque existential boxes".
This was duplicating the swiftTypeName. However, the swiftTypeName is more
generically named and applies to both types and functions both in structure and
usage. Retain the single definition.
Perform more clever highlighting of generic clauses. The archetype identifier
is now identified as an identifier, the archtetype type as a type, and the
constraints (where) as special syntax.
A typename is a name for a type being defined. A type may contain optionality
as well. This ensures that we do not accidentally highlight an invalid name
such as `InvalidName?` as a type name.
Fix the fact that I had previously created a special group for the array. An
array is a type, so it should be part of the same group.