AnnotType ::= SimpleType {Annotation}
AnnotType ::= SimpleType {Annotation}
ArgType ::= Type
ArgType ::= Type
CompoundType ::= AnnotType {with AnnotType} [Refinement] | Refinement
CompoundType ::= AnnotType {with AnnotType} [Refinement] | Refinement
InfixType ::= CompoundType {id [nl] CompoundType}
InfixType ::= CompoundType {id [nl] CompoundType}
Pattern ::= Pattern1 { |' Pattern1 }
SeqPattern ::= SeqPattern1 {
|' SeqPattern1 }
Pattern1 ::= varid :' TypePat
|
_' :' TypePat
| Pattern2
SeqPattern1 ::= varid
:' TypePat
| _'
:' TypePat
| [SeqPattern2]
Patterns ::= Pattern { ,' Pattern }
SeqPatterns ::= SeqPattern {
,' SeqPattern }
SimplePattern ::= varid
| _'
| literal
| XmlPattern
| StableId [TypeArgs] [
(' [SeqPatterns] )']
|
(' [Patterns] )'
SimpleSeqPattern ::= varid
|
_'
| literal
| XmlPattern
| <' xLiteralPattern
| StableId [TypeArgs] [
(' [SeqPatterns] )']
|
(' [SeqPatterns] )'
XXX: Hook for IDE
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
Type ::= InfixType =>' Type
|
(' [=>' Type]
)' =>' Type
| InfixType [ExistentialClause]
ExistentialClause ::= forSome
{' ExistentialDcl {semi ExistentialDcl}} }'
ExistentialDcl ::= type TypeDcl | val ValDcl
TypeArgs ::= [' ArgType {
,' ArgType} ]'
TypeArgs ::= [' ArgType {
,' ArgType} ]'
Types ::= Type {,' Type}
Types ::= Type {,' Type}
Methods which implicitly propagate whether the initial call took place in a context where sequences are allowed. Formerly, this was threaded through methods as boolean seqOK.