CodeGeneration\SyntaxGeneratorTests.cs (2455)
66VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(0), "0");
67VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(1), "1");
68VerifySyntax<PrefixUnaryExpressionSyntax>(Generator.LiteralExpression(-1), "-1");
69VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(int.MinValue), "global::System.Int32.MinValue");
70VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(int.MaxValue), "global::System.Int32.MaxValue");
72VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(0L), "0L");
73VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(1L), "1L");
74VerifySyntax<PrefixUnaryExpressionSyntax>(Generator.LiteralExpression(-1L), "-1L");
75VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(long.MinValue), "global::System.Int64.MinValue");
76VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(long.MaxValue), "global::System.Int64.MaxValue");
78VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(0UL), "0UL");
79VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(1UL), "1UL");
80VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(ulong.MinValue), "0UL");
81VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(ulong.MaxValue), "global::System.UInt64.MaxValue");
83VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(0.0f), "0F");
84VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(1.0f), "1F");
85VerifySyntax<PrefixUnaryExpressionSyntax>(Generator.LiteralExpression(-1.0f), "-1F");
86VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(float.MinValue), "global::System.Single.MinValue");
87VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(float.MaxValue), "global::System.Single.MaxValue");
88VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(float.Epsilon), "global::System.Single.Epsilon");
89VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(float.NaN), "global::System.Single.NaN");
90VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(float.NegativeInfinity), "global::System.Single.NegativeInfinity");
91VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(float.PositiveInfinity), "global::System.Single.PositiveInfinity");
93VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(0.0), "0D");
94VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(1.0), "1D");
95VerifySyntax<PrefixUnaryExpressionSyntax>(Generator.LiteralExpression(-1.0), "-1D");
96VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(double.MinValue), "global::System.Double.MinValue");
97VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(double.MaxValue), "global::System.Double.MaxValue");
98VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(double.Epsilon), "global::System.Double.Epsilon");
99VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(double.NaN), "global::System.Double.NaN");
100VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(double.NegativeInfinity), "global::System.Double.NegativeInfinity");
101VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(double.PositiveInfinity), "global::System.Double.PositiveInfinity");
103VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(0m), "0M");
104VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(0.00m), "0.00M");
105VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(1.00m), "1.00M");
106VerifySyntax<PrefixUnaryExpressionSyntax>(Generator.LiteralExpression(-1.00m), "-1.00M");
107VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(1.0000000000m), "1.0000000000M");
108VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(0.000000m), "0.000000M");
109VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(0.0000000m), "0.0000000M");
110VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(1000000000m), "1000000000M");
111VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(123456789.123456789m), "123456789.123456789M");
112VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(1E-28m), "0.0000000000000000000000000001M");
113VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(0E-28m), "0.0000000000000000000000000000M");
114VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(1E-29m), "0.0000000000000000000000000000M");
115VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(-1E-29m), "0.0000000000000000000000000000M");
116VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(decimal.MinValue), "global::System.Decimal.MinValue");
117VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(decimal.MaxValue), "global::System.Decimal.MaxValue");
119VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression('c'), "'c'");
121VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression("str"), "\"str\"");
122VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression("s\"t\"r"), "\"s\\\"t\\\"r\"");
124VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(true), "true");
125VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(false), "false");
131VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression((short)0), "0");
132VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression((short)1), "1");
133VerifySyntax<PrefixUnaryExpressionSyntax>(Generator.LiteralExpression((short)-1), "-1");
134VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(short.MinValue), "global::System.Int16.MinValue");
135VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(short.MaxValue), "global::System.Int16.MaxValue");
141VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression((ushort)0), "0");
142VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression((ushort)1), "1");
143VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(ushort.MinValue), "0");
144VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(ushort.MaxValue), "global::System.UInt16.MaxValue");
150VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression((sbyte)0), "0");
151VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression((sbyte)1), "1");
152VerifySyntax<PrefixUnaryExpressionSyntax>(Generator.LiteralExpression((sbyte)-1), "-1");
153VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(sbyte.MinValue), "global::System.SByte.MinValue");
154VerifySyntax<MemberAccessExpressionSyntax>(Generator.LiteralExpression(sbyte.MaxValue), "global::System.SByte.MaxValue");
160VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression((byte)0), "0");
161VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression((byte)1), "1");
162VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(byte.MinValue), "0");
163VerifySyntax<LiteralExpressionSyntax>(Generator.LiteralExpression(byte.MaxValue), "255");
169VerifySyntax<AttributeListSyntax>(Generator.Attribute(GetAttributeData(
175VerifySyntax<AttributeListSyntax>(Generator.Attribute(GetAttributeData(
181VerifySyntax<AttributeListSyntax>(Generator.Attribute(GetAttributeData(
187VerifySyntax<AttributeListSyntax>(Generator.Attribute(GetAttributeData(
193VerifySyntax<AttributeListSyntax>(Generator.Attribute(GetAttributeData(
199VerifySyntax<AttributeListSyntax>(Generator.Attribute(GetAttributeData(
206VerifySyntax<AttributeListSyntax>(Generator.Attribute(GetAttributeData(
212VerifySyntax<AttributeListSyntax>(Generator.Attribute(GetAttributeData(
218VerifySyntax<AttributeListSyntax>(Generator.Attribute(GetAttributeData(
224var attributes = Generator.GetAttributes(Generator.AddAttributes(
225Generator.NamespaceDeclaration("n"),
226Generator.Attribute("Attr")));
240VerifySyntax<IdentifierNameSyntax>(Generator.IdentifierName("x"), "x");
241VerifySyntax<QualifiedNameSyntax>(Generator.QualifiedName(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "x.y");
242VerifySyntax<QualifiedNameSyntax>(Generator.DottedName("x.y"), "x.y");
244VerifySyntax<GenericNameSyntax>(Generator.GenericName("x", Generator.IdentifierName("y")), "x<y>");
245VerifySyntax<GenericNameSyntax>(Generator.GenericName("x", Generator.IdentifierName("y"), Generator.IdentifierName("z")), "x<y, z>");
248VerifySyntax<GenericNameSyntax>(Generator.WithTypeArguments(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "x<y>");
251VerifySyntax<QualifiedNameSyntax>(Generator.WithTypeArguments(Generator.DottedName("x.y"), Generator.IdentifierName("z")), "x.y<z>");
254VerifySyntax<MemberAccessExpressionSyntax>(Generator.WithTypeArguments(Generator.MemberAccessExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), Generator.IdentifierName("z")), "x.y<z>");
257var gname = Generator.WithTypeArguments(Generator.IdentifierName("x"), Generator.IdentifierName("y"));
259VerifySyntax<GenericNameSyntax>(Generator.WithTypeArguments(gname, Generator.IdentifierName("z")), "x<z>");
266VerifySyntax<TypeSyntax>(Generator.IdentifierName("x"), "x");
267VerifySyntax<TypeSyntax>(Generator.QualifiedName(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "x.y");
268VerifySyntax<TypeSyntax>(Generator.DottedName("x.y"), "x.y");
269VerifySyntax<TypeSyntax>(Generator.GenericName("x", Generator.IdentifierName("y")), "x<y>");
270VerifySyntax<TypeSyntax>(Generator.GenericName("x", Generator.IdentifierName("y"), Generator.IdentifierName("z")), "x<y, z>");
272VerifySyntax<TypeSyntax>(Generator.ArrayTypeExpression(Generator.IdentifierName("x")), "x[]");
273VerifySyntax<TypeSyntax>(Generator.ArrayTypeExpression(Generator.ArrayTypeExpression(Generator.IdentifierName("x"))), "x[][]");
274VerifySyntax<TypeSyntax>(Generator.NullableTypeExpression(Generator.IdentifierName("x")), "x?");
275VerifySyntax<TypeSyntax>(Generator.NullableTypeExpression(Generator.NullableTypeExpression(Generator.IdentifierName("x"))), "x?");
278VerifySyntax<TupleElementSyntax>(Generator.TupleElementExpression(Generator.IdentifierName("x")), "x");
279VerifySyntax<TupleElementSyntax>(Generator.TupleElementExpression(Generator.IdentifierName("x"), "y"), "x y");
280VerifySyntax<TupleElementSyntax>(Generator.TupleElementExpression(intType), "global::System.Int32");
281VerifySyntax<TupleElementSyntax>(Generator.TupleElementExpression(intType, "y"), "global::System.Int32 y");
282VerifySyntax<TypeSyntax>(Generator.TupleTypeExpression(Generator.TupleElementExpression(Generator.IdentifierName("x")), Generator.TupleElementExpression(Generator.IdentifierName("y"))), "(x, y)");
283VerifySyntax<TypeSyntax>(Generator.TupleTypeExpression(new[] { intType, intType }), "(global::System.Int32, global::System.Int32)");
284VerifySyntax<TypeSyntax>(Generator.TupleTypeExpression(new[] { intType, intType }, ["x", "y"]), "(global::System.Int32 x, global::System.Int32 y)");
290VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_Byte), "byte");
291VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_SByte), "sbyte");
293VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_Int16), "short");
294VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_UInt16), "ushort");
296VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_Int32), "int");
297VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_UInt32), "uint");
299VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_Int64), "long");
300VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_UInt64), "ulong");
302VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_Single), "float");
303VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_Double), "double");
305VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_Char), "char");
306VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_String), "string");
308VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_Object), "object");
309VerifySyntax<TypeSyntax>(Generator.TypeExpression(SpecialType.System_Decimal), "decimal");
316VerifySyntax<QualifiedNameSyntax>(Generator.TypeExpression(genericType), "global::System.Collections.Generic.IEnumerable<T>");
319VerifySyntax<ArrayTypeSyntax>(Generator.TypeExpression(arrayType), "global::System.Int32[]");
325VerifySyntax<PrefixUnaryExpressionSyntax>(Generator.NegateExpression(Generator.IdentifierName("x")), "-(x)");
326VerifySyntax<BinaryExpressionSyntax>(Generator.AddExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) + (y)");
327VerifySyntax<BinaryExpressionSyntax>(Generator.SubtractExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) - (y)");
328VerifySyntax<BinaryExpressionSyntax>(Generator.MultiplyExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) * (y)");
329VerifySyntax<BinaryExpressionSyntax>(Generator.DivideExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) / (y)");
330VerifySyntax<BinaryExpressionSyntax>(Generator.ModuloExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) % (y)");
332VerifySyntax<PrefixUnaryExpressionSyntax>(Generator.BitwiseNotExpression(Generator.IdentifierName("x")), "~(x)");
333VerifySyntax<BinaryExpressionSyntax>(Generator.BitwiseAndExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) & (y)");
334VerifySyntax<BinaryExpressionSyntax>(Generator.BitwiseOrExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) | (y)");
336VerifySyntax<PrefixUnaryExpressionSyntax>(Generator.LogicalNotExpression(Generator.IdentifierName("x")), "!(x)");
337VerifySyntax<BinaryExpressionSyntax>(Generator.LogicalAndExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) && (y)");
338VerifySyntax<BinaryExpressionSyntax>(Generator.LogicalOrExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) || (y)");
344VerifySyntax<BinaryExpressionSyntax>(Generator.ReferenceEqualsExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) == (y)");
345VerifySyntax<BinaryExpressionSyntax>(Generator.ValueEqualsExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) == (y)");
347VerifySyntax<BinaryExpressionSyntax>(Generator.ReferenceNotEqualsExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) != (y)");
348VerifySyntax<BinaryExpressionSyntax>(Generator.ValueNotEqualsExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) != (y)");
350VerifySyntax<BinaryExpressionSyntax>(Generator.LessThanExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) < (y)");
351VerifySyntax<BinaryExpressionSyntax>(Generator.LessThanOrEqualExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) <= (y)");
353VerifySyntax<BinaryExpressionSyntax>(Generator.GreaterThanExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) > (y)");
354VerifySyntax<BinaryExpressionSyntax>(Generator.GreaterThanOrEqualExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) >= (y)");
360VerifySyntax<BinaryExpressionSyntax>(Generator.CoalesceExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) ?? (y)");
361VerifySyntax<ConditionalExpressionSyntax>(Generator.ConditionalExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y"), Generator.IdentifierName("z")), "(x) ? (y) : (z)");
367VerifySyntax<MemberAccessExpressionSyntax>(Generator.MemberAccessExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "x.y");
368VerifySyntax<MemberAccessExpressionSyntax>(Generator.MemberAccessExpression(Generator.IdentifierName("x"), "y"), "x.y");
369VerifySyntax<MemberAccessExpressionSyntax>(Generator.MemberAccessExpression(Generator.MemberAccessExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), Generator.IdentifierName("z")), "x.y.z");
370VerifySyntax<MemberAccessExpressionSyntax>(Generator.MemberAccessExpression(Generator.InvocationExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), Generator.IdentifierName("z")), "x(y).z");
371VerifySyntax<MemberAccessExpressionSyntax>(Generator.MemberAccessExpression(Generator.ElementAccessExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), Generator.IdentifierName("z")), "x[y].z");
372VerifySyntax<MemberAccessExpressionSyntax>(Generator.MemberAccessExpression(Generator.AddExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), Generator.IdentifierName("z")), "((x) + (y)).z");
373VerifySyntax<MemberAccessExpressionSyntax>(Generator.MemberAccessExpression(Generator.NegateExpression(Generator.IdentifierName("x")), Generator.IdentifierName("y")), "(-(x)).y");
380Generator.ArrayCreationExpression(Generator.IdentifierName("x"), Generator.LiteralExpression(10)),
384Generator.ArrayCreationExpression(Generator.IdentifierName("x"), new SyntaxNode[] { Generator.IdentifierName("y"), Generator.IdentifierName("z") }),
398Generator.ObjectCreationExpression(Generator.IdentifierName("x")),
402Generator.ObjectCreationExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")),
410Generator.ObjectCreationExpression(listOfIntType, Generator.IdentifierName("y")),
418Generator.ElementAccessExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")),
422Generator.ElementAccessExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y"), Generator.IdentifierName("z")),
426Generator.ElementAccessExpression(Generator.MemberAccessExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), Generator.IdentifierName("z")),
430Generator.ElementAccessExpression(Generator.ElementAccessExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), Generator.IdentifierName("z")),
434Generator.ElementAccessExpression(Generator.InvocationExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), Generator.IdentifierName("z")),
438Generator.ElementAccessExpression(Generator.AddExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), Generator.IdentifierName("z")),
445VerifySyntax<CastExpressionSyntax>(Generator.CastExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x)(y)");
446VerifySyntax<CastExpressionSyntax>(Generator.ConvertExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x)(y)");
452VerifySyntax<BinaryExpressionSyntax>(Generator.IsTypeExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) is y");
453VerifySyntax<BinaryExpressionSyntax>(Generator.TryCastExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "(x) as y");
454VerifySyntax<TypeOfExpressionSyntax>(Generator.TypeOfExpression(Generator.IdentifierName("x")), "typeof(x)");
461VerifySyntax<InvocationExpressionSyntax>(Generator.InvocationExpression(Generator.IdentifierName("x")), "x()");
462VerifySyntax<InvocationExpressionSyntax>(Generator.InvocationExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "x(y)");
463VerifySyntax<InvocationExpressionSyntax>(Generator.InvocationExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y"), Generator.IdentifierName("z")), "x(y, z)");
466VerifySyntax<InvocationExpressionSyntax>(Generator.InvocationExpression(Generator.IdentifierName("x"), Generator.Argument(Generator.IdentifierName("y"))), "x(y)");
467VerifySyntax<InvocationExpressionSyntax>(Generator.InvocationExpression(Generator.IdentifierName("x"), Generator.Argument(RefKind.Ref, Generator.IdentifierName("y"))), "x(ref y)");
468VerifySyntax<InvocationExpressionSyntax>(Generator.InvocationExpression(Generator.IdentifierName("x"), Generator.Argument(RefKind.Out, Generator.IdentifierName("y"))), "x(out y)");
471VerifySyntax<InvocationExpressionSyntax>(Generator.InvocationExpression(Generator.MemberAccessExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y"))), "x.y()");
472VerifySyntax<InvocationExpressionSyntax>(Generator.InvocationExpression(Generator.ElementAccessExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y"))), "x[y]()");
473VerifySyntax<InvocationExpressionSyntax>(Generator.InvocationExpression(Generator.InvocationExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y"))), "x(y)()");
474VerifySyntax<InvocationExpressionSyntax>(Generator.InvocationExpression(Generator.AddExpression(Generator.IdentifierName("x"), Generator.IdentifierName("y"))), "((x) + (y))()");
479=> VerifySyntax<AssignmentExpressionSyntax>(Generator.AssignmentStatement(Generator.IdentifierName("x"), Generator.IdentifierName("y")), "x = (y)");
484VerifySyntax<ExpressionStatementSyntax>(Generator.ExpressionStatement(Generator.IdentifierName("x")), "x;");
485VerifySyntax<ExpressionStatementSyntax>(Generator.ExpressionStatement(Generator.InvocationExpression(Generator.IdentifierName("x"))), "x();");
491VerifySyntax<LocalDeclarationStatementSyntax>(Generator.LocalDeclarationStatement(Generator.IdentifierName("x"), "y"), "x y;");
492VerifySyntax<LocalDeclarationStatementSyntax>(Generator.LocalDeclarationStatement(Generator.IdentifierName("x"), "y", Generator.IdentifierName("z")), "x y = z;");
494VerifySyntax<LocalDeclarationStatementSyntax>(Generator.LocalDeclarationStatement(Generator.IdentifierName("x"), "y", isConst: true), "const x y;");
495VerifySyntax<LocalDeclarationStatementSyntax>(Generator.LocalDeclarationStatement(Generator.IdentifierName("x"), "y", Generator.IdentifierName("z"), isConst: true), "const x y = z;");
497VerifySyntax<LocalDeclarationStatementSyntax>(Generator.LocalDeclarationStatement("y", Generator.IdentifierName("z")), "var y = z;");
504Generator.AddEventHandler(Generator.IdentifierName("@event"), Generator.IdentifierName("handler")),
512Generator.RemoveEventHandler(Generator.IdentifierName("@event"),
513Generator.IdentifierName("handler")), "@event -= (handler)");
518=> VerifySyntax<AwaitExpressionSyntax>(Generator.AwaitExpression(Generator.IdentifierName("x")), "await x");
522=> VerifySyntax<InvocationExpressionSyntax>(Generator.NameOfExpression(Generator.IdentifierName("x")), "nameof(x)");
527VerifySyntax<TupleExpressionSyntax>(Generator.TupleExpression(
528[Generator.IdentifierName("x"), Generator.IdentifierName("y")]), "(x, y)");
530VerifySyntax<TupleExpressionSyntax>(Generator.TupleExpression([
531Generator.Argument("goo", RefKind.None, Generator.IdentifierName("x")),
532Generator.Argument("bar", RefKind.None, Generator.IdentifierName("y"))]), "(goo: x, bar: y)");
538VerifySyntax<ReturnStatementSyntax>(Generator.ReturnStatement(), "return;");
539VerifySyntax<ReturnStatementSyntax>(Generator.ReturnStatement(Generator.IdentifierName("x")), "return x;");
545VerifySyntax<YieldStatementSyntax>(Generator.YieldReturnStatement(Generator.LiteralExpression(1)), "yield return 1;");
546VerifySyntax<YieldStatementSyntax>(Generator.YieldReturnStatement(Generator.IdentifierName("x")), "yield return x;");
552VerifySyntax<ThrowStatementSyntax>(Generator.ThrowStatement(), "throw;");
553VerifySyntax<ThrowStatementSyntax>(Generator.ThrowStatement(Generator.IdentifierName("x")), "throw x;");
560Generator.IfStatement(Generator.IdentifierName("x"), new SyntaxNode[] { }),
564Generator.IfStatement(Generator.IdentifierName("x"), new SyntaxNode[] { }, new SyntaxNode[] { }),
568Generator.IfStatement(Generator.IdentifierName("x"),
569new SyntaxNode[] { Generator.IdentifierName("y") }),
573Generator.IfStatement(Generator.IdentifierName("x"),
574new SyntaxNode[] { Generator.IdentifierName("y") },
575new SyntaxNode[] { Generator.IdentifierName("z") }),
579Generator.IfStatement(Generator.IdentifierName("x"),
580new SyntaxNode[] { Generator.IdentifierName("y") },
581Generator.IfStatement(Generator.IdentifierName("p"), new SyntaxNode[] { Generator.IdentifierName("q") })),
585Generator.IfStatement(Generator.IdentifierName("x"),
586new SyntaxNode[] { Generator.IdentifierName("y") },
587Generator.IfStatement(Generator.IdentifierName("p"), new SyntaxNode[] { Generator.IdentifierName("q") }, Generator.IdentifierName("z"))),
595Generator.SwitchStatement(Generator.IdentifierName("x"),
596Generator.SwitchSection(Generator.IdentifierName("y"),
597[Generator.IdentifierName("z")])),
601Generator.SwitchStatement(Generator.IdentifierName("x"),
602Generator.SwitchSection(
603[Generator.IdentifierName("y"), Generator.IdentifierName("p"), Generator.IdentifierName("q")],
604[Generator.IdentifierName("z")])),
608Generator.SwitchStatement(Generator.IdentifierName("x"),
609Generator.SwitchSection(Generator.IdentifierName("y"),
610[Generator.IdentifierName("z")]),
611Generator.SwitchSection(Generator.IdentifierName("a"),
612[Generator.IdentifierName("b")])),
616Generator.SwitchStatement(Generator.IdentifierName("x"),
617Generator.SwitchSection(Generator.IdentifierName("y"),
618[Generator.IdentifierName("z")]),
619Generator.DefaultSwitchSection(
620[Generator.IdentifierName("b")])),
624Generator.SwitchStatement(Generator.IdentifierName("x"),
625Generator.SwitchSection(Generator.IdentifierName("y"),
626[Generator.ExitSwitchStatement()])),
630Generator.SwitchStatement(Generator.TupleExpression([Generator.IdentifierName("x1"), Generator.IdentifierName("x2")]),
631Generator.SwitchSection(Generator.IdentifierName("y"),
632[Generator.IdentifierName("z")])),
641Generator.UsingStatement(Generator.IdentifierName("x"), [Generator.IdentifierName("y")]),
645Generator.UsingStatement("x", Generator.IdentifierName("y"), [Generator.IdentifierName("z")]),
649Generator.UsingStatement(Generator.IdentifierName("x"), "y", Generator.IdentifierName("z"), [Generator.IdentifierName("q")]),
657Generator.LockStatement(Generator.IdentifierName("x"), [Generator.IdentifierName("y")]),
665Generator.TryCatchStatement(
666[Generator.IdentifierName("x")],
667Generator.CatchClause(Generator.IdentifierName("y"), "z",
668[Generator.IdentifierName("a")])),
672Generator.TryCatchStatement(
673[Generator.IdentifierName("s")],
674Generator.CatchClause(Generator.IdentifierName("x"), "y",
675[Generator.IdentifierName("z")]),
676Generator.CatchClause(Generator.IdentifierName("a"), "b",
677[Generator.IdentifierName("c")])),
681Generator.TryCatchStatement(
682[Generator.IdentifierName("s")],
683[Generator.CatchClause(Generator.IdentifierName("x"), "y", [Generator.IdentifierName("z")])],
684[Generator.IdentifierName("a")]),
688Generator.TryFinallyStatement(
689[Generator.IdentifierName("x")],
690[Generator.IdentifierName("a")]),
698Generator.WhileStatement(Generator.IdentifierName("x"),
699[Generator.IdentifierName("y")]),
703Generator.WhileStatement(Generator.IdentifierName("x"), null),
711Generator.ValueReturningLambdaExpression("x", Generator.IdentifierName("y")),
715Generator.ValueReturningLambdaExpression(new[] { Generator.LambdaParameter("x"), Generator.LambdaParameter("y") }, Generator.IdentifierName("z")),
719Generator.ValueReturningLambdaExpression(new SyntaxNode[] { }, Generator.IdentifierName("y")),
723Generator.VoidReturningLambdaExpression("x", Generator.IdentifierName("y")),
727Generator.VoidReturningLambdaExpression(new[] { Generator.LambdaParameter("x"), Generator.LambdaParameter("y") }, Generator.IdentifierName("z")),
731Generator.VoidReturningLambdaExpression(new SyntaxNode[] { }, Generator.IdentifierName("y")),
735Generator.ValueReturningLambdaExpression("x", [Generator.ReturnStatement(Generator.IdentifierName("y"))]),
739Generator.ValueReturningLambdaExpression(new[] { Generator.LambdaParameter("x"), Generator.LambdaParameter("y") }, [Generator.ReturnStatement(Generator.IdentifierName("z"))]),
743Generator.ValueReturningLambdaExpression(new SyntaxNode[] { }, [Generator.ReturnStatement(Generator.IdentifierName("y"))]),
747Generator.VoidReturningLambdaExpression("x", [Generator.IdentifierName("y")]),
751Generator.VoidReturningLambdaExpression(new[] { Generator.LambdaParameter("x"), Generator.LambdaParameter("y") }, [Generator.IdentifierName("z")]),
755Generator.VoidReturningLambdaExpression(new SyntaxNode[] { }, [Generator.IdentifierName("y")]),
759Generator.ValueReturningLambdaExpression(new[] { Generator.LambdaParameter("x", Generator.IdentifierName("y")) }, Generator.IdentifierName("z")),
763Generator.ValueReturningLambdaExpression(new[] { Generator.LambdaParameter("x", Generator.IdentifierName("y")), Generator.LambdaParameter("a", Generator.IdentifierName("b")) }, Generator.IdentifierName("z")),
767Generator.VoidReturningLambdaExpression(new[] { Generator.LambdaParameter("x", Generator.IdentifierName("y")) }, Generator.IdentifierName("z")),
771Generator.VoidReturningLambdaExpression(new[] { Generator.LambdaParameter("x", Generator.IdentifierName("y")), Generator.LambdaParameter("a", Generator.IdentifierName("b")) }, Generator.IdentifierName("z")),
781Generator.FieldDeclaration("fld", Generator.TypeExpression(SpecialType.System_Int32)),
785Generator.FieldDeclaration("fld", Generator.TypeExpression(SpecialType.System_Int32), initializer: Generator.LiteralExpression(0)),
789Generator.FieldDeclaration("fld", Generator.TypeExpression(SpecialType.System_Int32), accessibility: Accessibility.Public),
793Generator.FieldDeclaration("fld", Generator.TypeExpression(SpecialType.System_Int32), accessibility: Accessibility.NotApplicable, modifiers: DeclarationModifiers.Static | DeclarationModifiers.ReadOnly),
797Generator.FieldDeclaration("fld", Generator.TypeExpression(SpecialType.System_Int32), accessibility: Accessibility.NotApplicable, modifiers: DeclarationModifiers.Required),
805Generator.MethodDeclaration("m"),
809Generator.MethodDeclaration("m", typeParameters: ["x", "y"]),
813Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("x")),
817Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("x"), statements: [Generator.IdentifierName("y")]),
821Generator.MethodDeclaration("m", parameters: [Generator.ParameterDeclaration("z", Generator.IdentifierName("y"))], returnType: Generator.IdentifierName("x")),
825Generator.MethodDeclaration("m", parameters: [Generator.ParameterDeclaration("z", Generator.IdentifierName("y"), Generator.IdentifierName("a"))], returnType: Generator.IdentifierName("x")),
829Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("x"), accessibility: Accessibility.Public),
833Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("x"), accessibility: Accessibility.Public, modifiers: DeclarationModifiers.Abstract),
837Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Partial),
841Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Partial, statements: [Generator.IdentifierName("y")]),
845Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Partial | DeclarationModifiers.Async, statements: null),
857var parameters = parameterTypes.Select((t, i) => Generator.ParameterDeclaration("p" + i, Generator.TypeExpression(t))).ToList();
858var returnType = Generator.TypeExpression(SpecialType.System_Boolean);
861Generator.OperatorDeclaration(OperatorKind.Addition, parameters, returnType),
865Generator.OperatorDeclaration(OperatorKind.BitwiseAnd, parameters, returnType),
869Generator.OperatorDeclaration(OperatorKind.BitwiseOr, parameters, returnType),
873Generator.OperatorDeclaration(OperatorKind.Decrement, parameters, returnType),
877Generator.OperatorDeclaration(OperatorKind.Division, parameters, returnType),
881Generator.OperatorDeclaration(OperatorKind.Equality, parameters, returnType),
885Generator.OperatorDeclaration(OperatorKind.ExclusiveOr, parameters, returnType),
889Generator.OperatorDeclaration(OperatorKind.False, parameters, returnType),
893Generator.OperatorDeclaration(OperatorKind.GreaterThan, parameters, returnType),
897Generator.OperatorDeclaration(OperatorKind.GreaterThanOrEqual, parameters, returnType),
901Generator.OperatorDeclaration(OperatorKind.Increment, parameters, returnType),
905Generator.OperatorDeclaration(OperatorKind.Inequality, parameters, returnType),
909Generator.OperatorDeclaration(OperatorKind.LeftShift, parameters, returnType),
913Generator.OperatorDeclaration(OperatorKind.LessThan, parameters, returnType),
917Generator.OperatorDeclaration(OperatorKind.LessThanOrEqual, parameters, returnType),
921Generator.OperatorDeclaration(OperatorKind.LogicalNot, parameters, returnType),
925Generator.OperatorDeclaration(OperatorKind.Modulus, parameters, returnType),
929Generator.OperatorDeclaration(OperatorKind.Multiply, parameters, returnType),
933Generator.OperatorDeclaration(OperatorKind.OnesComplement, parameters, returnType),
937Generator.OperatorDeclaration(OperatorKind.RightShift, parameters, returnType),
941Generator.OperatorDeclaration(OperatorKind.UnsignedRightShift, parameters, returnType),
945Generator.OperatorDeclaration(OperatorKind.Subtraction, parameters, returnType),
949Generator.OperatorDeclaration(OperatorKind.True, parameters, returnType),
953Generator.OperatorDeclaration(OperatorKind.UnaryNegation, parameters, returnType),
957Generator.OperatorDeclaration(OperatorKind.UnaryPlus, parameters, returnType),
963Generator.OperatorDeclaration(OperatorKind.ImplicitConversion, parameters, returnType),
967Generator.OperatorDeclaration(OperatorKind.ExplicitConversion, parameters, returnType),
982VerifySyntax<OperatorDeclarationSyntax>(Generator.OperatorDeclaration(operatorSymbol), "public static global::C operator checked ++(global::C x)\r\n{\r\n}");
993Generator.Declaration(conversion),
1000Generator.Declaration(conversion),
1018Generator.OperatorDeclaration(op),
1026Generator.ConstructorDeclaration(),
1030Generator.ConstructorDeclaration("c"),
1034Generator.ConstructorDeclaration("c", accessibility: Accessibility.Public, modifiers: DeclarationModifiers.Static),
1038Generator.ConstructorDeclaration("c", [Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))]),
1042Generator.ConstructorDeclaration("c",
1043parameters: [Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))],
1044baseConstructorArguments: [Generator.IdentifierName("p")]),
1052Generator.PropertyDeclaration("p", Generator.IdentifierName("x"), modifiers: DeclarationModifiers.Abstract | DeclarationModifiers.ReadOnly),
1056Generator.PropertyDeclaration("p", Generator.IdentifierName("x"), modifiers: DeclarationModifiers.Abstract | DeclarationModifiers.WriteOnly),
1060Generator.PropertyDeclaration("p", Generator.IdentifierName("x"), modifiers: DeclarationModifiers.ReadOnly),
1064Generator.PropertyDeclaration("p", Generator.IdentifierName("x"), modifiers: DeclarationModifiers.ReadOnly, getAccessorStatements: []),
1068Generator.PropertyDeclaration("p", Generator.IdentifierName("x"), modifiers: DeclarationModifiers.WriteOnly),
1072Generator.PropertyDeclaration("p", Generator.IdentifierName("x"), modifiers: DeclarationModifiers.WriteOnly, setAccessorStatements: []),
1076Generator.PropertyDeclaration("p", Generator.IdentifierName("x"), modifiers: DeclarationModifiers.Abstract),
1080Generator.PropertyDeclaration("p", Generator.IdentifierName("x"), modifiers: DeclarationModifiers.Required),
1084Generator.PropertyDeclaration("p", Generator.IdentifierName("x"), modifiers: DeclarationModifiers.ReadOnly, getAccessorStatements: [Generator.IdentifierName("y")]),
1088Generator.PropertyDeclaration("p", Generator.IdentifierName("x"), modifiers: DeclarationModifiers.WriteOnly, setAccessorStatements: [Generator.IdentifierName("y")]),
1092Generator.PropertyDeclaration("p", Generator.IdentifierName("x"), setAccessorStatements: [Generator.IdentifierName("y")]),
1096Generator.PropertyDeclaration("p", Generator.IdentifierName("x"), getAccessorStatements: [], setAccessorStatements: [Generator.IdentifierName("y")]),
1104Generator.IndexerDeclaration([Generator.ParameterDeclaration("z", Generator.IdentifierName("y"))], Generator.IdentifierName("x"), modifiers: DeclarationModifiers.Abstract | DeclarationModifiers.ReadOnly),
1108Generator.IndexerDeclaration([Generator.ParameterDeclaration("z", Generator.IdentifierName("y"))], Generator.IdentifierName("x"), modifiers: DeclarationModifiers.Abstract | DeclarationModifiers.WriteOnly),
1112Generator.IndexerDeclaration([Generator.ParameterDeclaration("z", Generator.IdentifierName("y"))], Generator.IdentifierName("x"), modifiers: DeclarationModifiers.Abstract),
1116Generator.IndexerDeclaration([Generator.ParameterDeclaration("z", Generator.IdentifierName("y"))], Generator.IdentifierName("x"), modifiers: DeclarationModifiers.ReadOnly),
1120Generator.IndexerDeclaration([Generator.ParameterDeclaration("z", Generator.IdentifierName("y"))], Generator.IdentifierName("x"), modifiers: DeclarationModifiers.WriteOnly),
1124Generator.IndexerDeclaration([Generator.ParameterDeclaration("z", Generator.IdentifierName("y"))], Generator.IdentifierName("x"), modifiers: DeclarationModifiers.ReadOnly,
1125getAccessorStatements: [Generator.IdentifierName("a")]),
1129Generator.IndexerDeclaration([Generator.ParameterDeclaration("z", Generator.IdentifierName("y"))], Generator.IdentifierName("x"), modifiers: DeclarationModifiers.WriteOnly,
1130setAccessorStatements: [Generator.IdentifierName("a")]),
1134Generator.IndexerDeclaration([Generator.ParameterDeclaration("z", Generator.IdentifierName("y"))], Generator.IdentifierName("x")),
1138Generator.IndexerDeclaration([Generator.ParameterDeclaration("z", Generator.IdentifierName("y"))], Generator.IdentifierName("x"),
1139setAccessorStatements: [Generator.IdentifierName("a")]),
1143Generator.IndexerDeclaration([Generator.ParameterDeclaration("z", Generator.IdentifierName("y"))], Generator.IdentifierName("x"),
1144getAccessorStatements: [Generator.IdentifierName("a")], setAccessorStatements: [Generator.IdentifierName("b")]),
1152Generator.EventDeclaration("ef", Generator.IdentifierName("t")),
1156Generator.EventDeclaration("ef", Generator.IdentifierName("t"), accessibility: Accessibility.Public),
1160Generator.EventDeclaration("ef", Generator.IdentifierName("t"), modifiers: DeclarationModifiers.Static),
1168Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t"), modifiers: DeclarationModifiers.Abstract),
1172Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t"), accessibility: Accessibility.Public, modifiers: DeclarationModifiers.Abstract),
1176Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t")),
1180Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t"), addAccessorStatements: [Generator.IdentifierName("s")], removeAccessorStatements: [Generator.IdentifierName("s2")]),
1188Generator.AsPublicInterfaceImplementation(
1189Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("t"), modifiers: DeclarationModifiers.Abstract),
1190Generator.IdentifierName("i")),
1194Generator.AsPublicInterfaceImplementation(
1195Generator.PropertyDeclaration("p", Generator.IdentifierName("t"), accessibility: Accessibility.Private, modifiers: DeclarationModifiers.Abstract),
1196Generator.IdentifierName("i")),
1200Generator.AsPublicInterfaceImplementation(
1201Generator.IndexerDeclaration(parameters: [Generator.ParameterDeclaration("p", Generator.IdentifierName("a"))], type: Generator.IdentifierName("t"), accessibility: Accessibility.Internal, modifiers: DeclarationModifiers.Abstract),
1202Generator.IdentifierName("i")),
1206var pim = Generator.AsPrivateInterfaceImplementation(
1207Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("t"), accessibility: Accessibility.Private, modifiers: DeclarationModifiers.Abstract),
1208Generator.IdentifierName("i"));
1211Generator.AsPublicInterfaceImplementation(pim, Generator.IdentifierName("i2")),
1215Generator.AsPublicInterfaceImplementation(pim, Generator.IdentifierName("i2"), "m2"),
1220Generator.AsPublicInterfaceImplementation(
1251Generator.IdentifierName("i")),
1255Generator.AsPublicInterfaceImplementation(
1290Generator.IdentifierName("i")),
1294Generator.AsPublicInterfaceImplementation(
1351Generator.IdentifierName("i")),
1355Generator.AsPublicInterfaceImplementation(
1371Generator.IdentifierName("i")),
1375Generator.AsPublicInterfaceImplementation(
1395Generator.IdentifierName("i")),
1399Generator.AsPublicInterfaceImplementation(
1421Generator.IdentifierName("i")),
1425Generator.AsPublicInterfaceImplementation(
1452Generator.IdentifierName("i")),
1456Generator.AsPublicInterfaceImplementation(
1482Generator.IdentifierName("i")),
1491Generator.AsPrivateInterfaceImplementation(
1492Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("t"), accessibility: Accessibility.Private, modifiers: DeclarationModifiers.Abstract),
1493Generator.IdentifierName("i")),
1497Generator.AsPrivateInterfaceImplementation(
1498Generator.PropertyDeclaration("p", Generator.IdentifierName("t"), accessibility: Accessibility.Internal, modifiers: DeclarationModifiers.Abstract),
1499Generator.IdentifierName("i")),
1503Generator.AsPrivateInterfaceImplementation(
1504Generator.IndexerDeclaration(parameters: [Generator.ParameterDeclaration("p", Generator.IdentifierName("a"))], type: Generator.IdentifierName("t"), accessibility: Accessibility.Protected, modifiers: DeclarationModifiers.Abstract),
1505Generator.IdentifierName("i")),
1509Generator.AsPrivateInterfaceImplementation(
1510Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t"), modifiers: DeclarationModifiers.Abstract),
1511Generator.IdentifierName("i")),
1515var pim = Generator.AsPublicInterfaceImplementation(
1516Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("t"), accessibility: Accessibility.Private, modifiers: DeclarationModifiers.Abstract),
1517Generator.IdentifierName("i"));
1520Generator.AsPrivateInterfaceImplementation(pim, Generator.IdentifierName("i2")),
1524Generator.AsPrivateInterfaceImplementation(pim, Generator.IdentifierName("i2"), "m2"),
1539var method = Generator.GetMembers(iface)[0];
1541var privateMethod = Generator.AsPrivateInterfaceImplementation(method, Generator.IdentifierName("IFace"));
1552Generator.ClassDeclaration("c"),
1556Generator.ClassDeclaration("c", typeParameters: ["x", "y"]),
1560Generator.ClassDeclaration("c", baseType: Generator.IdentifierName("x")),
1564Generator.ClassDeclaration("c", interfaceTypes: [Generator.IdentifierName("x")]),
1568Generator.ClassDeclaration("c", baseType: Generator.IdentifierName("x"), interfaceTypes: [Generator.IdentifierName("y")]),
1572Generator.ClassDeclaration("c", interfaceTypes: new SyntaxNode[] { }),
1576Generator.ClassDeclaration("c", members: [Generator.FieldDeclaration("y", type: Generator.IdentifierName("x"))]),
1580Generator.ClassDeclaration("c", members: [Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("t"))]),
1584Generator.ClassDeclaration("c", members: [Generator.ConstructorDeclaration()]),
1592Generator.StructDeclaration("s"),
1596Generator.StructDeclaration("s", typeParameters: ["x", "y"]),
1600Generator.StructDeclaration("s", interfaceTypes: [Generator.IdentifierName("x")]),
1604Generator.StructDeclaration("s", interfaceTypes: [Generator.IdentifierName("x"), Generator.IdentifierName("y")]),
1608Generator.StructDeclaration("s", interfaceTypes: new SyntaxNode[] { }),
1612Generator.StructDeclaration("s", members: [Generator.FieldDeclaration("y", Generator.IdentifierName("x"))]),
1616Generator.StructDeclaration("s", members: [Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("t"))]),
1620Generator.StructDeclaration("s", members: [Generator.ConstructorDeclaration("xxx")]),
1628Generator.InterfaceDeclaration("i"),
1632Generator.InterfaceDeclaration("i", typeParameters: ["x", "y"]),
1636Generator.InterfaceDeclaration("i", interfaceTypes: [Generator.IdentifierName("a")]),
1640Generator.InterfaceDeclaration("i", interfaceTypes: [Generator.IdentifierName("a"), Generator.IdentifierName("b")]),
1644Generator.InterfaceDeclaration("i", interfaceTypes: new SyntaxNode[] { }),
1648Generator.InterfaceDeclaration("i", members: [Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("t"), accessibility: Accessibility.Public, modifiers: DeclarationModifiers.Sealed)]),
1652Generator.InterfaceDeclaration("i", members: [Generator.PropertyDeclaration("p", Generator.IdentifierName("t"), accessibility: Accessibility.Public, modifiers: DeclarationModifiers.Sealed)]),
1656Generator.InterfaceDeclaration("i", members: [Generator.PropertyDeclaration("p", Generator.IdentifierName("t"), accessibility: Accessibility.Public, modifiers: DeclarationModifiers.ReadOnly)]),
1660Generator.InterfaceDeclaration("i", members: [Generator.IndexerDeclaration([Generator.ParameterDeclaration("y", Generator.IdentifierName("x"))], Generator.IdentifierName("t"), Accessibility.Public, DeclarationModifiers.Sealed)]),
1664Generator.InterfaceDeclaration("i", members: [Generator.IndexerDeclaration([Generator.ParameterDeclaration("y", Generator.IdentifierName("x"))], Generator.IdentifierName("t"), Accessibility.Public, DeclarationModifiers.ReadOnly)]),
1668Generator.InterfaceDeclaration("i", members: [Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t"), accessibility: Accessibility.Public, modifiers: DeclarationModifiers.Static)]),
1672Generator.InterfaceDeclaration("i", members: [Generator.EventDeclaration("ef", Generator.IdentifierName("t"), accessibility: Accessibility.Public, modifiers: DeclarationModifiers.Static)]),
1676Generator.InterfaceDeclaration("i", members: [Generator.FieldDeclaration("f", Generator.IdentifierName("t"), accessibility: Accessibility.Public, modifiers: DeclarationModifiers.Sealed)]),
1690Generator.Declaration(symbol),
1698Generator.EnumDeclaration("e"),
1702Generator.EnumDeclaration("e", members: [Generator.EnumMember("a"), Generator.EnumMember("b"), Generator.EnumMember("c")]),
1706Generator.EnumDeclaration("e", members: [Generator.IdentifierName("a"), Generator.EnumMember("b"), Generator.IdentifierName("c")]),
1710Generator.EnumDeclaration("e", members: [Generator.EnumMember("a", Generator.LiteralExpression(0)), Generator.EnumMember("b"), Generator.EnumMember("c", Generator.LiteralExpression(5))]),
1714Generator.EnumDeclaration("e", members: [Generator.FieldDeclaration("a", Generator.IdentifierName("e"), initializer: Generator.LiteralExpression(1))]),
1722Generator.DelegateDeclaration("d"),
1726Generator.DelegateDeclaration("d", returnType: Generator.IdentifierName("t")),
1730Generator.DelegateDeclaration("d", returnType: Generator.IdentifierName("t"), parameters: [Generator.ParameterDeclaration("p", Generator.IdentifierName("pt"))]),
1734Generator.DelegateDeclaration("d", accessibility: Accessibility.Public),
1738Generator.DelegateDeclaration("d", accessibility: Accessibility.Public),
1742Generator.DelegateDeclaration("d", modifiers: DeclarationModifiers.New),
1746Generator.DelegateDeclaration("d", typeParameters: ["T", "S"]),
1754Generator.NamespaceImportDeclaration(Generator.IdentifierName("n")),
1758Generator.NamespaceImportDeclaration("n"),
1762Generator.NamespaceImportDeclaration("n.m"),
1770Generator.NamespaceDeclaration("n"),
1774Generator.NamespaceDeclaration("n.m"),
1778Generator.NamespaceDeclaration("n",
1779Generator.NamespaceImportDeclaration("m")),
1783Generator.NamespaceDeclaration("n",
1784Generator.ClassDeclaration("c"),
1785Generator.NamespaceImportDeclaration("m")),
1793Generator.CompilationUnit(),
1797Generator.CompilationUnit(
1798Generator.NamespaceDeclaration("n")),
1802Generator.CompilationUnit(
1803Generator.NamespaceImportDeclaration("n")),
1807Generator.CompilationUnit(
1808Generator.ClassDeclaration("c"),
1809Generator.NamespaceImportDeclaration("m")),
1813Generator.CompilationUnit(
1814Generator.NamespaceImportDeclaration("n"),
1815Generator.NamespaceDeclaration("n",
1816Generator.NamespaceImportDeclaration("m"),
1817Generator.ClassDeclaration("c"))),
1825Generator.Attribute(Generator.IdentifierName("a")),
1829Generator.Attribute("a"),
1833Generator.Attribute("a.b"),
1837Generator.Attribute("a", []),
1841Generator.Attribute("a", [Generator.IdentifierName("x")]),
1845Generator.Attribute("a", [Generator.AttributeArgument(Generator.IdentifierName("x"))]),
1849Generator.Attribute("a", [Generator.AttributeArgument("x", Generator.IdentifierName("y"))]),
1853Generator.Attribute("a", [Generator.IdentifierName("x"), Generator.IdentifierName("y")]),
1861Generator.AddAttributes(
1862Generator.FieldDeclaration("y", Generator.IdentifierName("x")),
1863Generator.Attribute("a")),
1867Generator.AddAttributes(
1868Generator.AddAttributes(
1869Generator.FieldDeclaration("y", Generator.IdentifierName("x")),
1870Generator.Attribute("a")),
1871Generator.Attribute("b")),
1875Generator.AddAttributes(
1876Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("t"), modifiers: DeclarationModifiers.Abstract),
1877Generator.Attribute("a")),
1881Generator.AddReturnAttributes(
1882Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("t"), modifiers: DeclarationModifiers.Abstract),
1883Generator.Attribute("a")),
1887Generator.AddAttributes(
1888Generator.PropertyDeclaration("p", Generator.IdentifierName("x"), accessibility: Accessibility.NotApplicable, modifiers: DeclarationModifiers.Abstract),
1889Generator.Attribute("a")),
1893Generator.AddAttributes(
1894Generator.IndexerDeclaration([Generator.ParameterDeclaration("z", Generator.IdentifierName("y"))], Generator.IdentifierName("x"), modifiers: DeclarationModifiers.Abstract),
1895Generator.Attribute("a")),
1899Generator.AddAttributes(
1900Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t"), modifiers: DeclarationModifiers.Abstract),
1901Generator.Attribute("a")),
1905Generator.AddAttributes(
1906Generator.EventDeclaration("ef", Generator.IdentifierName("t")),
1907Generator.Attribute("a")),
1911Generator.AddAttributes(
1912Generator.ClassDeclaration("c"),
1913Generator.Attribute("a")),
1917Generator.AddAttributes(
1918Generator.StructDeclaration("s"),
1919Generator.Attribute("a")),
1923Generator.AddAttributes(
1924Generator.InterfaceDeclaration("i"),
1925Generator.Attribute("a")),
1929Generator.AddAttributes(
1930Generator.DelegateDeclaration("d"),
1931Generator.Attribute("a")),
1935Generator.AddAttributes(
1936Generator.ParameterDeclaration("p", Generator.IdentifierName("t")),
1937Generator.Attribute("a")),
1941Generator.AddAttributes(
1942Generator.CompilationUnit(Generator.NamespaceDeclaration("n")),
1943Generator.Attribute("a")),
1947Generator.AddAttributes(
1948Generator.AddAttributes(
1949Generator.CompilationUnit(Generator.NamespaceDeclaration("n")),
1950Generator.Attribute("a")),
1951Generator.Attribute("b")),
1955Generator.AddAttributes(
1957Generator.Attribute("a")),
1961Generator.AddAttributes(
1963Generator.Attribute("a")),
1967Generator.AddAttributes(
1969Generator.Attribute("a")),
1976var prop = Generator.PropertyDeclaration("P", Generator.IdentifierName("T"));
1977var evnt = Generator.CustomEventDeclaration("E", Generator.IdentifierName("T"));
1978CheckAddRemoveAttribute(Generator.GetAccessor(prop, DeclarationKind.GetAccessor));
1979CheckAddRemoveAttribute(Generator.GetAccessor(prop, DeclarationKind.SetAccessor));
1980CheckAddRemoveAttribute(Generator.GetAccessor(evnt, DeclarationKind.AddAccessor));
1981CheckAddRemoveAttribute(Generator.GetAccessor(evnt, DeclarationKind.RemoveAccessor));
1986var initialAttributes = Generator.GetAttributes(declaration);
1989var withAttribute = Generator.AddAttributes(declaration, Generator.Attribute("a"));
1990var attrsAdded = Generator.GetAttributes(withAttribute);
1993var withoutAttribute = Generator.RemoveNode(withAttribute, attrsAdded[0]);
1994var attrsRemoved = Generator.GetAttributes(withoutAttribute);
2004var added = Generator.AddAttributes(cls, Generator.Attribute("a"));
2007var removed = Generator.RemoveAllAttributes(added);
2010var attrWithComment = Generator.GetAttributes(added).First();
2018Generator.WithTypeParameters(
2019Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract),
2024Generator.WithTypeParameters(
2025Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract)),
2029Generator.WithTypeParameters(
2030Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract),
2035Generator.WithTypeParameters(Generator.WithTypeParameters(
2036Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract),
2041Generator.WithTypeParameters(
2042Generator.ClassDeclaration("c"),
2047Generator.WithTypeParameters(
2048Generator.StructDeclaration("s"),
2053Generator.WithTypeParameters(
2054Generator.InterfaceDeclaration("i"),
2059Generator.WithTypeParameters(
2060Generator.DelegateDeclaration("d"),
2069Generator.WithTypeConstraint(
2070Generator.WithTypeParameters(Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract), "a"),
2071"a", Generator.IdentifierName("b")),
2075Generator.WithTypeConstraint(
2076Generator.WithTypeParameters(Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract), "a"),
2077"a", Generator.IdentifierName("b"), Generator.IdentifierName("c")),
2081Generator.WithTypeConstraint(
2082Generator.WithTypeParameters(Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract), "a"),
2087Generator.WithTypeConstraint(Generator.WithTypeConstraint(
2088Generator.WithTypeParameters(Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract), "a"),
2089"a", Generator.IdentifierName("b"), Generator.IdentifierName("c")), "a"),
2093Generator.WithTypeConstraint(
2094Generator.WithTypeConstraint(
2095Generator.WithTypeParameters(Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract), "a", "x"),
2096"a", Generator.IdentifierName("b"), Generator.IdentifierName("c")),
2097"x", Generator.IdentifierName("y")),
2101Generator.WithTypeConstraint(
2102Generator.WithTypeParameters(Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract), "a"),
2107Generator.WithTypeConstraint(
2108Generator.WithTypeParameters(Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract), "a"),
2113Generator.WithTypeConstraint(
2114Generator.WithTypeParameters(Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract), "a"),
2119Generator.WithTypeConstraint(
2120Generator.WithTypeParameters(Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract), "a"),
2125Generator.WithTypeConstraint(
2126Generator.WithTypeParameters(Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract), "a"),
2131Generator.WithTypeConstraint(
2132Generator.WithTypeParameters(Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Abstract), "a"),
2133"a", SpecialTypeConstraintKind.ReferenceType, Generator.IdentifierName("b"), Generator.IdentifierName("c")),
2138Generator.WithTypeConstraint(
2139Generator.WithTypeParameters(
2140Generator.ClassDeclaration("c"),
2142"a", Generator.IdentifierName("x")),
2146Generator.WithTypeConstraint(
2147Generator.WithTypeParameters(
2148Generator.StructDeclaration("s"),
2150"a", Generator.IdentifierName("x")),
2154Generator.WithTypeConstraint(
2155Generator.WithTypeParameters(
2156Generator.InterfaceDeclaration("i"),
2158"a", Generator.IdentifierName("x")),
2162Generator.WithTypeConstraint(
2163Generator.WithTypeParameters(
2164Generator.DelegateDeclaration("d"),
2166"a", Generator.IdentifierName("x")),
2174Generator.Declaration(_emptyCompilation.GetTypeByMetadataName("System.ComponentModel.INotifyPropertyChanged")),
2185Generator.Declaration(
2196Generator.Declaration(
2210Generator.Declaration(
2229VerifySyntax<DelegateDeclarationSyntax>(Generator.Declaration(type), """
2248Generator.Declaration(method), """
2269Generator.Declaration(method), """
2290Generator.Declaration(method), """
2311Generator.Declaration(method), """
2332Generator.Declaration(method),
2354Generator.Declaration(property),
2372Generator.Declaration(property),
2395Generator.Declaration(property),
2423Generator.Declaration(property),
2451Generator.Declaration(property),
2482Generator.Declaration(property),
2519Generator.Declaration(method),
2526Generator.Declaration(property),
2529Generator.Declaration(indexer),
2539Generator.Declaration(ev),
2559Generator.Declaration(field),
2582Generator.Declaration(field),
2592Generator.Declaration(field),
2612Generator.Declaration(method), """
2625var actualNames = actualNodes.Select(n => Generator.GetName(n)).ToArray();
2635=> AssertNamesEqual(expectedNames, Generator.GetMembers(declaration));
2643AssertNamesEqual("x.y", Generator.GetNamespaceImports(Generator.AddNamespaceImports(Generator.CompilationUnit(), Generator.NamespaceImportDeclaration("x.y"))));
2644AssertNamesEqual(["x.y", "z"], Generator.GetNamespaceImports(Generator.AddNamespaceImports(Generator.CompilationUnit(), Generator.NamespaceImportDeclaration("x.y"), Generator.IdentifierName("z"))));
2645AssertNamesEqual("", Generator.GetNamespaceImports(Generator.AddNamespaceImports(Generator.CompilationUnit(), Generator.MethodDeclaration("m"))));
2646AssertNamesEqual(["x", "y.z"], Generator.GetNamespaceImports(Generator.AddNamespaceImports(Generator.CompilationUnit(Generator.IdentifierName("x")), Generator.DottedName("y.z"))));
2652TestRemoveAllNamespaceImports(Generator.CompilationUnit(Generator.NamespaceImportDeclaration("x")));
2653TestRemoveAllNamespaceImports(Generator.CompilationUnit(Generator.NamespaceImportDeclaration("x"), Generator.IdentifierName("y")));
2655TestRemoveNamespaceImport(Generator.CompilationUnit(Generator.NamespaceImportDeclaration("x")), "x", []);
2656TestRemoveNamespaceImport(Generator.CompilationUnit(Generator.NamespaceImportDeclaration("x"), Generator.IdentifierName("y")), "x", ["y"]);
2657TestRemoveNamespaceImport(Generator.CompilationUnit(Generator.NamespaceImportDeclaration("x"), Generator.IdentifierName("y")), "y", ["x"]);
2661=> Assert.Equal(0, Generator.GetNamespaceImports(Generator.RemoveNodes(declaration, Generator.GetNamespaceImports(declaration))).Count);
2665var newDecl = Generator.RemoveNode(declaration, Generator.GetNamespaceImports(declaration).First(m => Generator.GetName(m) == name));
2666AssertNamesEqual(remainingNames, Generator.GetNamespaceImports(newDecl));
2682var newCu = Generator.RemoveNode(cu, summary);
2708var newCu = Generator.ReplaceNode(cu, summary, summary2);
2731var newCu = Generator.InsertNodesAfter(cu, text, [text]);
2754var newCu = Generator.InsertNodesBefore(cu, text, [text]);
2767AssertMemberNamesEqual("m", Generator.AddMembers(Generator.ClassDeclaration("d"), [Generator.MethodDeclaration("m")]));
2768AssertMemberNamesEqual("m", Generator.AddMembers(Generator.StructDeclaration("s"), [Generator.MethodDeclaration("m")]));
2769AssertMemberNamesEqual("m", Generator.AddMembers(Generator.InterfaceDeclaration("i"), [Generator.MethodDeclaration("m")]));
2770AssertMemberNamesEqual("", Generator.AddMembers(Generator.InterfaceDeclaration("i"), [Generator.OperatorDeclaration(OperatorKind.Addition)]));
2771AssertMemberNamesEqual("v", Generator.AddMembers(Generator.EnumDeclaration("e"), [Generator.EnumMember("v")]));
2772AssertMemberNamesEqual("n2", Generator.AddMembers(Generator.NamespaceDeclaration("n"), [Generator.NamespaceDeclaration("n2")]));
2773AssertMemberNamesEqual("n", Generator.AddMembers(Generator.CompilationUnit(), [Generator.NamespaceDeclaration("n")]));
2775AssertMemberNamesEqual(["m", "m2"], Generator.AddMembers(Generator.ClassDeclaration("d", members: [Generator.MethodDeclaration("m")]), [Generator.MethodDeclaration("m2")]));
2776AssertMemberNamesEqual(["m", "m2"], Generator.AddMembers(Generator.StructDeclaration("s", members: [Generator.MethodDeclaration("m")]), [Generator.MethodDeclaration("m2")]));
2777AssertMemberNamesEqual(["m", "m2"], Generator.AddMembers(Generator.InterfaceDeclaration("i", members: [Generator.MethodDeclaration("m")]), [Generator.MethodDeclaration("m2")]));
2778AssertMemberNamesEqual(["v", "v2"], Generator.AddMembers(Generator.EnumDeclaration("i", members: [Generator.EnumMember("v")]), [Generator.EnumMember("v2")]));
2779AssertMemberNamesEqual(["n1", "n2"], Generator.AddMembers(Generator.NamespaceDeclaration("n", [Generator.NamespaceDeclaration("n1")]), [Generator.NamespaceDeclaration("n2")]));
2780AssertMemberNamesEqual(["n1", "n2"], Generator.AddMembers(Generator.CompilationUnit(declarations: [Generator.NamespaceDeclaration("n1")]), [Generator.NamespaceDeclaration("n2")]));
2786VerifySyntax<InterfaceDeclarationSyntax>(Generator.AddMembers(Generator.InterfaceDeclaration("i"),
2787[Generator.OperatorDeclaration(OperatorKind.Addition)]),
2795VerifySyntax<InterfaceDeclarationSyntax>(Generator.AddMembers(Generator.InterfaceDeclaration("i"),
2796[Generator.OperatorDeclaration(OperatorKind.Addition, modifiers: DeclarationModifiers.Abstract)]),
2804VerifySyntax<InterfaceDeclarationSyntax>(Generator.AddMembers(Generator.InterfaceDeclaration("i"),
2805[Generator.OperatorDeclaration(OperatorKind.Addition, modifiers: DeclarationModifiers.Virtual)]),
2817var method = (MethodDeclarationSyntax)Generator.MethodDeclaration("m");
2819method = method.WithExpressionBody(ArrowExpressionClause((ExpressionSyntax)Generator.IdentifierName("x")));
2821VerifySyntax<InterfaceDeclarationSyntax>(Generator.AddMembers(Generator.InterfaceDeclaration("i"),
2830var getAccessor = (AccessorDeclarationSyntax)Generator.GetAccessorDeclaration();
2832getAccessor = getAccessor.WithExpressionBody(ArrowExpressionClause((ExpressionSyntax)Generator.IdentifierName("x")));
2834var setAccessor = (AccessorDeclarationSyntax)Generator.SetAccessorDeclaration();
2836setAccessor = setAccessor.WithExpressionBody(ArrowExpressionClause((ExpressionSyntax)Generator.InvocationExpression(Generator.IdentifierName("x"))));
2839Generator.WithAccessorDeclarations(
2840Generator.PropertyDeclaration("p", Generator.IdentifierName("x")),
2843VerifySyntax<InterfaceDeclarationSyntax>(Generator.AddMembers(Generator.InterfaceDeclaration("i"),
2857TestRemoveAllMembers(Generator.ClassDeclaration("c", members: [Generator.MethodDeclaration("m")]));
2858TestRemoveAllMembers(Generator.StructDeclaration("s", members: [Generator.MethodDeclaration("m")]));
2859TestRemoveAllMembers(Generator.InterfaceDeclaration("i", members: [Generator.MethodDeclaration("m")]));
2860TestRemoveAllMembers(Generator.EnumDeclaration("i", members: [Generator.EnumMember("v")]));
2861TestRemoveAllMembers(Generator.NamespaceDeclaration("n", [Generator.NamespaceDeclaration("n")]));
2862TestRemoveAllMembers(Generator.CompilationUnit(declarations: [Generator.NamespaceDeclaration("n")]));
2864TestRemoveMember(Generator.ClassDeclaration("c", members: [Generator.MethodDeclaration("m1"), Generator.MethodDeclaration("m2")]), "m1", ["m2"]);
2865TestRemoveMember(Generator.StructDeclaration("s", members: [Generator.MethodDeclaration("m1"), Generator.MethodDeclaration("m2")]), "m1", ["m2"]);
2869=> Assert.Equal(0, Generator.GetMembers(Generator.RemoveNodes(declaration, Generator.GetMembers(declaration))).Count);
2873var newDecl = Generator.RemoveNode(declaration, Generator.GetMembers(declaration).First(m => Generator.GetName(m) == name));
2880AssertMemberNamesEqual("m", Generator.ClassDeclaration("c", members: [Generator.MethodDeclaration("m")]));
2881AssertMemberNamesEqual("m", Generator.StructDeclaration("s", members: [Generator.MethodDeclaration("m")]));
2882AssertMemberNamesEqual("m", Generator.InterfaceDeclaration("i", members: [Generator.MethodDeclaration("m")]));
2883AssertMemberNamesEqual("v", Generator.EnumDeclaration("e", members: [Generator.EnumMember("v")]));
2884AssertMemberNamesEqual("c", Generator.NamespaceDeclaration("n", declarations: [Generator.ClassDeclaration("c")]));
2885AssertMemberNamesEqual("c", Generator.CompilationUnit(declarations: [Generator.ClassDeclaration("c")]));
2891Assert.Equal(DeclarationKind.CompilationUnit, Generator.GetDeclarationKind(Generator.CompilationUnit()));
2892Assert.Equal(DeclarationKind.Class, Generator.GetDeclarationKind(Generator.ClassDeclaration("c")));
2893Assert.Equal(DeclarationKind.Struct, Generator.GetDeclarationKind(Generator.StructDeclaration("s")));
2894Assert.Equal(DeclarationKind.Interface, Generator.GetDeclarationKind(Generator.InterfaceDeclaration("i")));
2895Assert.Equal(DeclarationKind.Enum, Generator.GetDeclarationKind(Generator.EnumDeclaration("e")));
2896Assert.Equal(DeclarationKind.Delegate, Generator.GetDeclarationKind(Generator.DelegateDeclaration("d")));
2897Assert.Equal(DeclarationKind.Method, Generator.GetDeclarationKind(Generator.MethodDeclaration("m")));
2898Assert.Equal(DeclarationKind.Constructor, Generator.GetDeclarationKind(Generator.ConstructorDeclaration()));
2899Assert.Equal(DeclarationKind.Parameter, Generator.GetDeclarationKind(Generator.ParameterDeclaration("p")));
2900Assert.Equal(DeclarationKind.Property, Generator.GetDeclarationKind(Generator.PropertyDeclaration("p", Generator.IdentifierName("t"))));
2901Assert.Equal(DeclarationKind.Indexer, Generator.GetDeclarationKind(Generator.IndexerDeclaration([Generator.ParameterDeclaration("i")], Generator.IdentifierName("t"))));
2902Assert.Equal(DeclarationKind.Field, Generator.GetDeclarationKind(Generator.FieldDeclaration("f", Generator.IdentifierName("t"))));
2903Assert.Equal(DeclarationKind.EnumMember, Generator.GetDeclarationKind(Generator.EnumMember("v")));
2904Assert.Equal(DeclarationKind.Event, Generator.GetDeclarationKind(Generator.EventDeclaration("ef", Generator.IdentifierName("t"))));
2905Assert.Equal(DeclarationKind.CustomEvent, Generator.GetDeclarationKind(Generator.CustomEventDeclaration("e", Generator.IdentifierName("t"))));
2906Assert.Equal(DeclarationKind.Namespace, Generator.GetDeclarationKind(Generator.NamespaceDeclaration("n")));
2907Assert.Equal(DeclarationKind.NamespaceImport, Generator.GetDeclarationKind(Generator.NamespaceImportDeclaration("u")));
2908Assert.Equal(DeclarationKind.Variable, Generator.GetDeclarationKind(Generator.LocalDeclarationStatement(Generator.IdentifierName("t"), "loc")));
2909Assert.Equal(DeclarationKind.Attribute, Generator.GetDeclarationKind(Generator.Attribute("a")));
2915Assert.Equal("c", Generator.GetName(Generator.ClassDeclaration("c")));
2916Assert.Equal("s", Generator.GetName(Generator.StructDeclaration("s")));
2917Assert.Equal("i", Generator.GetName(Generator.EnumDeclaration("i")));
2918Assert.Equal("e", Generator.GetName(Generator.EnumDeclaration("e")));
2919Assert.Equal("d", Generator.GetName(Generator.DelegateDeclaration("d")));
2920Assert.Equal("m", Generator.GetName(Generator.MethodDeclaration("m")));
2921Assert.Equal("", Generator.GetName(Generator.ConstructorDeclaration()));
2922Assert.Equal("p", Generator.GetName(Generator.ParameterDeclaration("p")));
2923Assert.Equal("p", Generator.GetName(Generator.PropertyDeclaration("p", Generator.IdentifierName("t"))));
2924Assert.Equal("", Generator.GetName(Generator.IndexerDeclaration([Generator.ParameterDeclaration("i")], Generator.IdentifierName("t"))));
2925Assert.Equal("f", Generator.GetName(Generator.FieldDeclaration("f", Generator.IdentifierName("t"))));
2926Assert.Equal("v", Generator.GetName(Generator.EnumMember("v")));
2927Assert.Equal("ef", Generator.GetName(Generator.EventDeclaration("ef", Generator.IdentifierName("t"))));
2928Assert.Equal("ep", Generator.GetName(Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t"))));
2929Assert.Equal("n", Generator.GetName(Generator.NamespaceDeclaration("n")));
2930Assert.Equal("u", Generator.GetName(Generator.NamespaceImportDeclaration("u")));
2931Assert.Equal("loc", Generator.GetName(Generator.LocalDeclarationStatement(Generator.IdentifierName("t"), "loc")));
2932Assert.Equal("a", Generator.GetName(Generator.Attribute("a")));
2938Assert.Equal("c", Generator.GetName(Generator.WithName(Generator.ClassDeclaration("x"), "c")));
2939Assert.Equal("s", Generator.GetName(Generator.WithName(Generator.StructDeclaration("x"), "s")));
2940Assert.Equal("i", Generator.GetName(Generator.WithName(Generator.EnumDeclaration("x"), "i")));
2941Assert.Equal("e", Generator.GetName(Generator.WithName(Generator.EnumDeclaration("x"), "e")));
2942Assert.Equal("d", Generator.GetName(Generator.WithName(Generator.DelegateDeclaration("x"), "d")));
2943Assert.Equal("m", Generator.GetName(Generator.WithName(Generator.MethodDeclaration("x"), "m")));
2944Assert.Equal("", Generator.GetName(Generator.WithName(Generator.ConstructorDeclaration(), ".ctor")));
2945Assert.Equal("p", Generator.GetName(Generator.WithName(Generator.ParameterDeclaration("x"), "p")));
2946Assert.Equal("p", Generator.GetName(Generator.WithName(Generator.PropertyDeclaration("x", Generator.IdentifierName("t")), "p")));
2947Assert.Equal("", Generator.GetName(Generator.WithName(Generator.IndexerDeclaration([Generator.ParameterDeclaration("i")], Generator.IdentifierName("t")), "this")));
2948Assert.Equal("f", Generator.GetName(Generator.WithName(Generator.FieldDeclaration("x", Generator.IdentifierName("t")), "f")));
2949Assert.Equal("v", Generator.GetName(Generator.WithName(Generator.EnumMember("x"), "v")));
2950Assert.Equal("ef", Generator.GetName(Generator.WithName(Generator.EventDeclaration("x", Generator.IdentifierName("t")), "ef")));
2951Assert.Equal("ep", Generator.GetName(Generator.WithName(Generator.CustomEventDeclaration("x", Generator.IdentifierName("t")), "ep")));
2952Assert.Equal("n", Generator.GetName(Generator.WithName(Generator.NamespaceDeclaration("x"), "n")));
2953Assert.Equal("u", Generator.GetName(Generator.WithName(Generator.NamespaceImportDeclaration("x"), "u")));
2954Assert.Equal("loc", Generator.GetName(Generator.WithName(Generator.LocalDeclarationStatement(Generator.IdentifierName("t"), "x"), "loc")));
2955Assert.Equal("a", Generator.GetName(Generator.WithName(Generator.Attribute("x"), "a")));
2961Assert.Equal(Accessibility.Internal, Generator.GetAccessibility(Generator.ClassDeclaration("c", accessibility: Accessibility.Internal)));
2962Assert.Equal(Accessibility.Internal, Generator.GetAccessibility(Generator.StructDeclaration("s", accessibility: Accessibility.Internal)));
2963Assert.Equal(Accessibility.Internal, Generator.GetAccessibility(Generator.EnumDeclaration("i", accessibility: Accessibility.Internal)));
2964Assert.Equal(Accessibility.Internal, Generator.GetAccessibility(Generator.EnumDeclaration("e", accessibility: Accessibility.Internal)));
2965Assert.Equal(Accessibility.Internal, Generator.GetAccessibility(Generator.DelegateDeclaration("d", accessibility: Accessibility.Internal)));
2966Assert.Equal(Accessibility.Internal, Generator.GetAccessibility(Generator.MethodDeclaration("m", accessibility: Accessibility.Internal)));
2967Assert.Equal(Accessibility.Internal, Generator.GetAccessibility(Generator.ConstructorDeclaration(accessibility: Accessibility.Internal)));
2968Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(Generator.ParameterDeclaration("p")));
2969Assert.Equal(Accessibility.Internal, Generator.GetAccessibility(Generator.PropertyDeclaration("p", Generator.IdentifierName("t"), accessibility: Accessibility.Internal)));
2970Assert.Equal(Accessibility.Internal, Generator.GetAccessibility(Generator.IndexerDeclaration([Generator.ParameterDeclaration("i")], Generator.IdentifierName("t"), accessibility: Accessibility.Internal)));
2971Assert.Equal(Accessibility.Internal, Generator.GetAccessibility(Generator.FieldDeclaration("f", Generator.IdentifierName("t"), accessibility: Accessibility.Internal)));
2972Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(Generator.EnumMember("v")));
2973Assert.Equal(Accessibility.Internal, Generator.GetAccessibility(Generator.EventDeclaration("ef", Generator.IdentifierName("t"), accessibility: Accessibility.Internal)));
2974Assert.Equal(Accessibility.Internal, Generator.GetAccessibility(Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t"), accessibility: Accessibility.Internal)));
2975Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(Generator.NamespaceDeclaration("n")));
2976Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(Generator.NamespaceImportDeclaration("u")));
2977Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(Generator.LocalDeclarationStatement(Generator.IdentifierName("t"), "loc")));
2978Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(Generator.Attribute("a")));
2979Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(TypeParameter("tp")));
2985Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(Generator.ClassDeclaration("c", accessibility: Accessibility.Internal), Accessibility.Private)));
2986Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(Generator.StructDeclaration("s", accessibility: Accessibility.Internal), Accessibility.Private)));
2987Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(Generator.EnumDeclaration("i", accessibility: Accessibility.Internal), Accessibility.Private)));
2988Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(Generator.EnumDeclaration("e", accessibility: Accessibility.Internal), Accessibility.Private)));
2989Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(Generator.DelegateDeclaration("d", accessibility: Accessibility.Internal), Accessibility.Private)));
2990Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(Generator.MethodDeclaration("m", accessibility: Accessibility.Internal), Accessibility.Private)));
2991Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(Generator.ConstructorDeclaration(accessibility: Accessibility.Internal), Accessibility.Private)));
2992Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(Generator.WithAccessibility(Generator.ParameterDeclaration("p"), Accessibility.Private)));
2993Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(Generator.PropertyDeclaration("p", Generator.IdentifierName("t"), accessibility: Accessibility.Internal), Accessibility.Private)));
2994Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(Generator.IndexerDeclaration([Generator.ParameterDeclaration("i")], Generator.IdentifierName("t"), accessibility: Accessibility.Internal), Accessibility.Private)));
2995Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(Generator.FieldDeclaration("f", Generator.IdentifierName("t"), accessibility: Accessibility.Internal), Accessibility.Private)));
2996Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(Generator.WithAccessibility(Generator.EnumMember("v"), Accessibility.Private)));
2997Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(Generator.EventDeclaration("ef", Generator.IdentifierName("t"), accessibility: Accessibility.Internal), Accessibility.Private)));
2998Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t"), accessibility: Accessibility.Internal), Accessibility.Private)));
2999Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(Generator.WithAccessibility(Generator.NamespaceDeclaration("n"), Accessibility.Private)));
3000Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(Generator.WithAccessibility(Generator.NamespaceImportDeclaration("u"), Accessibility.Private)));
3001Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(Generator.WithAccessibility(Generator.LocalDeclarationStatement(Generator.IdentifierName("t"), "loc"), Accessibility.Private)));
3002Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(Generator.WithAccessibility(Generator.Attribute("a"), Accessibility.Private)));
3003Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(Generator.WithAccessibility(TypeParameter("tp"), Accessibility.Private)));
3004Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(AccessorDeclaration(SyntaxKind.InitAccessorDeclaration), Accessibility.Private)));
3010Assert.Equal(DeclarationModifiers.Abstract, Generator.GetModifiers(Generator.ClassDeclaration("c", modifiers: DeclarationModifiers.Abstract)));
3011Assert.Equal(DeclarationModifiers.Partial, Generator.GetModifiers(Generator.StructDeclaration("s", modifiers: DeclarationModifiers.Partial)));
3012Assert.Equal(DeclarationModifiers.New, Generator.GetModifiers(Generator.EnumDeclaration("e", modifiers: DeclarationModifiers.New)));
3013Assert.Equal(DeclarationModifiers.New, Generator.GetModifiers(Generator.DelegateDeclaration("d", modifiers: DeclarationModifiers.New)));
3014Assert.Equal(DeclarationModifiers.Static, Generator.GetModifiers(Generator.MethodDeclaration("m", modifiers: DeclarationModifiers.Static)));
3015Assert.Equal(DeclarationModifiers.Static, Generator.GetModifiers(Generator.ConstructorDeclaration(modifiers: DeclarationModifiers.Static)));
3016Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(Generator.ParameterDeclaration("p")));
3017Assert.Equal(DeclarationModifiers.Abstract, Generator.GetModifiers(Generator.PropertyDeclaration("p", Generator.IdentifierName("t"), modifiers: DeclarationModifiers.Abstract)));
3018Assert.Equal(DeclarationModifiers.Abstract, Generator.GetModifiers(Generator.IndexerDeclaration([Generator.ParameterDeclaration("i")], Generator.IdentifierName("t"), modifiers: DeclarationModifiers.Abstract)));
3019Assert.Equal(DeclarationModifiers.Const, Generator.GetModifiers(Generator.FieldDeclaration("f", Generator.IdentifierName("t"), modifiers: DeclarationModifiers.Const)));
3020Assert.Equal(DeclarationModifiers.Static, Generator.GetModifiers(Generator.EventDeclaration("ef", Generator.IdentifierName("t"), modifiers: DeclarationModifiers.Static)));
3021Assert.Equal(DeclarationModifiers.Static, Generator.GetModifiers(Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t"), modifiers: DeclarationModifiers.Static)));
3022Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(Generator.EnumMember("v")));
3023Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(Generator.NamespaceDeclaration("n")));
3024Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(Generator.NamespaceImportDeclaration("u")));
3025Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(Generator.LocalDeclarationStatement(Generator.IdentifierName("t"), "loc")));
3026Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(Generator.Attribute("a")));
3027Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(TypeParameter("tp")));
3033Assert.Equal(DeclarationModifiers.Abstract, Generator.GetModifiers(Generator.WithModifiers(Generator.ClassDeclaration("c"), DeclarationModifiers.Abstract)));
3034Assert.Equal(DeclarationModifiers.Partial, Generator.GetModifiers(Generator.WithModifiers(Generator.StructDeclaration("s"), DeclarationModifiers.Partial)));
3035Assert.Equal(DeclarationModifiers.New, Generator.GetModifiers(Generator.WithModifiers(Generator.EnumDeclaration("e"), DeclarationModifiers.New)));
3036Assert.Equal(DeclarationModifiers.New, Generator.GetModifiers(Generator.WithModifiers(Generator.DelegateDeclaration("d"), DeclarationModifiers.New)));
3037Assert.Equal(DeclarationModifiers.Static, Generator.GetModifiers(Generator.WithModifiers(Generator.MethodDeclaration("m"), DeclarationModifiers.Static)));
3038Assert.Equal(DeclarationModifiers.Static, Generator.GetModifiers(Generator.WithModifiers(Generator.ConstructorDeclaration(), DeclarationModifiers.Static)));
3039Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(Generator.WithModifiers(Generator.ParameterDeclaration("p"), DeclarationModifiers.Abstract)));
3040Assert.Equal(DeclarationModifiers.Abstract, Generator.GetModifiers(Generator.WithModifiers(Generator.PropertyDeclaration("p", Generator.IdentifierName("t")), DeclarationModifiers.Abstract)));
3041Assert.Equal(DeclarationModifiers.Abstract, Generator.GetModifiers(Generator.WithModifiers(Generator.IndexerDeclaration([Generator.ParameterDeclaration("i")], Generator.IdentifierName("t")), DeclarationModifiers.Abstract)));
3042Assert.Equal(DeclarationModifiers.Const, Generator.GetModifiers(Generator.WithModifiers(Generator.FieldDeclaration("f", Generator.IdentifierName("t")), DeclarationModifiers.Const)));
3043Assert.Equal(DeclarationModifiers.Static, Generator.GetModifiers(Generator.WithModifiers(Generator.EventDeclaration("ef", Generator.IdentifierName("t")), DeclarationModifiers.Static)));
3044Assert.Equal(DeclarationModifiers.Static, Generator.GetModifiers(Generator.WithModifiers(Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t")), DeclarationModifiers.Static)));
3045Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(Generator.WithModifiers(Generator.EnumMember("v"), DeclarationModifiers.Partial)));
3046Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(Generator.WithModifiers(Generator.NamespaceDeclaration("n"), DeclarationModifiers.Abstract)));
3047Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(Generator.WithModifiers(Generator.NamespaceImportDeclaration("u"), DeclarationModifiers.Abstract)));
3048Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(Generator.WithModifiers(Generator.LocalDeclarationStatement(Generator.IdentifierName("t"), "loc"), DeclarationModifiers.Abstract)));
3049Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(Generator.WithModifiers(Generator.Attribute("a"), DeclarationModifiers.Abstract)));
3050Assert.Equal(DeclarationModifiers.None, Generator.GetModifiers(Generator.WithModifiers(TypeParameter("tp"), DeclarationModifiers.Abstract)));
3060Generator.GetModifiers(Generator.WithModifiers(Generator.ClassDeclaration("c"), allModifiers)));
3064Generator.GetModifiers(Generator.WithModifiers(Generator.StructDeclaration("s"), allModifiers)));
3068Generator.GetModifiers(Generator.WithModifiers(Generator.InterfaceDeclaration("i"), allModifiers)));
3072Generator.GetModifiers(Generator.WithModifiers(Generator.DelegateDeclaration("d"), allModifiers)));
3076Generator.GetModifiers(Generator.WithModifiers(Generator.EnumDeclaration("e"), allModifiers)));
3080Generator.GetModifiers(Generator.WithModifiers(Generator.FieldDeclaration("f", Generator.IdentifierName("t")), allModifiers)));
3084Generator.GetModifiers(Generator.WithModifiers(Generator.ConstructorDeclaration("c"), allModifiers)));
3088Generator.GetModifiers(Generator.WithModifiers(DestructorDeclaration("c"), allModifiers)));
3092Generator.GetModifiers(Generator.WithModifiers(Generator.MethodDeclaration("m"), allModifiers)));
3096Generator.GetModifiers(Generator.WithModifiers(Generator.PropertyDeclaration("p", Generator.IdentifierName("t")), allModifiers)));
3100Generator.GetModifiers(Generator.WithModifiers(Generator.IndexerDeclaration([Generator.ParameterDeclaration("i")], Generator.IdentifierName("t")), allModifiers)));
3104Generator.GetModifiers(Generator.WithModifiers(Generator.EventDeclaration("ef", Generator.IdentifierName("t")), allModifiers)));
3108Generator.GetModifiers(Generator.WithModifiers(Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t")), allModifiers)));
3112Generator.GetModifiers(Generator.WithModifiers(AccessorDeclaration(SyntaxKind.GetAccessorDeclaration), allModifiers)));
3118var ctor = Generator.ConstructorDeclaration("C", modifiers: DeclarationModifiers.Static);
3123var publicCtor = Generator.WithAccessibility(ctor, Accessibility.Public);
3132var ctor = Generator.ConstructorDeclaration("C", accessibility: Accessibility.Public);
3137var staticCtor = Generator.WithModifiers(ctor, DeclarationModifiers.Static);
3147var fileAbstractClass = Generator.WithModifiers(fileClass, Generator.GetModifiers(fileClass).WithIsAbstract(true));
3157var filePublicClass = Generator.WithAccessibility(fileClass, Accessibility.Public);
3167var fileAbstractClass = Generator.WithModifiers(abstractClass, Generator.GetModifiers(abstractClass).WithIsFile(true));
3177var filePublicClass = Generator.WithModifiers(publicClass, Generator.GetModifiers(publicClass).WithIsFile(true));
3187var updatedProperty = Generator.WithModifiers(property, Generator.GetModifiers(property).WithIsRequired(true));
3195var updatedProperty = Generator.WithModifiers(property, Generator.GetModifiers(property).WithIsVirtual(true));
3205var updatedProperty = Generator.WithModifiers(property, Generator.GetModifiers(property).WithIsRequired(true));
3212Assert.Equal("t", Generator.GetType(Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("t"))).ToString());
3213Assert.Null(Generator.GetType(Generator.MethodDeclaration("m")));
3215Assert.Equal("t", Generator.GetType(Generator.FieldDeclaration("f", Generator.IdentifierName("t"))).ToString());
3216Assert.Equal("t", Generator.GetType(Generator.PropertyDeclaration("p", Generator.IdentifierName("t"))).ToString());
3217Assert.Equal("t", Generator.GetType(Generator.IndexerDeclaration([Generator.ParameterDeclaration("p", Generator.IdentifierName("pt"))], Generator.IdentifierName("t"))).ToString());
3218Assert.Equal("t", Generator.GetType(Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))).ToString());
3220Assert.Equal("t", Generator.GetType(Generator.EventDeclaration("ef", Generator.IdentifierName("t"))).ToString());
3221Assert.Equal("t", Generator.GetType(Generator.CustomEventDeclaration("ep", Generator.IdentifierName("t"))).ToString());
3223Assert.Equal("t", Generator.GetType(Generator.DelegateDeclaration("t", returnType: Generator.IdentifierName("t"))).ToString());
3224Assert.Null(Generator.GetType(Generator.DelegateDeclaration("d")));
3226Assert.Equal("t", Generator.GetType(Generator.LocalDeclarationStatement(Generator.IdentifierName("t"), "v")).ToString());
3228Assert.Null(Generator.GetType(Generator.ClassDeclaration("c")));
3229Assert.Null(Generator.GetType(Generator.IdentifierName("x")));
3235Assert.Equal("t", Generator.GetType(Generator.WithType(Generator.MethodDeclaration("m", returnType: Generator.IdentifierName("x")), Generator.IdentifierName("t"))).ToString());
3236Assert.Equal("t", Generator.GetType(Generator.WithType(Generator.FieldDeclaration("f", Generator.IdentifierName("x")), Generator.IdentifierName("t"))).ToString());
3237Assert.Equal("t", Generator.GetType(Generator.WithType(Generator.PropertyDeclaration("p", Generator.IdentifierName("x")), Generator.IdentifierName("t"))).ToString());
3238Assert.Equal("t", Generator.GetType(Generator.WithType(Generator.IndexerDeclaration([Generator.ParameterDeclaration("p", Generator.IdentifierName("pt"))], Generator.IdentifierName("x")), Generator.IdentifierName("t"))).ToString());
3239Assert.Equal("t", Generator.GetType(Generator.WithType(Generator.ParameterDeclaration("p", Generator.IdentifierName("x")), Generator.IdentifierName("t"))).ToString());
3241Assert.Equal("t", Generator.GetType(Generator.WithType(Generator.DelegateDeclaration("t"), Generator.IdentifierName("t"))).ToString());
3243Assert.Equal("t", Generator.GetType(Generator.WithType(Generator.EventDeclaration("ef", Generator.IdentifierName("x")), Generator.IdentifierName("t"))).ToString());
3244Assert.Equal("t", Generator.GetType(Generator.WithType(Generator.CustomEventDeclaration("ep", Generator.IdentifierName("x")), Generator.IdentifierName("t"))).ToString());
3246Assert.Equal("t", Generator.GetType(Generator.WithType(Generator.LocalDeclarationStatement(Generator.IdentifierName("x"), "v"), Generator.IdentifierName("t"))).ToString());
3247Assert.Null(Generator.GetType(Generator.WithType(Generator.ClassDeclaration("c"), Generator.IdentifierName("t"))));
3248Assert.Null(Generator.GetType(Generator.WithType(Generator.IdentifierName("x"), Generator.IdentifierName("t"))));
3254Assert.Equal(0, Generator.GetParameters(Generator.MethodDeclaration("m")).Count);
3255Assert.Equal(1, Generator.GetParameters(Generator.MethodDeclaration("m", parameters: [Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))])).Count);
3256Assert.Equal(2, Generator.GetParameters(Generator.MethodDeclaration("m", parameters: [Generator.ParameterDeclaration("p", Generator.IdentifierName("t")), Generator.ParameterDeclaration("p2", Generator.IdentifierName("t2"))])).Count);
3258Assert.Equal(0, Generator.GetParameters(Generator.ConstructorDeclaration()).Count);
3259Assert.Equal(1, Generator.GetParameters(Generator.ConstructorDeclaration(parameters: [Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))])).Count);
3260Assert.Equal(2, Generator.GetParameters(Generator.ConstructorDeclaration(parameters: [Generator.ParameterDeclaration("p", Generator.IdentifierName("t")), Generator.ParameterDeclaration("p2", Generator.IdentifierName("t2"))])).Count);
3262Assert.Equal(1, Generator.GetParameters(Generator.IndexerDeclaration([Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))], Generator.IdentifierName("t"))).Count);
3263Assert.Equal(2, Generator.GetParameters(Generator.IndexerDeclaration([Generator.ParameterDeclaration("p", Generator.IdentifierName("t")), Generator.ParameterDeclaration("p2", Generator.IdentifierName("t2"))], Generator.IdentifierName("t"))).Count);
3265Assert.Equal(0, Generator.GetParameters(Generator.ValueReturningLambdaExpression(Generator.IdentifierName("expr"))).Count);
3266Assert.Equal(1, Generator.GetParameters(Generator.ValueReturningLambdaExpression("p1", Generator.IdentifierName("expr"))).Count);
3268Assert.Equal(0, Generator.GetParameters(Generator.VoidReturningLambdaExpression(Generator.IdentifierName("expr"))).Count);
3269Assert.Equal(1, Generator.GetParameters(Generator.VoidReturningLambdaExpression("p1", Generator.IdentifierName("expr"))).Count);
3271Assert.Equal(0, Generator.GetParameters(Generator.DelegateDeclaration("d")).Count);
3272Assert.Equal(1, Generator.GetParameters(Generator.DelegateDeclaration("d", parameters: [Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))])).Count);
3274Assert.Equal(0, Generator.GetParameters(Generator.ClassDeclaration("c")).Count);
3275Assert.Equal(0, Generator.GetParameters(Generator.IdentifierName("x")).Count);
3281Assert.Equal(1, Generator.GetParameters(Generator.AddParameters(Generator.MethodDeclaration("m"), [Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))])).Count);
3282Assert.Equal(1, Generator.GetParameters(Generator.AddParameters(Generator.ConstructorDeclaration(), [Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))])).Count);
3283Assert.Equal(3, Generator.GetParameters(Generator.AddParameters(Generator.IndexerDeclaration([Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))], Generator.IdentifierName("t")), [Generator.ParameterDeclaration("p2", Generator.IdentifierName("t2")), Generator.ParameterDeclaration("p3", Generator.IdentifierName("t3"))])).Count);
3285Assert.Equal(1, Generator.GetParameters(Generator.AddParameters(Generator.ValueReturningLambdaExpression(Generator.IdentifierName("expr")), [Generator.LambdaParameter("p")])).Count);
3286Assert.Equal(1, Generator.GetParameters(Generator.AddParameters(Generator.VoidReturningLambdaExpression(Generator.IdentifierName("expr")), [Generator.LambdaParameter("p")])).Count);
3288Assert.Equal(1, Generator.GetParameters(Generator.AddParameters(Generator.DelegateDeclaration("d"), [Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))])).Count);
3290Assert.Equal(1, Generator.GetParameters(Generator.AddParameters(Generator.ClassDeclaration("c"), [Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))])).Count);
3291Assert.Equal(1, Generator.GetParameters(Generator.AddParameters(Generator.StructDeclaration("c"), [Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))])).Count);
3292Assert.Equal(1, Generator.GetParameters(Generator.AddParameters(Generator.InterfaceDeclaration("c"), [Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))])).Count);
3293Assert.Equal(0, Generator.GetParameters(Generator.AddParameters(Generator.IdentifierName("x"), [Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))])).Count);
3300Assert.Equal("x", Generator.GetExpression(Generator.FieldDeclaration("f", Generator.IdentifierName("t"), initializer: Generator.IdentifierName("x"))).ToString());
3301Assert.Equal("x", Generator.GetExpression(Generator.ParameterDeclaration("p", Generator.IdentifierName("t"), initializer: Generator.IdentifierName("x"))).ToString());
3302Assert.Equal("x", Generator.GetExpression(Generator.LocalDeclarationStatement("loc", initializer: Generator.IdentifierName("x"))).ToString());
3305Assert.Null(Generator.GetExpression(Generator.ValueReturningLambdaExpression("p", [Generator.IdentifierName("x")])));
3306Assert.Equal(1, Generator.GetStatements(Generator.ValueReturningLambdaExpression("p", [Generator.IdentifierName("x")])).Count);
3307Assert.Equal("x", Generator.GetExpression(Generator.ValueReturningLambdaExpression(Generator.IdentifierName("x"))).ToString());
3308Assert.Equal("x", Generator.GetExpression(Generator.VoidReturningLambdaExpression(Generator.IdentifierName("x"))).ToString());
3309Assert.Equal("x", Generator.GetExpression(Generator.ValueReturningLambdaExpression("p", Generator.IdentifierName("x"))).ToString());
3310Assert.Equal("x", Generator.GetExpression(Generator.VoidReturningLambdaExpression("p", Generator.IdentifierName("x"))).ToString());
3313Assert.Null(Generator.GetExpression(Generator.IdentifierName("e")));
3316var method = (MethodDeclarationSyntax)Generator.MethodDeclaration("p");
3318method = method.WithExpressionBody(ArrowExpressionClause((ExpressionSyntax)Generator.IdentifierName("x")));
3320Assert.Equal("x", Generator.GetExpression(method).ToString());
3325local = local.WithExpressionBody(ArrowExpressionClause((ExpressionSyntax)Generator.IdentifierName("x")));
3327Assert.Equal("x", Generator.GetExpression(local).ToString());
3334Assert.Equal("x", Generator.GetExpression(Generator.WithExpression(Generator.FieldDeclaration("f", Generator.IdentifierName("t")), Generator.IdentifierName("x"))).ToString());
3335Assert.Equal("x", Generator.GetExpression(Generator.WithExpression(Generator.ParameterDeclaration("p", Generator.IdentifierName("t")), Generator.IdentifierName("x"))).ToString());
3336Assert.Equal("x", Generator.GetExpression(Generator.WithExpression(Generator.LocalDeclarationStatement(Generator.IdentifierName("t"), "loc"), Generator.IdentifierName("x"))).ToString());
3339Assert.Equal("y", Generator.GetExpression(Generator.WithExpression(Generator.ValueReturningLambdaExpression("p", [Generator.IdentifierName("x")]), Generator.IdentifierName("y"))).ToString());
3340Assert.Equal("y", Generator.GetExpression(Generator.WithExpression(Generator.VoidReturningLambdaExpression("p", [Generator.IdentifierName("x")]), Generator.IdentifierName("y"))).ToString());
3341Assert.Equal("y", Generator.GetExpression(Generator.WithExpression(Generator.ValueReturningLambdaExpression([Generator.IdentifierName("x")]), Generator.IdentifierName("y"))).ToString());
3342Assert.Equal("y", Generator.GetExpression(Generator.WithExpression(Generator.VoidReturningLambdaExpression([Generator.IdentifierName("x")]), Generator.IdentifierName("y"))).ToString());
3343Assert.Equal("y", Generator.GetExpression(Generator.WithExpression(Generator.ValueReturningLambdaExpression("p", Generator.IdentifierName("x")), Generator.IdentifierName("y"))).ToString());
3344Assert.Equal("y", Generator.GetExpression(Generator.WithExpression(Generator.VoidReturningLambdaExpression("p", Generator.IdentifierName("x")), Generator.IdentifierName("y"))).ToString());
3345Assert.Equal("y", Generator.GetExpression(Generator.WithExpression(Generator.ValueReturningLambdaExpression(Generator.IdentifierName("x")), Generator.IdentifierName("y"))).ToString());
3346Assert.Equal("y", Generator.GetExpression(Generator.WithExpression(Generator.VoidReturningLambdaExpression(Generator.IdentifierName("x")), Generator.IdentifierName("y"))).ToString());
3349Assert.Null(Generator.GetExpression(Generator.WithExpression(Generator.IdentifierName("e"), Generator.IdentifierName("x"))));
3352var method = (MethodDeclarationSyntax)Generator.MethodDeclaration("p");
3354method = method.WithExpressionBody(ArrowExpressionClause((ExpressionSyntax)Generator.IdentifierName("x")));
3356Assert.Equal("y", Generator.GetExpression(Generator.WithExpression(method, Generator.IdentifierName("y"))).ToString());
3361local = local.WithExpressionBody(ArrowExpressionClause((ExpressionSyntax)Generator.IdentifierName("x")));
3363Assert.Equal("y", Generator.GetExpression(Generator.WithExpression(local, Generator.IdentifierName("y"))).ToString());
3369var prop = Generator.PropertyDeclaration("p", Generator.IdentifierName("T"));
3371Assert.Equal(2, Generator.GetAccessors(prop).Count);
3374var getAccessor = Generator.GetAccessor(prop, DeclarationKind.GetAccessor);
3380Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(getAccessor));
3383var setAccessor = Generator.GetAccessor(prop, DeclarationKind.SetAccessor);
3385Assert.Equal(Accessibility.NotApplicable, Generator.GetAccessibility(setAccessor));
3388Assert.Null(Generator.GetAccessor(Generator.RemoveNode(prop, getAccessor), DeclarationKind.GetAccessor));
3389Assert.Null(Generator.GetAccessor(Generator.RemoveNode(prop, setAccessor), DeclarationKind.SetAccessor));
3392Assert.Equal(Accessibility.Public, Generator.GetAccessibility(Generator.WithAccessibility(getAccessor, Accessibility.Public)));
3393Assert.Equal(Accessibility.Private, Generator.GetAccessibility(Generator.WithAccessibility(setAccessor, Accessibility.Private)));
3396Assert.Equal(0, Generator.GetStatements(getAccessor).Count);
3397Assert.Equal(0, Generator.GetStatements(setAccessor).Count);
3399var newGetAccessor = Generator.WithStatements(getAccessor, null);
3403var newNewGetAccessor = Generator.WithStatements(newGetAccessor, []);
3410var newProp = Generator.ReplaceNode(prop, getAccessor, Generator.WithAccessibility(getAccessor, Accessibility.Public));
3411Assert.Equal(Accessibility.Public, Generator.GetAccessibility(Generator.GetAccessor(newProp, DeclarationKind.GetAccessor)));
3413newProp = Generator.ReplaceNode(prop, setAccessor, Generator.WithAccessibility(setAccessor, Accessibility.Public));
3414Assert.Equal(Accessibility.Public, Generator.GetAccessibility(Generator.GetAccessor(newProp, DeclarationKind.SetAccessor)));
3421Generator.WithAccessorDeclarations(Generator.PropertyDeclaration("p", Generator.IdentifierName("x"))),
3425Generator.WithAccessorDeclarations(
3426Generator.PropertyDeclaration("p", Generator.IdentifierName("x")),
3427Generator.GetAccessorDeclaration(Accessibility.NotApplicable, [Generator.ReturnStatement()])),
3431Generator.WithAccessorDeclarations(
3432Generator.PropertyDeclaration("p", Generator.IdentifierName("x")),
3433Generator.GetAccessorDeclaration(Accessibility.Protected, [Generator.ReturnStatement()])),
3437Generator.WithAccessorDeclarations(
3438Generator.PropertyDeclaration("p", Generator.IdentifierName("x")),
3439Generator.SetAccessorDeclaration(Accessibility.Protected, [Generator.ReturnStatement()])),
3443Generator.WithAccessorDeclarations(Generator.IndexerDeclaration([Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))], Generator.IdentifierName("x"))),
3447Generator.WithAccessorDeclarations(Generator.IndexerDeclaration([Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))], Generator.IdentifierName("x")),
3448Generator.GetAccessorDeclaration(Accessibility.Protected, [Generator.ReturnStatement()])),
3452Generator.WithAccessorDeclarations(
3453Generator.IndexerDeclaration([Generator.ParameterDeclaration("p", Generator.IdentifierName("t"))], Generator.IdentifierName("x")),
3454Generator.SetAccessorDeclaration(Accessibility.Protected, [Generator.ReturnStatement()])),
3467var x = Generator.GetMembers(root.Members[0])[0];
3468var y = Generator.GetMembers(root.Members[0])[1];
3470Assert.Equal(2, Generator.GetAccessors(x).Count);
3471Assert.Equal(0, Generator.GetAccessors(y).Count);
3474var y2 = Generator.AddAccessors(y, [Generator.GetAccessor(x, DeclarationKind.GetAccessor)]);
3476Assert.Equal(0, Generator.GetAccessors(y2).Count);
3488var x = Generator.GetMembers(root.Members[0])[0];
3489var y = Generator.GetMembers(root.Members[0])[1];
3491Assert.Equal(2, Generator.GetAccessors(x).Count);
3492Assert.Equal(0, Generator.GetAccessors(y).Count);
3495var y2 = Generator.AddAccessors(y, [Generator.GetAccessor(x, DeclarationKind.GetAccessor)]);
3497Assert.Equal(0, Generator.GetAccessors(y2).Count);
3511var x = Generator.GetMembers(root.Members[0])[0];
3512var y = Generator.GetMembers(root.Members[0])[1];
3513var z = Generator.GetMembers(root.Members[0])[2];
3515Assert.NotNull(Generator.GetExpression(x));
3516Assert.NotNull(Generator.GetExpression(y));
3517Assert.Null(Generator.GetExpression(z));
3518Assert.Equal("100", Generator.GetExpression(x).ToString());
3519Assert.Equal("300", Generator.GetExpression(y).ToString());
3521Assert.Equal("500", Generator.GetExpression(Generator.WithExpression(x, Generator.LiteralExpression(500))).ToString());
3522Assert.Equal("500", Generator.GetExpression(Generator.WithExpression(y, Generator.LiteralExpression(500))).ToString());
3523Assert.Equal("500", Generator.GetExpression(Generator.WithExpression(z, Generator.LiteralExpression(500))).ToString());
3536var x = Generator.GetMembers(root.Members[0])[0];
3537var y = Generator.GetMembers(root.Members[0])[1];
3539Assert.Null(Generator.GetExpression(x));
3540Assert.NotNull(Generator.GetExpression(y));
3541Assert.Equal("p * 10", Generator.GetExpression(y).ToString());
3543Assert.Null(Generator.GetExpression(Generator.WithExpression(x, Generator.LiteralExpression(500))));
3544Assert.Equal("500", Generator.GetExpression(Generator.WithExpression(y, Generator.LiteralExpression(500))).ToString());
3553Generator.ExpressionStatement(Generator.AssignmentStatement(Generator.IdentifierName("x"), Generator.IdentifierName("y"))),
3556Generator.ExpressionStatement(Generator.InvocationExpression(Generator.IdentifierName("fn"), Generator.IdentifierName("arg")))
3559Assert.Equal(0, Generator.GetStatements(Generator.MethodDeclaration("m")).Count);
3560Assert.Equal(2, Generator.GetStatements(Generator.MethodDeclaration("m", statements: stmts)).Count);
3562Assert.Equal(0, Generator.GetStatements(Generator.ConstructorDeclaration()).Count);
3563Assert.Equal(2, Generator.GetStatements(Generator.ConstructorDeclaration(statements: stmts)).Count);
3565Assert.Equal(0, Generator.GetStatements(Generator.VoidReturningLambdaExpression([])).Count);
3566Assert.Equal(2, Generator.GetStatements(Generator.VoidReturningLambdaExpression(stmts)).Count);
3568Assert.Equal(0, Generator.GetStatements(Generator.ValueReturningLambdaExpression([])).Count);
3569Assert.Equal(2, Generator.GetStatements(Generator.ValueReturningLambdaExpression(stmts)).Count);
3571Assert.Equal(0, Generator.GetStatements(Generator.IdentifierName("x")).Count);
3580Generator.ExpressionStatement(Generator.AssignmentStatement(Generator.IdentifierName("x"), Generator.IdentifierName("y"))),
3583Generator.ExpressionStatement(Generator.InvocationExpression(Generator.IdentifierName("fn"), Generator.IdentifierName("arg")))
3586Assert.Equal(2, Generator.GetStatements(Generator.WithStatements(Generator.MethodDeclaration("m"), stmts)).Count);
3587Assert.Equal(2, Generator.GetStatements(Generator.WithStatements(Generator.ConstructorDeclaration(), stmts)).Count);
3588Assert.Equal(2, Generator.GetStatements(Generator.WithStatements(Generator.VoidReturningLambdaExpression([]), stmts)).Count);
3589Assert.Equal(2, Generator.GetStatements(Generator.WithStatements(Generator.ValueReturningLambdaExpression([]), stmts)).Count);
3591Assert.Equal(0, Generator.GetStatements(Generator.WithStatements(Generator.IdentifierName("x"), stmts)).Count);
3600Generator.ExpressionStatement(Generator.AssignmentStatement(Generator.IdentifierName("x"), Generator.IdentifierName("y"))),
3603Generator.ExpressionStatement(Generator.InvocationExpression(Generator.IdentifierName("fn"), Generator.IdentifierName("arg")))
3606var p = Generator.ParameterDeclaration("p", Generator.IdentifierName("t"));
3609Assert.Equal(0, Generator.GetGetAccessorStatements(Generator.PropertyDeclaration("p", Generator.IdentifierName("t"))).Count);
3610Assert.Equal(2, Generator.GetGetAccessorStatements(Generator.PropertyDeclaration("p", Generator.IdentifierName("t"), getAccessorStatements: stmts)).Count);
3612Assert.Equal(0, Generator.GetGetAccessorStatements(Generator.IndexerDeclaration([p], Generator.IdentifierName("t"))).Count);
3613Assert.Equal(2, Generator.GetGetAccessorStatements(Generator.IndexerDeclaration([p], Generator.IdentifierName("t"), getAccessorStatements: stmts)).Count);
3615Assert.Equal(0, Generator.GetGetAccessorStatements(Generator.IdentifierName("x")).Count);
3618Assert.Equal(0, Generator.GetSetAccessorStatements(Generator.PropertyDeclaration("p", Generator.IdentifierName("t"))).Count);
3619Assert.Equal(2, Generator.GetSetAccessorStatements(Generator.PropertyDeclaration("p", Generator.IdentifierName("t"), setAccessorStatements: stmts)).Count);
3621Assert.Equal(0, Generator.GetSetAccessorStatements(Generator.IndexerDeclaration([p], Generator.IdentifierName("t"))).Count);
3622Assert.Equal(2, Generator.GetSetAccessorStatements(Generator.IndexerDeclaration([p], Generator.IdentifierName("t"), setAccessorStatements: stmts)).Count);
3624Assert.Equal(0, Generator.GetSetAccessorStatements(Generator.IdentifierName("x")).Count);
3633Generator.ExpressionStatement(Generator.AssignmentStatement(Generator.IdentifierName("x"), Generator.IdentifierName("y"))),
3636Generator.ExpressionStatement(Generator.InvocationExpression(Generator.IdentifierName("fn"), Generator.IdentifierName("arg")))
3639var p = Generator.ParameterDeclaration("p", Generator.IdentifierName("t"));
3642Assert.Equal(2, Generator.GetGetAccessorStatements(Generator.WithGetAccessorStatements(Generator.PropertyDeclaration("p", Generator.IdentifierName("t")), stmts)).Count);
3643Assert.Equal(2, Generator.GetGetAccessorStatements(Generator.WithGetAccessorStatements(Generator.IndexerDeclaration([p], Generator.IdentifierName("t")), stmts)).Count);
3644Assert.Equal(0, Generator.GetGetAccessorStatements(Generator.WithGetAccessorStatements(Generator.IdentifierName("x"), stmts)).Count);
3647Assert.Equal(2, Generator.GetSetAccessorStatements(Generator.WithSetAccessorStatements(Generator.PropertyDeclaration("p", Generator.IdentifierName("t")), stmts)).Count);
3648Assert.Equal(2, Generator.GetSetAccessorStatements(Generator.WithSetAccessorStatements(Generator.IndexerDeclaration([p], Generator.IdentifierName("t")), stmts)).Count);
3649Assert.Equal(0, Generator.GetSetAccessorStatements(Generator.WithSetAccessorStatements(Generator.IdentifierName("x"), stmts)).Count);
3660var baseListBI = Generator.GetBaseAndInterfaceTypes(classBI);
3671var baseListB = Generator.GetBaseAndInterfaceTypes(classB);
3681var baseListN = Generator.GetBaseAndInterfaceTypes(classN);
3694var baseListBI = Generator.GetBaseAndInterfaceTypes(classBI);
3698Generator.RemoveNode(classBI, baseListBI[0]),
3704Generator.RemoveNode(classBI, baseListBI[1]),
3710Generator.RemoveNodes(classBI, baseListBI),
3735Generator.AddBaseType(classC, Generator.IdentifierName("T")),
3741Generator.AddBaseType(classCI, Generator.IdentifierName("T")),
3748Generator.AddBaseType(classCB, Generator.IdentifierName("T")),
3773Generator.AddInterfaceType(classC, Generator.IdentifierName("T")),
3779Generator.AddInterfaceType(classCI, Generator.IdentifierName("T")),
3785Generator.AddInterfaceType(classCB, Generator.IdentifierName("T")),
3805var declC = Generator.GetDeclaration(symbolC.DeclaringSyntaxReferences.Select(x => x.GetSyntax()).First());
3806var declX = Generator.GetDeclaration(symbolX.DeclaringSyntaxReferences.Select(x => x.GetSyntax()).First());
3807var declY = Generator.GetDeclaration(symbolY.DeclaringSyntaxReferences.Select(x => x.GetSyntax()).First());
3808var declZ = Generator.GetDeclaration(symbolZ.DeclaringSyntaxReferences.Select(x => x.GetSyntax()).First());
3810Assert.Equal(DeclarationKind.Field, Generator.GetDeclarationKind(declX));
3811Assert.Equal(DeclarationKind.Field, Generator.GetDeclarationKind(declY));
3812Assert.Equal(DeclarationKind.Field, Generator.GetDeclarationKind(declZ));
3814Assert.NotNull(Generator.GetType(declX));
3815Assert.Equal("int", Generator.GetType(declX).ToString());
3816Assert.Equal("X", Generator.GetName(declX));
3817Assert.Equal(Accessibility.Public, Generator.GetAccessibility(declX));
3818Assert.Equal(DeclarationModifiers.Static, Generator.GetModifiers(declX));
3820Assert.NotNull(Generator.GetType(declY));
3821Assert.Equal("int", Generator.GetType(declY).ToString());
3822Assert.Equal("Y", Generator.GetName(declY));
3823Assert.Equal(Accessibility.Public, Generator.GetAccessibility(declY));
3824Assert.Equal(DeclarationModifiers.Static, Generator.GetModifiers(declY));
3826Assert.NotNull(Generator.GetType(declZ));
3827Assert.Equal("int", Generator.GetType(declZ).ToString());
3828Assert.Equal("Z", Generator.GetName(declZ));
3829Assert.Equal(Accessibility.Public, Generator.GetAccessibility(declZ));
3830Assert.Equal(DeclarationModifiers.Static, Generator.GetModifiers(declZ));
3832var xTypedT = Generator.WithType(declX, Generator.IdentifierName("T"));
3833Assert.Equal(DeclarationKind.Field, Generator.GetDeclarationKind(xTypedT));
3835Assert.Equal("T", Generator.GetType(xTypedT).ToString());
3837var xNamedQ = Generator.WithName(declX, "Q");
3838Assert.Equal(DeclarationKind.Field, Generator.GetDeclarationKind(xNamedQ));
3840Assert.Equal("Q", Generator.GetName(xNamedQ).ToString());
3842var xInitialized = Generator.WithExpression(declX, Generator.IdentifierName("e"));
3843Assert.Equal(DeclarationKind.Field, Generator.GetDeclarationKind(xInitialized));
3845Assert.Equal("e", Generator.GetExpression(xInitialized).ToString());
3847var xPrivate = Generator.WithAccessibility(declX, Accessibility.Private);
3848Assert.Equal(DeclarationKind.Field, Generator.GetDeclarationKind(xPrivate));
3850Assert.Equal(Accessibility.Private, Generator.GetAccessibility(xPrivate));
3852var xReadOnly = Generator.WithModifiers(declX, DeclarationModifiers.ReadOnly);
3853Assert.Equal(DeclarationKind.Field, Generator.GetDeclarationKind(xReadOnly));
3855Assert.Equal(DeclarationModifiers.ReadOnly, Generator.GetModifiers(xReadOnly));
3857var xAttributed = Generator.AddAttributes(declX, Generator.Attribute("A"));
3858Assert.Equal(DeclarationKind.Field, Generator.GetDeclarationKind(xAttributed));
3860Assert.Equal(1, Generator.GetAttributes(xAttributed).Count);
3861Assert.Equal("[A]", Generator.GetAttributes(xAttributed)[0].ToString());
3863var membersC = Generator.GetMembers(declC);
3870Generator.InsertMembers(declC, 0, Generator.FieldDeclaration("A", Generator.IdentifierName("T"))),
3878Generator.InsertMembers(declC, 1, Generator.FieldDeclaration("A", Generator.IdentifierName("T"))),
3887Generator.InsertMembers(declC, 2, Generator.FieldDeclaration("A", Generator.IdentifierName("T"))),
3896Generator.InsertMembers(declC, 3, Generator.FieldDeclaration("A", Generator.IdentifierName("T"))),
3904Generator.ClassDeclaration("C", members: [declX, declY]),
3912Generator.ReplaceNode(declC, declX, xTypedT),
3920Generator.ReplaceNode(declC, declY, Generator.WithType(declY, Generator.IdentifierName("T"))),
3929Generator.ReplaceNode(declC, declZ, Generator.WithType(declZ, Generator.IdentifierName("T"))),
3937Generator.ReplaceNode(declC, declX, Generator.WithAccessibility(declX, Accessibility.Private)),
3945Generator.ReplaceNode(declC, declX, Generator.WithModifiers(declX, DeclarationModifiers.None)),
3952Generator.ReplaceNode(declC, declX, Generator.WithName(declX, "Q")),
3958Generator.ReplaceNode(declC, declX.GetAncestorOrThis<VariableDeclaratorSyntax>(), VariableDeclarator("Q")),
3965Generator.ReplaceNode(declC, declX, Generator.WithExpression(declX, Generator.IdentifierName("e"))),
3982var declC = Generator.GetDeclaration(symbolC.DeclaringSyntaxReferences.Select(x => x.GetSyntax()).First());
3985Generator.InsertMembers(declC, 0, Generator.FieldDeclaration("A", Generator.IdentifierName("T"))),
4000var declC = Generator.GetDeclaration(symbolC.DeclaringSyntaxReferences.Select(x => x.GetSyntax()).First());
4003Generator.InsertMembers(declC, 0, Generator.FieldDeclaration("A", Generator.IdentifierName("T"))),
4021var declC = Generator.GetDeclaration(symbolC.DeclaringSyntaxReferences.Select(x => x.GetSyntax()).First());
4024Generator.InsertMembers(declC, 0, Generator.FieldDeclaration("A", Generator.IdentifierName("T"))),
4039var declC = Generator.GetDeclaration(symbolC.DeclaringSyntaxReferences.Select(x => x.GetSyntax()).First());
4042Generator.InsertMembers(declC, 0, Generator.FieldDeclaration("A", Generator.IdentifierName("T"))),
4057var declC = Generator.GetDeclaration(symbolC.DeclaringSyntaxReferences.Select(x => x.GetSyntax()).First());
4060Generator.InsertMembers(declC, 0, Generator.PropertyDeclaration("A", Generator.IdentifierName("T"))),
4075var declC = Generator.GetDeclaration(symbolC.DeclaringSyntaxReferences.Select(x => x.GetSyntax()).First());
4078Generator.InsertMembers(declC, 0, Generator.PropertyDeclaration("A", Generator.IdentifierName("T"))),
4093var declC = Generator.GetDeclaration(symbolC.DeclaringSyntaxReferences.Select(x => x.GetSyntax()).First());
4096Generator.InsertMembers(declC, 0, Generator.EnumMember("A")),
4111var declC = Generator.GetDeclaration(symbolC.DeclaringSyntaxReferences.Select(x => x.GetSyntax()).First());
4114Generator.InsertMembers(declC, 0, Generator.FieldDeclaration("A", Generator.IdentifierName("T"))),
4129var declC = Generator.GetDeclaration(symbolC.DeclaringSyntaxReferences.Select(x => x.GetSyntax()).First());
4132Generator.InsertMembers(declC, 0, Generator.FieldDeclaration("A", Generator.IdentifierName("T"))),
4149var attrs = Generator.GetAttributes(declC);
4156Assert.Equal("X", Generator.GetName(attrX));
4157Assert.Equal("Y", Generator.GetName(attrY));
4158Assert.Equal("Z", Generator.GetName(attrZ));
4160var xNamedQ = Generator.WithName(attrX, "Q");
4161Assert.Equal(DeclarationKind.Attribute, Generator.GetDeclarationKind(xNamedQ));
4165var xWithArg = Generator.AddAttributeArguments(attrX, [Generator.AttributeArgument(Generator.IdentifierName("e"))]);
4166Assert.Equal(DeclarationKind.Attribute, Generator.GetDeclarationKind(xWithArg));
4172Generator.InsertAttributes(declC, 0, Generator.Attribute("A")),
4180Generator.InsertAttributes(declC, 1, Generator.Attribute("A")),
4189Generator.InsertAttributes(declC, 2, Generator.Attribute("A")),
4198Generator.InsertAttributes(declC, 3, Generator.Attribute("A")),
4207Generator.RemoveNodes(declC, [attrX]),
4214Generator.RemoveNodes(declC, [attrY]),
4221Generator.RemoveNodes(declC, [attrZ]),
4228Generator.RemoveNodes(declC, [attrX, attrY]),
4235Generator.RemoveNodes(declC, [attrX, attrZ]),
4242Generator.RemoveNodes(declC, [attrY, attrZ]),
4249Generator.RemoveNodes(declC, [attrX, attrY, attrZ]),
4256Generator.ReplaceNode(declC, attrX, Generator.Attribute("A")),
4263Generator.ReplaceNode(declC, attrY, Generator.Attribute("A")),
4270Generator.ReplaceNode(declC, attrZ, Generator.Attribute("A")),
4277Generator.ReplaceNode(declC, attrX, Generator.AddAttributeArguments(attrX, [Generator.AttributeArgument(Generator.IdentifierName("e"))])),
4301Generator.MethodDeclaration(method),
4305Generator.IndexerDeclaration(indexer),
4309Generator.PropertyDeclaration(property),
4326var declM = Generator.GetMembers(declC).First();
4328Assert.Equal(0, Generator.GetAttributes(declM).Count);
4330var attrs = Generator.GetReturnAttributes(declM);
4336Assert.Equal("X", Generator.GetName(attrX));
4337Assert.Equal("Y", Generator.GetName(attrY));
4338Assert.Equal("Z", Generator.GetName(attrZ));
4340var xNamedQ = Generator.WithName(attrX, "Q");
4341Assert.Equal(DeclarationKind.Attribute, Generator.GetDeclarationKind(xNamedQ));
4345var xWithArg = Generator.AddAttributeArguments(attrX, [Generator.AttributeArgument(Generator.IdentifierName("e"))]);
4346Assert.Equal(DeclarationKind.Attribute, Generator.GetDeclarationKind(xWithArg));
4352Generator.InsertReturnAttributes(declM, 0, Generator.Attribute("A")),
4360Generator.InsertReturnAttributes(declM, 1, Generator.Attribute("A")),
4369Generator.InsertReturnAttributes(declM, 2, Generator.Attribute("A")),
4378Generator.InsertReturnAttributes(declM, 3, Generator.Attribute("A")),
4387Generator.ReplaceNode(declM, attrX, Generator.Attribute("Q")),
4394Generator.ReplaceNode(declM, attrX, Generator.AddAttributeArguments(attrX, [Generator.AttributeArgument(Generator.IdentifierName("e"))])),
4418var declM = Generator.GetMembers(declC).First();
4420var attrs = Generator.GetAttributes(declM);
4424Assert.Equal("X", Generator.GetName(attrX));
4428Assert.Equal("Y", Generator.GetName(attrY));
4432Assert.Equal("Z", Generator.GetName(attrZ));
4436Assert.Equal("P", Generator.GetName(attrP));
4439var rattrs = Generator.GetReturnAttributes(declM);
4443Assert.Equal("A", Generator.GetName(attrA));
4447Assert.Equal("B", Generator.GetName(attrB));
4451Assert.Equal("C", Generator.GetName(attrC));
4455Assert.Equal("D", Generator.GetName(attrD));
4460Generator.InsertAttributes(declM, 0, Generator.Attribute("Q")),
4472Generator.InsertAttributes(declM, 1, Generator.Attribute("Q")),
4484Generator.InsertAttributes(declM, 2, Generator.Attribute("Q")),
4497Generator.InsertAttributes(declM, 3, Generator.Attribute("Q")),
4509Generator.InsertAttributes(declM, 4, Generator.Attribute("Q")),
4521Generator.InsertReturnAttributes(declM, 0, Generator.Attribute("Q")),
4533Generator.InsertReturnAttributes(declM, 1, Generator.Attribute("Q")),
4545Generator.InsertReturnAttributes(declM, 2, Generator.Attribute("Q")),
4558Generator.InsertReturnAttributes(declM, 3, Generator.Attribute("Q")),
4571Generator.InsertReturnAttributes(declM, 4, Generator.Attribute("Q")),
4600var newDecl = Generator.AddInterfaceType(decl, Generator.IdentifierName("IDisposable"));
4616Generator.Declaration(symbolR),
4631Generator.Declaration(symbolR),
4654Generator.Declaration(symbolR),
4669Generator.Declaration(symbolR),
4692Generator.Declaration(symbol),
4712Generator.Declaration(symbol),
4730Generator.Declaration(symbol),
4747Generator.Declaration(symbol),
4772Generator.Declaration(symbol),
4930Generator.Declaration(symbol),
4988Generator.Attribute(attribute),
4996Generator.TypeExpression(type),