Browse Source

Merge pull request #8906 from workgroupengineering/fixes/Warnings/DevGenerators/CS860X

fix(DevGenerators): Some null annotation
pull/8920/head
Max Katz 4 years ago
committed by GitHub
parent
commit
edcdb2ab6c
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      src/tools/DevGenerators/CompositionGenerator/CompositionRoslynGenerator.cs
  2. 30
      src/tools/DevGenerators/CompositionGenerator/Extensions.cs
  3. 4
      src/tools/DevGenerators/CompositionGenerator/Generator.Utils.cs
  4. 16
      src/tools/DevGenerators/CompositionGenerator/Generator.cs
  5. 1
      src/tools/DevGenerators/DevGenerators.csproj
  6. 11
      src/tools/DevGenerators/GetProcAddressInitialization.cs

7
src/tools/DevGenerators/CompositionGenerator/CompositionRoslynGenerator.cs

@ -11,8 +11,9 @@ namespace Avalonia.SourceGenerator.CompositionGenerator
{
var schema =
context.AdditionalTextsProvider.Where(static file => file.Path.EndsWith("composition-schema.xml"));
var configs = schema.Select((t, _) =>
(GConfig)new XmlSerializer(typeof(GConfig)).Deserialize(new StringReader(t.GetText().ToString())));
var configs = schema.Select((t, _) => t.GetText())
.Where(source => source is not null)
.Select((source, _) => (GConfig)new XmlSerializer(typeof(GConfig)).Deserialize(new StringReader(source!.ToString())));
context.RegisterSourceOutput(configs, (spc, config) =>
{
var generator = new Generator(new RoslynCompositionGeneratorSink(spc), config);
@ -20,4 +21,4 @@ namespace Avalonia.SourceGenerator.CompositionGenerator
});
}
}
}
}

30
src/tools/DevGenerators/CompositionGenerator/Extensions.cs

@ -7,49 +7,47 @@ namespace Avalonia.SourceGenerator.CompositionGenerator
{
public static class Extensions
{
public static ClassDeclarationSyntax AddModifiers(this ClassDeclarationSyntax cl, params SyntaxKind[] modifiers)
public static ClassDeclarationSyntax AddModifiers(this ClassDeclarationSyntax cl, params SyntaxKind[]? modifiers)
{
if (modifiers == null)
if (modifiers is null)
return cl;
return cl.AddModifiers(modifiers.Select(x => SyntaxFactory.Token(x)).ToArray());
}
public static MethodDeclarationSyntax AddModifiers(this MethodDeclarationSyntax cl, params SyntaxKind[] modifiers)
public static MethodDeclarationSyntax AddModifiers(this MethodDeclarationSyntax cl, params SyntaxKind[]? modifiers)
{
if (modifiers == null)
if (modifiers is null)
return cl;
return cl.AddModifiers(modifiers.Select(x => SyntaxFactory.Token(x)).ToArray());
}
public static PropertyDeclarationSyntax AddModifiers(this PropertyDeclarationSyntax cl, params SyntaxKind[] modifiers)
public static PropertyDeclarationSyntax AddModifiers(this PropertyDeclarationSyntax cl, params SyntaxKind[]? modifiers)
{
if (modifiers == null)
if (modifiers is null)
return cl;
return cl.AddModifiers(modifiers.Select(x => SyntaxFactory.Token(x)).ToArray());
}
public static ConstructorDeclarationSyntax AddModifiers(this ConstructorDeclarationSyntax cl, params SyntaxKind[] modifiers)
public static ConstructorDeclarationSyntax AddModifiers(this ConstructorDeclarationSyntax cl, params SyntaxKind[]? modifiers)
{
if (modifiers == null)
if (modifiers is null)
return cl;
return cl.AddModifiers(modifiers.Select(x => SyntaxFactory.Token(x)).ToArray());
}
public static AccessorDeclarationSyntax AddModifiers(this AccessorDeclarationSyntax cl, params SyntaxKind[] modifiers)
public static AccessorDeclarationSyntax AddModifiers(this AccessorDeclarationSyntax cl, params SyntaxKind[]? modifiers)
{
if (modifiers == null)
if (modifiers is null)
return cl;
return cl.AddModifiers(modifiers.Select(x => SyntaxFactory.Token(x)).ToArray());
}
public static EnumDeclarationSyntax AddModifiers(this EnumDeclarationSyntax cl, params SyntaxKind[] modifiers)
public static EnumDeclarationSyntax AddModifiers(this EnumDeclarationSyntax cl, params SyntaxKind[]? modifiers)
{
if (modifiers == null)
if (modifiers is null)
return cl;
return cl.AddModifiers(modifiers.Select(x => SyntaxFactory.Token(x)).ToArray());
}
public static string WithLowerFirst(this string s)
{
@ -58,7 +56,7 @@ namespace Avalonia.SourceGenerator.CompositionGenerator
return char.ToLowerInvariant(s[0]) + s.Substring(1);
}
public static ExpressionSyntax MemberAccess(params string[] identifiers)
public static ExpressionSyntax MemberAccess(params string[]? identifiers)
{
if (identifiers == null || identifiers.Length == 0)
throw new ArgumentException();
@ -96,4 +94,4 @@ namespace Avalonia.SourceGenerator.CompositionGenerator
? s.Substring(prefix.Length)
: s;
}
}
}

