提交 b63d6d2d 编写于 作者: J Jared Parsons 提交者: GitHub

Merge pull request #14877 from cloudRoutine/patch-1

syntax highlighting
...@@ -21,7 +21,7 @@ Scenarios ...@@ -21,7 +21,7 @@ Scenarios
General General
------- -------
Source generators are implementations of `Microsoft.CodeAnalysis.SourceGenerator`. Source generators are implementations of `Microsoft.CodeAnalysis.SourceGenerator`.
``` ```csharp
public abstract class SourceGenerator public abstract class SourceGenerator
{ {
public abstract void Execute(SourceGeneratorContext context); public abstract void Execute(SourceGeneratorContext context);
...@@ -42,7 +42,7 @@ the assembly in which it is defined. ...@@ -42,7 +42,7 @@ the assembly in which it is defined.
`SourceGenerator` has a single `Execute` method that is called by the host -- either the IDE `SourceGenerator` has a single `Execute` method that is called by the host -- either the IDE
or the command-line compiler. `Execute` provides or the command-line compiler. `Execute` provides
access to the `Compilation` and allows adding source and reporting diagnostics. access to the `Compilation` and allows adding source and reporting diagnostics.
``` ```csharp
public abstract class SourceGeneratorContext public abstract class SourceGeneratorContext
{ {
public abstract Compilation Compilation { get; } public abstract Compilation Compilation { get; }
...@@ -74,7 +74,7 @@ Source generators are executed by the command-line compilers and the IDE. The ge ...@@ -74,7 +74,7 @@ Source generators are executed by the command-line compilers and the IDE. The ge
are obtained from the `AnalyzerReference.GetSourceGenerators` for each analyzer reference are obtained from the `AnalyzerReference.GetSourceGenerators` for each analyzer reference
specified on the command-line or in the project. `GetSourceGenerators` uses reflection to find types that specified on the command-line or in the project. `GetSourceGenerators` uses reflection to find types that
inherit from `SourceGenerator` and instantiates those types. inherit from `SourceGenerator` and instantiates those types.
``` ```csharp
public abstract class AnalyzerReference public abstract class AnalyzerReference
{ {
... ...
...@@ -87,7 +87,7 @@ and returns the collection of `SyntaxTrees` and `Diagnostics`. ...@@ -87,7 +87,7 @@ and returns the collection of `SyntaxTrees` and `Diagnostics`.
(`GenerateSource` is called by the command-line compilers and IDE.) (`GenerateSource` is called by the command-line compilers and IDE.)
If `writeToDisk` is true, the generated source is persisted to `outputPath`. Regardless of whether the tree is persisted If `writeToDisk` is true, the generated source is persisted to `outputPath`. Regardless of whether the tree is persisted
to disk, `SyntaxTree.FilePath` is set. to disk, `SyntaxTree.FilePath` is set.
``` ```csharp
public static class SourceGeneratorExtensions public static class SourceGeneratorExtensions
{ {
public static ImmutableArray<SyntaxTree> GenerateSource( public static ImmutableArray<SyntaxTree> GenerateSource(
...@@ -121,8 +121,8 @@ To redefine members in generated source, there are new language keywords: `repla ...@@ -121,8 +121,8 @@ To redefine members in generated source, there are new language keywords: `repla
`replace` and `original` are contextual keywords: `replace` is a keyword only when used as a member modifier; `replace` and `original` are contextual keywords: `replace` is a keyword only when used as a member modifier;
`original` is a keyword only when used within a `replace` method (similar to parser handling of `async` and `await`). `original` is a keyword only when used within a `replace` method (similar to parser handling of `async` and `await`).
``` ```csharp
original.cs: // original.cs:
partial class C partial class C
{ {
void F() { } void F() { }
...@@ -131,7 +131,7 @@ original.cs: ...@@ -131,7 +131,7 @@ original.cs:
event EventHandler E; event EventHandler E;
} }
replace.cs: // replace.cs:
partial class C partial class C
{ {
replace void F() { original(); } replace void F() { original(); }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册