Skip to content

Commit f4a1a13

Browse files
committed
Fixed ByteArray_CanBuild test
1 parent 6bb03d0 commit f4a1a13

2 files changed

Lines changed: 19 additions & 17 deletions

File tree

src/ImmutableObjectGraph.Generation/CodeGen+BuilderGen.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -262,18 +262,18 @@ protected IReadOnlyList<MemberDeclarationSyntax> CreateMutableProperties()
262262
return properties;
263263
}
264264

265-
protected NameSyntax GetPropertyTypeForBuilder(MetaField field)
265+
protected TypeSyntax GetPropertyTypeForBuilder(MetaField field)
266266
{
267-
var typeBasis = GetFullyQualifiedSymbolName(field.Type);
268-
return field.IsGeneratedImmutableType
267+
var typeBasis = GetFullyQualifiedSymbolName(field.Type) as NameSyntax;
268+
return field.IsGeneratedImmutableType && typeBasis != null
269269
? SyntaxFactory.QualifiedName(typeBasis, BuilderTypeName)
270270
: typeBasis;
271271
}
272272

273-
protected NameSyntax GetFieldTypeForBuilder(MetaField field)
273+
protected TypeSyntax GetFieldTypeForBuilder(MetaField field)
274274
{
275-
var typeBasis = GetFullyQualifiedSymbolName(field.Type);
276-
return field.IsGeneratedImmutableType
275+
var typeBasis = GetFullyQualifiedSymbolName(field.Type) as NameSyntax;
276+
return field.IsGeneratedImmutableType && typeBasis != null
277277
? Syntax.OptionalOf(SyntaxFactory.QualifiedName(typeBasis, BuilderTypeName))
278278
: typeBasis;
279279
}

src/ImmutableObjectGraph.Generation/CodeGen.cs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -906,7 +906,12 @@ private static bool HasAttribute<T>(INamedTypeSymbol type)
906906
return type?.GetAttributes().Any(a => IsAttribute<T>(a.AttributeClass)) ?? false;
907907
}
908908

909-
private static NameSyntax GetFullyQualifiedSymbolName(INamespaceOrTypeSymbol symbol)
909+
private static NameSyntax GetFullyQualifiedSymbolName(INamedTypeSymbol typeSymbol)
910+
{
911+
return (NameSyntax)GetFullyQualifiedSymbolName((INamespaceOrTypeSymbol)typeSymbol);
912+
}
913+
914+
private static TypeSyntax GetFullyQualifiedSymbolName(INamespaceOrTypeSymbol symbol)
910915
{
911916
if (symbol == null)
912917
{
@@ -918,26 +923,23 @@ private static NameSyntax GetFullyQualifiedSymbolName(INamespaceOrTypeSymbol sym
918923
var arraySymbol = (IArrayTypeSymbol)symbol;
919924
var elementType = GetFullyQualifiedSymbolName(arraySymbol.ElementType);
920925

921-
// I don't know how to create a NameSyntax with an array inside it,
922-
// so use ParseName as an escape hatch.
923-
////return SyntaxFactory.ArrayType(elementType)
924-
//// .AddRankSpecifiers(SyntaxFactory.ArrayRankSpecifier()
925-
//// .AddSizes(SyntaxFactory.OmittedArraySizeExpression()));
926-
return SyntaxFactory.ParseName(elementType.ToString() + "[]");
926+
return SyntaxFactory.ArrayType(elementType)
927+
.AddRankSpecifiers(SyntaxFactory.ArrayRankSpecifier()
928+
.AddSizes(SyntaxFactory.OmittedArraySizeExpression()));
927929
}
928930

929931
if (string.IsNullOrEmpty(symbol.Name))
930932
{
931933
return null;
932934
}
933935

934-
var parent = GetFullyQualifiedSymbolName(symbol.ContainingSymbol as INamespaceOrTypeSymbol);
936+
var parent = GetFullyQualifiedSymbolName(symbol.ContainingSymbol as INamespaceOrTypeSymbol) as NameSyntax;
935937
SimpleNameSyntax leafName = SyntaxFactory.IdentifierName(symbol.Name);
936938
var typeSymbol = symbol as INamedTypeSymbol;
937939
if (typeSymbol != null && typeSymbol.IsGenericType)
938940
{
939941
leafName = SyntaxFactory.GenericName(symbol.Name)
940-
.WithTypeArgumentList(SyntaxFactory.TypeArgumentList(Syntax.JoinSyntaxNodes<TypeSyntax>(
942+
.WithTypeArgumentList(SyntaxFactory.TypeArgumentList(Syntax.JoinSyntaxNodes(
941943
SyntaxKind.CommaToken,
942944
typeSymbol.TypeArguments.Select(GetFullyQualifiedSymbolName))));
943945
}
@@ -1436,9 +1438,9 @@ public IdentifierNameSyntax NameAsField
14361438
}
14371439
}
14381440

1439-
public INamespaceOrTypeSymbol Type => this.Symbol?.Type;
1441+
public ITypeSymbol Type => this.Symbol?.Type;
14401442

1441-
public NameSyntax TypeSyntax => GetFullyQualifiedSymbolName(this.Type);
1443+
public TypeSyntax TypeSyntax => GetFullyQualifiedSymbolName(this.Type);
14421444

14431445
public bool IsGeneratedImmutableType => !this.TypeAsGeneratedImmutable.IsDefault;
14441446

0 commit comments

Comments
 (0)