Skip to content

Instantly share code, notes, and snippets.

@controlflow
Last active December 11, 2016 23:40
Show Gist options
  • Select an option

  • Save controlflow/b7598400a7a7c5f5369631117fabbce8 to your computer and use it in GitHub Desktop.

Select an option

Save controlflow/b7598400a7a7c5f5369631117fabbce8 to your computer and use it in GitHub Desktop.
[Pure, ContractAnnotation("null => null")]
public static IArrowExpressionClause GetArrowExpressionClause([CanBeNull] this IExpressionBodyOwnerDeclaration declaration)
{
var functionDeclaration = declaration as ICSharpFunctionDeclaration;
if (functionDeclaration != null) return functionDeclaration.ArrowExpression;
var propertyDeclaration = declaration as IPropertyDeclaration;
if (propertyDeclaration != null) return propertyDeclaration.ArrowExpression;
var indexerDeclaration = declaration as IIndexerDeclaration;
if (indexerDeclaration != null) return indexerDeclaration.ArrowExpression;
var localFunctionDeclaration = declaration as ILocalFunctionDeclaration;
if (localFunctionDeclaration != null) return localFunctionDeclaration.ArrowExpression;
return null;
}
[Pure, ContractAnnotation("null => null")]
public static IArrowExpressionClause GetArrowExpressionClause([CanBeNull] this IExpressionBodyOwnerDeclaration declaration)
{
switch (declaration)
{
case ICSharpFunctionDeclaration functionDeclaration:
return functionDeclaration.ArrowExpression;
case IPropertyDeclaration propertyDeclaration:
return propertyDeclaration.ArrowExpression;
case IIndexerDeclaration indexerDeclaration:
return indexerDeclaration.ArrowExpression;
case ILocalFunctionDeclaration localFunctionDeclaration:
return localFunctionDeclaration.ArrowExpression;
default:
return null;
}
}
[Pure, ContractAnnotation("null => null")]
public static IArrowExpressionClause GetArrowExpressionClause([CanBeNull] this IExpressionBodyOwnerDeclaration declaration)
{
switch (declaration)
{
case ICSharpFunctionDeclaration functionDeclaration: return functionDeclaration.ArrowExpression;
case IPropertyDeclaration propertyDeclaration: return propertyDeclaration.ArrowExpression;
case IIndexerDeclaration indexerDeclaration: return indexerDeclaration.ArrowExpression;
case ILocalFunctionDeclaration localFunctionDeclaration: return localFunctionDeclaration.ArrowExpression;
default: return null;
}
}
[Pure, ContractAnnotation("null => null")]
public static IArrowExpressionClause GetArrowExpressionClause([CanBeNull] this IExpressionBodyOwnerDeclaration declaration)
{
return switch (declaration)
{
case ICSharpFunctionDeclaration functionDeclaration => functionDeclaration.ArrowExpression;
case IPropertyDeclaration propertyDeclaration => propertyDeclaration.ArrowExpression;
case IIndexerDeclaration indexerDeclaration => indexerDeclaration.ArrowExpression;
case ILocalFunctionDeclaration localFunctionDeclaration => localFunctionDeclaration.ArrowExpression;
default => null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment