AnnotType ::= SimpleType {Annotation}
CompoundType ::= AnnotType {with AnnotType} [Refinement] | Refinement
InfixType ::= CompoundType {id [nl] CompoundType}
SimpleType ::= SimpleType TypeArgs
| SimpleType #' Id
| StableId
| Path .
SimpleType ::= SimpleType TypeArgs
| SimpleType #' Id
| StableId
| Path .' type
| (' Types )'
| WildcardType
Type ::= InfixType =>' Type
| (' [=>' Type] )' =>' Type
| InfixType [ExistentialClause]
ExistentialClause ::= forSome {' ExistentialDcl {semi ExistentialDcl}} }'
ExistentialDcl ::= type TypeDcl | val ValDcl
TypeArgs ::= [' ArgType {,' ArgType} ]'
Types ::= Type {,' Type}
Methods which implicitly propagate the context in which they were called: either in a pattern context or not. Formerly, this was threaded through numerous methods as boolean isPattern.