4
src/tools/DevGenerators/CompositionGenerator/Generator.Utils.cs

@ -54,7 +54,7 @@ namespace Avalonia.SourceGenerator.CompositionGenerator
FieldDeclarationSyntax DeclareField(string type, string name, params SyntaxKind[] modifiers) =>
DeclareField(type, name, null, modifiers);
FieldDeclarationSyntax DeclareField(string type, string name, EqualsValueClauseSyntax initializer,
FieldDeclarationSyntax DeclareField(string type, string name, EqualsValueClauseSyntax? initializer,
params SyntaxKind[] modifiers) =>
FieldDeclaration(
VariableDeclaration(ParseTypeName(type),
@ -63,4 +63,4 @@ namespace Avalonia.SourceGenerator.CompositionGenerator
.WithSemicolonToken(Semicolon())
.WithModifiers(TokenList(modifiers.Select(x => Token(x))));
}
}
}

16
src/tools/DevGenerators/CompositionGenerator/Generator.cs

@ -37,8 +37,8 @@ namespace Avalonia.SourceGenerator.CompositionGenerator
string ServerName(string c) => c != null ? ("Server" + c) : "ServerObject";
string ChangesName(string c) => c != null ? (c + "Changes") : "ChangeSet";
string ServerName(string? c) => c != null ? ("Server" + c) : "ServerObject";
string ChangesName(string? c) => c != null ? (c + "Changes") : "ChangeSet";
string ChangedFieldsTypeName(GClass c) => c.Name + "ChangedFields";
string ChangedFieldsFieldName(GClass c) => "_changedFieldsOf" + c.Name;
string PropertyBackingFieldName(GProperty prop) => "_" + prop.Name.WithLowerFirst();
@ -298,10 +298,10 @@ namespace Avalonia.SourceGenerator.CompositionGenerator
if(cl.Implements.Count > 0)
foreach (var impl in cl.Implements)
{
client = client.WithBaseList(client.BaseList.AddTypes(SimpleBaseType(ParseTypeName(impl.Name))));
client = client.WithBaseList(client.BaseList?.AddTypes(SimpleBaseType(ParseTypeName(impl.Name))));
if (impl.ServerName != null)
server = server.WithBaseList(
server.BaseList.AddTypes(SimpleBaseType(ParseTypeName(impl.ServerName))));
server.BaseList?.AddTypes(SimpleBaseType(ParseTypeName(impl.ServerName))));
client = client.AddMembers(
ParseMemberDeclaration($"{impl.ServerName} {impl.Name}.Server => Server;"));
@ -527,7 +527,7 @@ var changed = reader.Read<{ChangedFieldsTypeName(cl)}>();
body = body.AddStatements(
ParseStatement("return base.GetPropertyForAnimation(name);"));
var method = ((MethodDeclarationSyntax) ParseMemberDeclaration(
$"public override Avalonia.Rendering.Composition.Expressions.ExpressionVariant GetPropertyForAnimation(string name){{}}"))
$"public override Avalonia.Rendering.Composition.Expressions.ExpressionVariant GetPropertyForAnimation(string name){{}}")!)
.WithBody(body);
return cl.AddMembers(method);
@ -540,7 +540,7 @@ var changed = reader.Read<{ChangedFieldsTypeName(cl)}>();
body = body.AddStatements(
ParseStatement("return base.GetCompositionProperty(name);"));
var method = ((MethodDeclarationSyntax)ParseMemberDeclaration(
$"public override CompositionProperty? GetCompositionProperty(string name){{}}"))
$"public override CompositionProperty? GetCompositionProperty(string name){{}}")!)
.WithBody(body);
return cl.AddMembers(method);
@ -559,11 +559,11 @@ var changed = reader.Read<{ChangedFieldsTypeName(cl)}>();
);
return cl.AddMembers(
((MethodDeclarationSyntax) ParseMemberDeclaration(
"internal override void StartAnimation(string propertyName, CompositionAnimation animation, Avalonia.Rendering.Composition.Expressions.ExpressionVariant? finalValue){}"))
"internal override void StartAnimation(string propertyName, CompositionAnimation animation, Avalonia.Rendering.Composition.Expressions.ExpressionVariant? finalValue){}")!)
.WithBody(body));
}
}
}
}

1
src/tools/DevGenerators/DevGenerators.csproj

@ -4,6 +4,7 @@
<TargetFramework>netstandard2.0</TargetFramework>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<LangVersion>10</LangVersion>
</PropertyGroup>
<ItemGroup>

11
src/tools/DevGenerators/GetProcAddressInitialization.cs

@ -131,10 +131,13 @@ public class GetProcAddressInitializationGenerator : IIncrementalGenerator
.Append(".GetProcAddress(")
.Append("getProcAddress, ")
.Append(contextName);
var syntaxNode = (AttributeSyntax)attr.ApplicationSyntaxReference.GetSyntax();
foreach (var arg in syntaxNode.ArgumentList.Arguments)
initializeBody.Append(", ").Append(arg.GetText());
if (attr.ApplicationSyntaxReference?.GetSyntax() is AttributeSyntax syntaxNode
&& syntaxNode.ArgumentList is { })
{
foreach (var arg in syntaxNode.ArgumentList.Arguments)
initializeBody.Append(", ").Append(arg.GetText());
}
initializeBody.AppendLine(");");
}
}

Loading…
Cancel
Save