private PredefinedTypeSyntax ParsePredefinedType(bool allowVoid, bool parentIsParameter)
{
var token = NextToken();
if (SyntaxFacts.IsPredefinedScalarType(token.Kind))
{
if (!allowVoid && token.Kind == SyntaxKind.VoidKeyword)
token = WithDiagnostic(token, parentIsParameter ? DiagnosticId.NoVoidParameter : DiagnosticId.NoVoidHere);
return ParseScalarType(token);
}
if (SyntaxFacts.IsPredefinedVectorType(token.Kind))
{
if (token.Kind == SyntaxKind.VectorKeyword && Current.Kind == SyntaxKind.LessThanToken)
return ParseGenericVectorType(token);
return ParseVectorType(token);
}
if (SyntaxFacts.IsPredefinedMatrixType(token.Kind))
{
if (token.Kind == SyntaxKind.MatrixKeyword && Current.Kind == SyntaxKind.LessThanToken)
return ParseGenericMatrixType(token);
return ParseMatrixType(token);
}
if (SyntaxFacts.IsPredefinedObjectType(token))
return ParseObjectType(token);
Debug.Fail("Shouldn't be here.");
return null;
}