Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
nenoNaninu committed Feb 13, 2024
1 parent e3f0b6f commit 63fc661
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 12 deletions.
2 changes: 1 addition & 1 deletion src/Tapper/DefaultTypeMapperProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public ITypeMapper GetTypeMapper(ITypeSymbol type)
return _genericTypeParameterMapper;
}

var sourceType = type is INamedTypeSymbol namedTypeSymbol
var sourceType = type is INamedTypeSymbol namedTypeSymbol && namedTypeSymbol.IsGenericType
? namedTypeSymbol.ConstructedFrom
: type;

Expand Down
21 changes: 10 additions & 11 deletions src/Tapper/TypeTranslators/DefaultMessageTypeTranslator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ public void Translate(ref CodeWriter codeWriter, INamedTypeSymbol typeSymbol, IT
.ToArray();


codeWriter.Append($"/** Transpiled from {typeSymbol.OriginalDefinition.ToDisplayString()} */{newLineString}");
codeWriter.Append($"export type {MessageTypeTranslatorHelper.GetGenericTypeName(typeSymbol)} = {{{newLineString}");
codeWriter.Append($"/** Transpiled from {typeSymbol.ToDisplayString()} */{newLineString}");
codeWriter.Append($"export type {MessageTypeTranslatorHelper.GetUnboundTypeName(typeSymbol)} = {{{newLineString}");

foreach (var member in members)
{
Expand All @@ -44,7 +44,7 @@ public void Translate(ref CodeWriter codeWriter, INamedTypeSymbol typeSymbol, IT

if (MessageTypeTranslatorHelper.IsSourceType(typeSymbol.BaseType, options))
{
codeWriter.Append($" & {MessageTypeTranslatorHelper.GetConcreteTypeName(typeSymbol.BaseType, options)};");
codeWriter.Append($" & {MessageTypeTranslatorHelper.GetConstructedTypeName(typeSymbol.BaseType, options)};");
}

codeWriter.Append(newLineString);
Expand All @@ -53,31 +53,30 @@ public void Translate(ref CodeWriter codeWriter, INamedTypeSymbol typeSymbol, IT

file static class MessageTypeTranslatorHelper
{
public static string GetConcreteTypeName(INamedTypeSymbol typeSymbol, ITranspilationOptions options)
public static string GetConstructedTypeName(INamedTypeSymbol typeSymbol, ITranspilationOptions options)
{
var genericTypeArguments = "";
if (typeSymbol.IsGenericType)
{
var mappedGenericTypeArguments = typeSymbol.TypeArguments.Select(typeArg =>
{
var mapper = options.TypeMapperProvider.GetTypeMapper(typeArg);
return mapper.MapTo(typeArg, options);
});
genericTypeArguments = $"<{string.Join(", ", mappedGenericTypeArguments)}>";

return $"{typeSymbol.Name}<{string.Join(", ", mappedGenericTypeArguments)}>";
}

return $"{typeSymbol.Name}{genericTypeArguments}";
return $"{typeSymbol.Name}";
}

public static string GetGenericTypeName(INamedTypeSymbol typeSymbol)
public static string GetUnboundTypeName(INamedTypeSymbol typeSymbol)
{
var genericTypeParameters = "";
if (typeSymbol.IsGenericType)
{
genericTypeParameters = $"<{string.Join(", ", typeSymbol.TypeParameters.Select(param => param.Name))}>";
return $"{typeSymbol.Name}<{string.Join(", ", typeSymbol.TypeParameters.Select(param => param.Name))}>";
}

return $"{typeSymbol.Name}{genericTypeParameters}";
return $"{typeSymbol.Name}";
}

public static (ITypeSymbol TypeSymbol, bool IsNullable) GetMemberTypeSymbol(ISymbol symbol, ITranspilationOptions options)
Expand Down

0 comments on commit 63fc661

Please sign in to comment.