func (st *state) closureTypeName() AST {
	st.checkChar('U')
	st.checkChar('l')
	types := st.parmlist()
	if len(st.str) == 0 || st.str[0] != 'E' {
		st.fail("expected E after closure type name")
	}
	st.advance(1)
	num := st.compactNumber()
	ret := &Closure{Types: types, Num: num}
	st.subs.add(ret)
	return ret
}
func (st *state) closureTypeName() AST {
	st.checkChar('U')
	st.checkChar('l')
	types := st.parmlist()
	if len(st.str) == 0 || st.str[0] != 'E' {
		st.fail("expected E after closure type name")
	}
	st.advance(1)
	num := st.compactNumber()
	ret := &Closure{Types: types, Num: num}
	st.subs.add(ret)
	return ret
}
func ( st * state ) closureTypeName ( ) AST { st . checkChar ( 'U' ) st . checkChar ( 'l' ) types := st . parmlist ( ) if len ( st . str ) == 0 || st . str [ 0 ] != 'E' { st . fail ( " " ) } st . advance ( 1 ) num := st . compactNumber ( ) ret := & Closure { Types : types , Num : num } st . subs . add ( ret ) return ret }
// <closure-type-name> ::= Ul <lambda-sig> E [ <nonnegative number> ] _
<closure - type - name > :: = Ul <lambda - sig > E [ <nonnegative number > ] _