public void BeforeCompile(BeforeCompileContext context) { context.Diagnostics.Add( Diagnostic.Create( new DiagnosticDescriptor("TEST", "TEST", "Hello meta programming world!", "TEST", DiagnosticSeverity.Info, true), Location.None)); context.Compilation = context.Compilation.AddSyntaxTrees( SyntaxFactory.ParseSyntaxTree(@" namespace Test.Module { public static class Extensions { public static T Dump<T>(this T i) { if (i != null) { System.Console.WriteLine(i); } return i; } } } ")); }
public void BeforeCompile(BeforeCompileContext context) { // NOTE: in case you need to debug your compilation module do: // System.Diagnostics.Debugger.Launch(); foreach (var syntaxTree in context.Compilation.SyntaxTrees) { var model = context.Compilation.GetSemanticModel(syntaxTree); var rewriter = new StringBuilderInterpolationOptimizer(model); var rootNode = syntaxTree.GetRoot(); var rewritten = rewriter.Visit(rootNode); if (rootNode != rewritten) { context.Compilation = context.Compilation.ReplaceSyntaxTree( syntaxTree, syntaxTree.WithRootAndOptions(rewritten, syntaxTree.Options)); } } }
public void Before(BeforeCompileContext context) { Apply(context, x => BeforeCompileContext = x, m => m.BeforeCompile); }
public void BeforeCompile(BeforeCompileContext context) { foreach (var module in modules) module.BeforeCompile(context); }