private void ProcessMacro(Type actualType, MacroStatement node)
{
// HACK: workaround for mono
if (-1 == Array.IndexOf(actualType.GetInterfaces(), typeof(IAstMacro)))
// if (!typeof(IAstMacro).IsAssignableFrom(actualType))
{
Errors.Add(CompilerErrorFactory.InvalidMacro(node, actualType.FullName));
return;
}
try
{
Statement replacement = ExpandMacro(actualType, node);
if (null != node.Modifier)
{
replacement = NormalizeStatementModifiers.CreateModifiedStatement(node.Modifier, replacement);
}
ReplaceCurrentNode(replacement);
}
catch (Exception error)
{
Errors.Add(CompilerErrorFactory.MacroExpansionError(node, error));
}
}