Skip to content

Commit 5835f21

Browse files
Fix issue in attribute line with attribute class name (#8897)
* Fix issue in attribute line with attribute class name
1 parent 2afc9d4 commit 5835f21

4 files changed

Lines changed: 32 additions & 8 deletions

File tree

src/dotnet/APIView/APIViewWeb/Languages/CSharpLanguageService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class CSharpLanguageService : LanguageProcessor
1717
public override string Name { get; } = "C#";
1818
public override string[] Extensions { get; } = { ".dll" };
1919
public override string ProcessName => _csharpParserToolPath;
20-
public override string VersionString { get; } = "29";
20+
public override string VersionString { get; } = "29.1";
2121

2222
public CSharpLanguageService(IConfiguration configuration, TelemetryClient telemetryClient) : base(telemetryClient)
2323
{

tools/apiview/parsers/csharp-api-parser/CSharpAPIParser/TreeToken/CodeFileBuilder.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class CodeFileBuilder
4747

4848
public ICodeFileBuilderSymbolOrderProvider SymbolOrderProvider { get; set; } = new CodeFileBuilderSymbolOrderProvider();
4949

50-
public const string CurrentVersion = "29";
50+
public const string CurrentVersion = "29.1";
5151

5252
private IEnumerable<INamespaceSymbol> EnumerateNamespaces(IAssemblySymbol assemblySymbol)
5353
{
@@ -298,9 +298,7 @@ private void BuildType(List<ReviewLine> reviewLines, INamedTypeSymbol namedType,
298298
{
299299
typeToken.NavigationDisplayName = namedType.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat);
300300
typeToken.RenderClasses.Add(namedType.TypeKind.ToString().ToLowerInvariant());
301-
typeToken.HasSuffixSpace = true;
302301
}
303-
304302
if (namedType.TypeKind == TypeKind.Delegate)
305303
{
306304
reviewLine.Tokens.Last().HasSuffixSpace = false;
@@ -309,6 +307,7 @@ private void BuildType(List<ReviewLine> reviewLines, INamedTypeSymbol namedType,
309307
return;
310308
}
311309

310+
reviewLine.Tokens.Last().HasSuffixSpace = true;
312311
BuildBaseType(reviewLine, namedType);
313312
reviewLine.Tokens.Add(ReviewToken.CreatePunctuationToken(SyntaxKind.OpenBraceToken));
314313
foreach (var namedTypeSymbol in SymbolOrderProvider.OrderTypes(namedType.GetTypeMembers()))
@@ -517,8 +516,10 @@ private void BuildAttributes(List<ReviewLine> reviewLines, ImmutableArray<Attrib
517516
attributeLine.AddToken(ReviewToken.CreatePunctuationToken(SyntaxKind.EqualsToken));
518517
BuildTypedConstant(attributeLine, argument.Value);
519518
}
519+
attributeLine.Tokens.Last().HasSuffixSpace = false;
520520
attributeLine.AddToken(ReviewToken.CreatePunctuationToken(SyntaxKind.CloseParenToken));
521521
}
522+
attributeLine.Tokens.Last().HasSuffixSpace = false;
522523
attributeLine.AddToken(ReviewToken.CreatePunctuationToken(SyntaxKind.CloseBracketToken));
523524
attributeLine.RelatedToLine = relatedTo;
524525
//Add current attribute line to review lines
@@ -573,7 +574,7 @@ private void BuildTypedConstant(ReviewLine reviewLine, TypedConstant typedConsta
573574
}
574575
else if (typedConstant.Kind == TypedConstantKind.Array)
575576
{
576-
tokenList.Add(ReviewToken.CreateKeywordToken(SyntaxKind.NewKeyword, false));
577+
tokenList.Add(ReviewToken.CreateKeywordToken(SyntaxKind.NewKeyword));
577578
tokenList.Add(ReviewToken.CreatePunctuationToken(SyntaxKind.OpenBracketToken, false));
578579
tokenList.Add(ReviewToken.CreatePunctuationToken(SyntaxKind.CloseBracketToken));
579580
tokenList.Add(ReviewToken.CreatePunctuationToken(SyntaxKind.OpenBraceToken));
@@ -826,14 +827,16 @@ protected override void AddSpace()
826827

827828
protected override void AddBitwiseOr()
828829
{
830+
if(_tokenList.Count > 0)
831+
_tokenList.Last().HasSuffixSpace = true;
829832
_tokenList.Add(ReviewToken.CreatePunctuationToken(SyntaxKind.BarToken));
830833
}
831834

832835
public override void VisitField(IFieldSymbol symbol)
833836
{
834-
_tokenList.Add(ReviewToken.CreateTypeNameToken(symbol.Type.Name));
835-
_tokenList.Add(ReviewToken.CreatePunctuationToken(SyntaxKind.DotToken));
836-
_tokenList.Add(ReviewToken.CreateMemberNameToken(symbol.Name));
837+
_tokenList.Add(ReviewToken.CreateTypeNameToken(symbol.Type.Name, false));
838+
_tokenList.Add(ReviewToken.CreatePunctuationToken(SyntaxKind.DotToken, false));
839+
_tokenList.Add(ReviewToken.CreateMemberNameToken(symbol.Name, false));
837840
}
838841

839842
public void Format(ITypeSymbol? type, object? typedConstantValue)

tools/apiview/parsers/csharp-api-parser/CSharpAPIParserTests/CSharpAPIParserTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
<ItemGroup>
1313
<PackageReference Include="Azure.Core" Version="1.42.0" />
14+
<PackageReference Include="Azure.Core.Expressions.DataFactory" Version="1.0.0" />
1415
<PackageReference Include="Azure.Security.Attestation" Version="1.0.0" />
1516
<PackageReference Include="Azure.Storage.Blobs" Version="12.21.2" />
1617
<PackageReference Include="Azure.Template" Version="1.0.3-beta.4055065" />

tools/apiview/parsers/csharp-api-parser/CSharpAPIParserTests/CodeFileTests.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,5 +345,25 @@ public void VerifyObsoleteMemberIsHidden()
345345
Assert.True(relatedLine?.IsHidden);
346346
}
347347
}
348+
349+
[Fact]
350+
public void VerifyTemplateClassLine()
351+
{
352+
var coreExprAssembly = Assembly.Load("Azure.Core.Expressions.DataFactory");
353+
var dllStream = coreExprAssembly.GetFile("Azure.Core.Expressions.DataFactory.dll");
354+
var assemblySymbol = CompilationFactory.GetCompilation(dllStream, null);
355+
var codeFile = new CSharpAPIParser.TreeToken.CodeFileBuilder().Build(assemblySymbol, true, null);
356+
357+
var lines = codeFile.ReviewLines;
358+
var namespaceLine = lines.Where(lines => lines.LineId == "Azure.Core.Expressions.DataFactory").FirstOrDefault();
359+
Assert.NotNull(namespaceLine);
360+
var classLine = namespaceLine.Children.Where(lines => lines.LineId.StartsWith("Azure.Core.Expressions.DataFactory.DataFactoryElement")).FirstOrDefault();
361+
Assert.NotNull(classLine);
362+
Assert.Equal("public sealed class DataFactoryElement<T> {", classLine.ToString().Trim());
363+
364+
var methodLine = classLine.Children.Where(lines => lines.LineId == "Azure.Core.Expressions.DataFactory.DataFactoryElement<T>.FromKeyVaultSecret(Azure.Core.Expressions.DataFactory.DataFactoryKeyVaultSecret)").FirstOrDefault();
365+
Assert.NotNull(methodLine);
366+
Assert.Equal("public static DataFactoryElement<string?> FromKeyVaultSecret(DataFactoryKeyVaultSecret secret);", methodLine.ToString().Trim());
367+
}
348368
}
349369
}

0 commit comments

Comments
 (0)