Skip to content

Commit 03dd0b4

Browse files
committed
Descriptions rework
1 parent 8c41c52 commit 03dd0b4

28 files changed

+405
-264
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
- name: Setup .NET Core 5.0 SDK
4242
uses: actions/setup-dotnet@v1
4343
with:
44-
dotnet-version: '5.0.201'
44+
dotnet-version: '5.0.x'
4545
source-url: https://nuget.pkg.github.com/graphql-dotnet/index.json
4646
env:
4747
NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}

src/Directory.Build.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<Project>
22

33
<PropertyGroup>
4-
<VersionPrefix>7.2.0-preview</VersionPrefix>
5-
<LangVersion>8.0</LangVersion>
4+
<VersionPrefix>8.0.0-preview</VersionPrefix>
5+
<LangVersion>9.0</LangVersion>
66
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
77
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
88
<GenerateDocumentationFile>true</GenerateDocumentationFile>

src/GraphQLParser.ApiTests/GraphQL-Parser.approved.txt

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ namespace GraphQLParser.AST
6161
public GraphQLComment() { }
6262
public override GraphQLParser.AST.ASTNodeKind Kind { get; }
6363
public GraphQLParser.ROM Text { get; set; }
64-
public override GraphQLParser.AST.GraphQLLocation Location { get; set; }
6564
}
6665
public class GraphQLDescription : GraphQLParser.AST.ASTNode
6766
{
@@ -76,7 +75,7 @@ namespace GraphQLParser.AST
7675
public override GraphQLParser.AST.ASTNodeKind Kind { get; }
7776
public GraphQLParser.AST.GraphQLName? Name { get; set; }
7877
}
79-
public class GraphQLDirectiveDefinition : GraphQLParser.AST.GraphQLTypeDefinitionWithDescription
78+
public class GraphQLDirectiveDefinition : GraphQLParser.AST.GraphQLTypeDefinition
8079
{
8180
public GraphQLDirectiveDefinition() { }
8281
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLInputValueDefinition>? Arguments { get; set; }
@@ -93,20 +92,20 @@ namespace GraphQLParser.AST
9392
public void Dispose() { }
9493
protected virtual void Dispose(bool disposing) { }
9594
}
96-
public class GraphQLEnumTypeDefinition : GraphQLParser.AST.GraphQLTypeDefinitionWithDescription, GraphQLParser.AST.IHasDirectivesNode
95+
public class GraphQLEnumTypeDefinition : GraphQLParser.AST.GraphQLTypeDefinition, GraphQLParser.AST.IHasDirectivesNode
9796
{
9897
public GraphQLEnumTypeDefinition() { }
9998
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLDirective>? Directives { get; set; }
10099
public override GraphQLParser.AST.ASTNodeKind Kind { get; }
101100
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLEnumValueDefinition>? Values { get; set; }
102101
}
103-
public class GraphQLEnumValueDefinition : GraphQLParser.AST.GraphQLTypeDefinitionWithDescription, GraphQLParser.AST.IHasDirectivesNode
102+
public class GraphQLEnumValueDefinition : GraphQLParser.AST.GraphQLTypeDefinition, GraphQLParser.AST.IHasDirectivesNode
104103
{
105104
public GraphQLEnumValueDefinition() { }
106105
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLDirective>? Directives { get; set; }
107106
public override GraphQLParser.AST.ASTNodeKind Kind { get; }
108107
}
109-
public class GraphQLFieldDefinition : GraphQLParser.AST.GraphQLTypeDefinitionWithDescription, GraphQLParser.AST.IHasDirectivesNode
108+
public class GraphQLFieldDefinition : GraphQLParser.AST.GraphQLTypeDefinition, GraphQLParser.AST.IHasDirectivesNode
110109
{
111110
public GraphQLFieldDefinition() { }
112111
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLInputValueDefinition>? Arguments { get; set; }
@@ -145,22 +144,22 @@ namespace GraphQLParser.AST
145144
public GraphQLParser.AST.GraphQLSelectionSet? SelectionSet { get; set; }
146145
public GraphQLParser.AST.GraphQLNamedType? TypeCondition { get; set; }
147146
}
148-
public class GraphQLInputObjectTypeDefinition : GraphQLParser.AST.GraphQLTypeDefinitionWithDescription, GraphQLParser.AST.IHasDirectivesNode
147+
public class GraphQLInputObjectTypeDefinition : GraphQLParser.AST.GraphQLTypeDefinition, GraphQLParser.AST.IHasDirectivesNode
149148
{
150149
public GraphQLInputObjectTypeDefinition() { }
151150
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLDirective>? Directives { get; set; }
152151
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLInputValueDefinition>? Fields { get; set; }
153152
public override GraphQLParser.AST.ASTNodeKind Kind { get; }
154153
}
155-
public class GraphQLInputValueDefinition : GraphQLParser.AST.GraphQLTypeDefinitionWithDescription, GraphQLParser.AST.IHasDirectivesNode
154+
public class GraphQLInputValueDefinition : GraphQLParser.AST.GraphQLTypeDefinition, GraphQLParser.AST.IHasDirectivesNode
156155
{
157156
public GraphQLInputValueDefinition() { }
158157
public GraphQLParser.AST.GraphQLValue? DefaultValue { get; set; }
159158
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLDirective>? Directives { get; set; }
160159
public override GraphQLParser.AST.ASTNodeKind Kind { get; }
161160
public GraphQLParser.AST.GraphQLType? Type { get; set; }
162161
}
163-
public class GraphQLInterfaceTypeDefinition : GraphQLParser.AST.GraphQLTypeDefinitionWithDescription, GraphQLParser.AST.IHasDirectivesNode
162+
public class GraphQLInterfaceTypeDefinition : GraphQLParser.AST.GraphQLTypeDefinition, GraphQLParser.AST.IHasDirectivesNode
164163
{
165164
public GraphQLInterfaceTypeDefinition() { }
166165
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLDirective>? Directives { get; set; }
@@ -221,7 +220,7 @@ namespace GraphQLParser.AST
221220
public GraphQLParser.AST.GraphQLName? Name { get; set; }
222221
public GraphQLParser.AST.GraphQLValue? Value { get; set; }
223222
}
224-
public class GraphQLObjectTypeDefinition : GraphQLParser.AST.GraphQLTypeDefinitionWithDescription, GraphQLParser.AST.IHasDirectivesNode
223+
public class GraphQLObjectTypeDefinition : GraphQLParser.AST.GraphQLTypeDefinition, GraphQLParser.AST.IHasDirectivesNode
225224
{
226225
public GraphQLObjectTypeDefinition() { }
227226
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLDirective>? Directives { get; set; }
@@ -252,7 +251,7 @@ namespace GraphQLParser.AST
252251
public GraphQLParser.AST.OperationType Operation { get; set; }
253252
public GraphQLParser.AST.GraphQLNamedType? Type { get; set; }
254253
}
255-
public class GraphQLScalarTypeDefinition : GraphQLParser.AST.GraphQLTypeDefinitionWithDescription, GraphQLParser.AST.IHasDirectivesNode
254+
public class GraphQLScalarTypeDefinition : GraphQLParser.AST.GraphQLTypeDefinition, GraphQLParser.AST.IHasDirectivesNode
256255
{
257256
public GraphQLScalarTypeDefinition() { }
258257
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLDirective>? Directives { get; set; }
@@ -265,9 +264,10 @@ namespace GraphQLParser.AST
265264
public GraphQLParser.ROM Value { get; set; }
266265
public override string? ToString() { }
267266
}
268-
public class GraphQLSchemaDefinition : GraphQLParser.AST.ASTNode, GraphQLParser.AST.IHasDirectivesNode
267+
public class GraphQLSchemaDefinition : GraphQLParser.AST.ASTNode, GraphQLParser.AST.IHasDescriptionNode, GraphQLParser.AST.IHasDirectivesNode
269268
{
270269
public GraphQLSchemaDefinition() { }
270+
public GraphQLParser.AST.GraphQLDescription? Description { get; set; }
271271
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLDirective>? Directives { get; set; }
272272
public override GraphQLParser.AST.ASTNodeKind Kind { get; }
273273
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLOperationTypeDefinition>? OperationTypes { get; set; }
@@ -282,23 +282,19 @@ namespace GraphQLParser.AST
282282
{
283283
protected GraphQLType() { }
284284
}
285-
public abstract class GraphQLTypeDefinition : GraphQLParser.AST.ASTNode, GraphQLParser.AST.INamedNode
285+
public abstract class GraphQLTypeDefinition : GraphQLParser.AST.ASTNode, GraphQLParser.AST.IHasDescriptionNode, GraphQLParser.AST.INamedNode
286286
{
287287
protected GraphQLTypeDefinition() { }
288-
public GraphQLParser.AST.GraphQLName? Name { get; set; }
289-
}
290-
public abstract class GraphQLTypeDefinitionWithDescription : GraphQLParser.AST.GraphQLTypeDefinition, GraphQLParser.AST.IHasDescription
291-
{
292-
protected GraphQLTypeDefinitionWithDescription() { }
293288
public GraphQLParser.AST.GraphQLDescription? Description { get; set; }
289+
public GraphQLParser.AST.GraphQLName? Name { get; set; }
294290
}
295291
public class GraphQLTypeExtensionDefinition : GraphQLParser.AST.GraphQLTypeDefinition
296292
{
297293
public GraphQLTypeExtensionDefinition() { }
298294
public GraphQLParser.AST.GraphQLObjectTypeDefinition? Definition { get; set; }
299295
public override GraphQLParser.AST.ASTNodeKind Kind { get; }
300296
}
301-
public class GraphQLUnionTypeDefinition : GraphQLParser.AST.GraphQLTypeDefinitionWithDescription, GraphQLParser.AST.IHasDirectivesNode
297+
public class GraphQLUnionTypeDefinition : GraphQLParser.AST.GraphQLTypeDefinition, GraphQLParser.AST.IHasDirectivesNode
302298
{
303299
public GraphQLUnionTypeDefinition() { }
304300
public System.Collections.Generic.List<GraphQLParser.AST.GraphQLDirective>? Directives { get; set; }
@@ -323,7 +319,7 @@ namespace GraphQLParser.AST
323319
public GraphQLParser.AST.GraphQLType? Type { get; set; }
324320
public GraphQLParser.AST.GraphQLVariable? Variable { get; set; }
325321
}
326-
public interface IHasDescription
322+
public interface IHasDescriptionNode
327323
{
328324
GraphQLParser.AST.GraphQLDescription? Description { get; set; }
329325
}
@@ -390,11 +386,13 @@ namespace GraphQLParser
390386
public virtual GraphQLParser.AST.GraphQLVariable EndVisitVariable(GraphQLParser.AST.GraphQLVariable variable) { }
391387
public virtual void Visit(GraphQLParser.AST.GraphQLDocument ast) { }
392388
}
389+
[System.Flags]
393390
public enum IgnoreOptions
394391
{
395-
IgnoreComments = 0,
396-
IgnoreCommentsAndLocations = 1,
397-
None = 2,
392+
None = 0,
393+
Comments = 1,
394+
Locations = 2,
395+
All = 3,
398396
}
399397
public static class Lexer
400398
{

src/GraphQLParser.Benchmarks/Benchmarks/ParserBenchmark.cs

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@ private class ParserOrderer : IOrderer
2828
private static int GetOrder(object o) => o switch
2929
{
3030
IgnoreOptions.None => 1,
31-
IgnoreOptions.IgnoreComments => 2,
32-
IgnoreOptions.IgnoreCommentsAndLocations => 3,
33-
_ => 4
31+
IgnoreOptions.Comments => 2,
32+
IgnoreOptions.Locations => 3,
33+
IgnoreOptions.All => 4,
34+
_ => 5
3435
};
3536

3637
public IEnumerable<BenchmarkCase> GetExecutionOrder(ImmutableArray<BenchmarkCase> benchmarksCase) => benchmarksCase;
@@ -62,32 +63,39 @@ public void Parse(string name, IgnoreOptions options)
6263
public IEnumerable<object[]> NamesAndOptions()
6364
{
6465
yield return new object[] { "hero", IgnoreOptions.None };
65-
yield return new object[] { "hero", IgnoreOptions.IgnoreComments };
66-
yield return new object[] { "hero", IgnoreOptions.IgnoreCommentsAndLocations };
66+
yield return new object[] { "hero", IgnoreOptions.Comments };
67+
yield return new object[] { "hero", IgnoreOptions.Locations };
68+
yield return new object[] { "hero", IgnoreOptions.All };
6769

6870
yield return new object[] { "escapes", IgnoreOptions.None };
69-
yield return new object[] { "escapes", IgnoreOptions.IgnoreComments };
70-
yield return new object[] { "escapes", IgnoreOptions.IgnoreCommentsAndLocations };
71+
yield return new object[] { "escapes", IgnoreOptions.Comments };
72+
yield return new object[] { "escapes", IgnoreOptions.Locations };
73+
yield return new object[] { "escapes", IgnoreOptions.All };
7174

7275
yield return new object[] { "kitchen", IgnoreOptions.None };
73-
yield return new object[] { "kitchen", IgnoreOptions.IgnoreComments };
74-
yield return new object[] { "kitchen", IgnoreOptions.IgnoreCommentsAndLocations };
76+
yield return new object[] { "kitchen", IgnoreOptions.Comments };
77+
yield return new object[] { "kitchen", IgnoreOptions.Locations };
78+
yield return new object[] { "kitchen", IgnoreOptions.All };
7579

7680
yield return new object[] { "introspection", IgnoreOptions.None };
77-
yield return new object[] { "introspection", IgnoreOptions.IgnoreComments };
78-
yield return new object[] { "introspection", IgnoreOptions.IgnoreCommentsAndLocations };
81+
yield return new object[] { "introspection", IgnoreOptions.Comments };
82+
yield return new object[] { "introspection", IgnoreOptions.Locations };
83+
yield return new object[] { "introspection", IgnoreOptions.All };
7984

8085
yield return new object[] { "params", IgnoreOptions.None };
81-
yield return new object[] { "params", IgnoreOptions.IgnoreComments };
82-
yield return new object[] { "params", IgnoreOptions.IgnoreCommentsAndLocations };
86+
yield return new object[] { "params", IgnoreOptions.Comments };
87+
yield return new object[] { "params", IgnoreOptions.Locations };
88+
yield return new object[] { "params", IgnoreOptions.All };
8389

8490
yield return new object[] { "variables", IgnoreOptions.None };
85-
yield return new object[] { "variables", IgnoreOptions.IgnoreComments };
86-
yield return new object[] { "variables", IgnoreOptions.IgnoreCommentsAndLocations };
91+
yield return new object[] { "variables", IgnoreOptions.Comments };
92+
yield return new object[] { "variables", IgnoreOptions.Locations };
93+
yield return new object[] { "variables", IgnoreOptions.All };
8794

8895
yield return new object[] { "github", IgnoreOptions.None };
89-
yield return new object[] { "github", IgnoreOptions.IgnoreComments };
90-
yield return new object[] { "github", IgnoreOptions.IgnoreCommentsAndLocations };
96+
yield return new object[] { "github", IgnoreOptions.Comments };
97+
yield return new object[] { "github", IgnoreOptions.Locations };
98+
yield return new object[] { "github", IgnoreOptions.All };
9199
}
92100

93101
public override void Run() => Parse("params", IgnoreOptions.None);

0 commit comments

Comments
 (0)