protected void generic_parameter_constraints(
GenericParameterDeclaration gpd
)
{
TypeReference tr = null;
try { // for error handling
{
switch ( LA(1) )
{
case CLASS:
{
match(CLASS);
if (0==inputState.guessing)
{
gpd.Constraints |= GenericParameterConstraints.ReferenceType;
}
break;
}
case STRUCT:
{
match(STRUCT);
if (0==inputState.guessing)
{
gpd.Constraints |= GenericParameterConstraints.ValueType;
}
break;
}
case CONSTRUCTOR:
{
match(CONSTRUCTOR);
if (0==inputState.guessing)
{
gpd.Constraints |= GenericParameterConstraints.Constructable;
}
break;
}
case CALLABLE:
case CHAR:
case THEN:
case LPAREN:
case ID:
case SPLICE_BEGIN:
{
tr=type_reference();
if (0==inputState.guessing)
{
gpd.BaseTypes.Add(tr);
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
switch ( LA(1) )
{
case COMMA:
{
match(COMMA);
generic_parameter_constraints(gpd);
break;
}
case RPAREN:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
catch (RecognitionException ex)
{
if (0 == inputState.guessing)
{
reportError(ex, "generic_parameter_constraints");
recover(ex,tokenSet_50_);
}
else
{
throw ex;
}
}
}