public static CodeInterfaceItem MapInterface(InterfaceDeclarationSyntax member, ICodeViewUserControl control, SemanticModel semanticModel, SyntaxTree tree) { if (member == null) { return(null); } var item = BaseMapper.MapBase <CodeInterfaceItem>(member, member.Identifier, member.Modifiers, control, semanticModel); item.Kind = CodeItemKindEnum.Interface; item.BorderColor = Colors.DarkGray; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); if (TriviaSummaryMapper.HasSummary(member) && SettingsHelper.UseXMLComments) { item.Tooltip = TriviaSummaryMapper.Map(member); } var regions = RegionMapper.MapRegions(tree, member.Span, control); foreach (var interfaceMember in member.Members) { var memberItem = SyntaxMapper.MapMember(interfaceMember); if (memberItem != null && !RegionMapper.AddToRegion(regions, memberItem)) { item.Members.Add(memberItem); } } // Add regions to interface if they have a region member inside them if (regions.Any()) { foreach (var region in regions) { if (region.Members.Any()) { item.Members.Add(region); } } } return(item); }
public static CodePropertyItem MapProperty(VisualBasicSyntax.PropertyBlockSyntax member, ICodeViewUserControl control, SemanticModel semanticModel) { if (member == null) { return(null); } var item = BaseMapper.MapBase <CodePropertyItem>(member, member.PropertyStatement.Identifier, member.PropertyStatement.Modifiers, control, semanticModel); var symbol = SymbolHelper.GetSymbol <IPropertySymbol>(semanticModel, member); item.Type = TypeMapper.Map(symbol?.Type); if (member.Accessors != null) { if (member.Accessors.Any(a => a.Kind() == VisualBasic.SyntaxKind.GetAccessorBlock)) { item.Parameters += "get"; } if (member.Accessors.Any(a => a.Kind() == VisualBasic.SyntaxKind.SetAccessorBlock)) { item.Parameters += string.IsNullOrEmpty(item.Parameters) ? "set" : ",set"; } if (!string.IsNullOrEmpty(item.Parameters)) { item.Parameters = $" {{{item.Parameters}}}"; } } item.Tooltip = TooltipMapper.Map(item.Access, item.Type, item.Name, item.Parameters); item.Kind = CodeItemKindEnum.Property; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); if (TriviaSummaryMapper.HasSummary(member) && SettingsHelper.UseXMLComments) { item.Tooltip = TriviaSummaryMapper.Map(member); } return(item); }
public static CodeNamespaceItem MapNamespace(VisualBasicSyntax.NamespaceBlockSyntax member, ICodeViewUserControl control, SemanticModel semanticModel, SyntaxTree tree) { if (member == null) { return(null); } var item = BaseMapper.MapBase <CodeNamespaceItem>(member, member.NamespaceStatement.Name, control, semanticModel); item.Kind = CodeItemKindEnum.Namespace; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); item.BorderColor = Colors.DarkGray; if (TriviaSummaryMapper.HasSummary(member) && SettingsHelper.UseXMLComments) { item.Tooltip = TriviaSummaryMapper.Map(member); } var regions = RegionMapper.MapRegions(tree, member.Span, control); foreach (var namespaceMember in member.Members) { var memberItem = SyntaxMapper.MapMember(namespaceMember); if (memberItem != null && !RegionMapper.AddToRegion(regions, memberItem)) { item.Members.Add(memberItem); } } // Add regions to class if they have a region member inside them if (regions.Any()) { foreach (var region in regions) { if (FindHelper.FindCodeItem(item.Members, region.Id) == null) { item.Members.Add(region); } } } return(item); }
public static CodeItem MapMethod(VisualBasicSyntax.MethodBlockSyntax member, ICodeViewUserControl control, SemanticModel semanticModel) { if (member == null) { return(null); } CodeItem item; var statementsCodeItems = StatementMapper.MapStatement(member.Statements, control, semanticModel); if (VisibilityHelper.ShouldBeVisible(CodeItemKindEnum.Switch) && statementsCodeItems.Any()) { // Map method as item containing statements item = BaseMapper.MapBase <CodeClassItem>(member, member.SubOrFunctionStatement.Identifier, member.SubOrFunctionStatement.Modifiers, control, semanticModel); ((CodeClassItem)item).Members.AddRange(statementsCodeItems); ((CodeClassItem)item).BorderColor = Colors.DarkGray; } else { // Map method as single item item = BaseMapper.MapBase <CodeFunctionItem>(member, member.SubOrFunctionStatement.Identifier, member.SubOrFunctionStatement.Modifiers, control, semanticModel); var symbol = SymbolHelper.GetSymbol <IMethodSymbol>(semanticModel, member); ((CodeFunctionItem)item).Type = TypeMapper.Map(symbol?.ReturnType); ((CodeFunctionItem)item).Parameters = ParameterMapper.MapParameters(member.SubOrFunctionStatement.ParameterList, semanticModel); item.Tooltip = TooltipMapper.Map(item.Access, ((CodeFunctionItem)item).Type, item.Name, member.SubOrFunctionStatement.ParameterList, semanticModel); } item.Id = IdMapper.MapId(item.FullName, member.SubOrFunctionStatement.ParameterList, semanticModel); item.Kind = CodeItemKindEnum.Method; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); if (TriviaSummaryMapper.HasSummary(member) && SettingsHelper.UseXMLComments) { item.Tooltip = TriviaSummaryMapper.Map(member); } return(item); }
public static CodeItem MapMethod(VisualBasicSyntax.MethodStatementSyntax member, ICodeViewUserControl control, SemanticModel semanticModel) { if (member == null) { return(null); } var item = BaseMapper.MapBase <CodeFunctionItem>(member, member.Identifier, member.Modifiers, control, semanticModel); item.Id = IdMapper.MapId(item.FullName, member.ParameterList, semanticModel); item.Kind = CodeItemKindEnum.Method; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); if (TriviaSummaryMapper.HasSummary(member) && SettingsHelper.UseXMLComments) { item.Tooltip = TriviaSummaryMapper.Map(member); } return(item); }
private static CodeInterfaceItem MapInterface(InterfaceDeclarationSyntax member) { if (member == null) { return(null); } var item = BaseMapper.MapBase <CodeInterfaceItem>(member, member.Identifier, member.Modifiers, _control, _semanticModel); item.Kind = CodeItemKindEnum.Interface; item.BorderBrush = ColorHelper.CreateSolidColorBrush(Colors.DarkGray); item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); foreach (var interfaceMember in member.Members) { item.Members.Add(MapMember(interfaceMember)); } return(item); }
public static CodePropertyItem MapProperty(PropertyDeclarationSyntax member, ICodeViewUserControl control, SemanticModel semanticModel) { if (member == null) { return(null); } var item = BaseMapper.MapBase <CodePropertyItem>(member, member.Identifier, member.Modifiers, control, semanticModel); item.Type = TypeMapper.Map(member.Type); if (member.AccessorList != null) { if (member.AccessorList.Accessors.Any(a => a.Kind() == SyntaxKind.GetAccessorDeclaration)) { item.Parameters += "get"; } if (member.AccessorList.Accessors.Any(a => a.Kind() == SyntaxKind.SetAccessorDeclaration)) { item.Parameters += string.IsNullOrEmpty(item.Parameters) ? "set" : ",set"; } if (!string.IsNullOrEmpty(item.Parameters)) { item.Parameters = $" {{{item.Parameters}}}"; } } item.Tooltip = TooltipMapper.Map(item.Access, item.Type, item.Name, item.Parameters); item.Kind = CodeItemKindEnum.Property; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); if (TriviaSummaryMapper.HasSummary(member) && SettingsHelper.UseXMLComments) { item.Tooltip = TriviaSummaryMapper.Map(member); } return(item); }
public static CodeInterfaceItem MapInterface(InterfaceDeclarationSyntax member, CodeViewUserControl control, SemanticModel semanticModel) { if (member == null) { return(null); } var item = BaseMapper.MapBase <CodeInterfaceItem>(member, member.Identifier, member.Modifiers, control, semanticModel); item.Kind = CodeItemKindEnum.Interface; item.BorderBrush = ColorHelper.ToBrush(Colors.DarkGray); item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); foreach (var interfaceMember in member.Members) { item.Members.Add(SyntaxMapper.MapMember(interfaceMember)); } return(item); }
private static CodeClassItem MapEnum(EnumDeclarationSyntax member) { if (member == null) { return(null); } var item = BaseMapper.MapBase <CodeClassItem>(member, member.Identifier, member.Modifiers, _control, _semanticModel); item.Kind = CodeItemKindEnum.Enum; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); item.Parameters = MapMembersToString(member.Members); item.BorderBrush = ColorHelper.CreateSolidColorBrush(Colors.DarkGray); foreach (var enumMember in member.Members) { item.Members.Add(MapMember(enumMember)); } return(item); }
private static CodeItem MapMethod(MethodDeclarationSyntax member) { if (member == null) { return(null); } CodeItem item; var statements = new List <CodeItem>(); if (member.Body?.Statements != null) { foreach (var statement in member.Body?.Statements) { statements.Add(StatementMapper.MapStatement(statement, _control, _semanticModel)); } FilterNullItems(statements); } if (VisibilityHelper.ShouldBeVisible(CodeItemKindEnum.Switch) && statements != null && statements.Any()) { item = BaseMapper.MapBase <CodeClassItem>(member, member.Identifier, member.Modifiers, _control, _semanticModel); ((CodeClassItem)item).Members.AddRange(statements); ((CodeClassItem)item).BorderBrush = ColorHelper.CreateSolidColorBrush(Colors.DarkGray); } else { item = BaseMapper.MapBase <CodeFunctionItem>(member, member.Identifier, member.Modifiers, _control, _semanticModel); ((CodeFunctionItem)item).Type = TypeMapper.Map(member.ReturnType); ((CodeFunctionItem)item).Parameters = MapParameters(member.ParameterList); item.Tooltip = TooltipMapper.Map(item.Access, ((CodeFunctionItem)item).Type, item.Name, member.ParameterList); } item.Id = MapId(item.FullName, member.ParameterList); item.Kind = CodeItemKindEnum.Method; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); return(item); }
private static CodeItem MapField(SyntaxNode member, SyntaxToken identifier, SyntaxTokenList modifiers, ICodeViewUserControl control, SemanticModel semanticModel) { if (member == null) { return(null); } var item = BaseMapper.MapBase <CodeItem>(member, identifier, modifiers, control, semanticModel); item.Kind = IsConstant(modifiers) ? CodeItemKindEnum.Constant : CodeItemKindEnum.Variable; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); if (TriviaSummaryMapper.HasSummary(member) && SettingsHelper.UseXMLComments) { item.Tooltip = TriviaSummaryMapper.Map(member); } return(item); }
public static CodeClassItem MapStruct(VisualBasicSyntax.StructureBlockSyntax member, CodeViewUserControl control, SemanticModel semanticModel) { if (member == null) { return(null); } var item = BaseMapper.MapBase <CodeClassItem>(member, member.StructureStatement.Identifier, member.StructureStatement.Modifiers, control, semanticModel); item.Kind = CodeItemKindEnum.Struct; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); item.BorderBrush = ColorHelper.ToBrush(Colors.DarkGray); foreach (var structMember in member.Members) { item.Members.Add(SyntaxMapper.MapMember(structMember)); } return(item); }
public static CodeItem MapIndexer(IndexerDeclarationSyntax member, ICodeViewUserControl control, SemanticModel semanticModel) { if (member == null) { return(null); } var item = BaseMapper.MapBase <CodeFunctionItem>(member, member.ThisKeyword, member.Modifiers, control, semanticModel); item.Type = TypeMapper.Map(member.Type); item.Parameters = ParameterMapper.MapParameters(member.ParameterList); item.Tooltip = TooltipMapper.Map(item.Access, item.Type, item.Name, item.Parameters); item.Kind = CodeItemKindEnum.Indexer; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); if (TriviaSummaryMapper.HasSummary(member) && SettingsHelper.UseXMLComments) { item.Tooltip = TriviaSummaryMapper.Map(member); } return(item); }
public static CodePropertyItem MapProperty(VisualBasicSyntax.PropertyBlockSyntax member, CodeViewUserControl control, SemanticModel semanticModel) { if (member == null) { return(null); } var item = BaseMapper.MapBase <CodePropertyItem>(member, member.PropertyStatement.Identifier, member.PropertyStatement.Modifiers, control, semanticModel); var symbol = semanticModel.GetDeclaredSymbol(member) as IPropertySymbol; item.Type = TypeMapper.Map(symbol.Type); if (member.Accessors != null) { if (member.Accessors.Any(a => a.Kind() == VisualBasic.SyntaxKind.GetAccessorBlock)) { item.Parameters += "get"; } if (member.Accessors.Any(a => a.Kind() == VisualBasic.SyntaxKind.SetAccessorBlock)) { item.Parameters += string.IsNullOrEmpty(item.Parameters) ? "set" : ",set"; } if (!string.IsNullOrEmpty(item.Parameters)) { item.Parameters = $" {{{item.Parameters}}}"; } } item.Tooltip = TooltipMapper.Map(item.Access, item.Type, item.Name, item.Parameters); item.Kind = CodeItemKindEnum.Property; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); return(item); }
/// <summary> /// Map a switch statement /// </summary> /// <param name="statement"></param> /// <param name="control"></param> /// <param name="semanticModel"></param> /// <returns></returns> private static CodeItem MapSwitch(SwitchStatementSyntax statement, CodeViewUserControl control, SemanticModel semanticModel) { if (statement == null) { return(null); } var item = BaseMapper.MapBase <CodeClassItem>(statement, statement.Expression.ToString(), control, semanticModel); item.Name = $"Switch {item.Name}"; item.Kind = CodeItemKindEnum.Switch; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); item.BorderBrush = ColorHelper.CreateSolidColorBrush(Colors.DarkGray); item.Tooltip = TooltipMapper.Map(item.Access, string.Empty, item.Name, item.Parameters); // Map switch cases foreach (var section in statement.Sections) { item.Members.Add(MapSwitchSection(section, control, semanticModel)); } return(item); }
public static CodeClassItem MapClass(VisualBasicSyntax.TypeBlockSyntax member, ICodeViewUserControl control, SemanticModel semanticModel, SyntaxTree tree) { if (member == null) { return(null); } var item = BaseMapper.MapBase <CodeClassItem>(member, member.BlockStatement.Identifier, member.BlockStatement.Modifiers, control, semanticModel); item.Kind = CodeItemKindEnum.Class; item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access); item.Parameters = MapInheritance(member); item.BorderColor = Colors.DarkGray; item.Tooltip = TooltipMapper.Map(item.Access, string.Empty, item.Name, item.Parameters); if (TriviaSummaryMapper.HasSummary(member) && SettingsHelper.UseXMLComments) { item.Tooltip = TriviaSummaryMapper.Map(member); } var regions = RegionMapper.MapRegions(tree, member.Span, control); var implementedInterfaces = InterfaceMapper.MapImplementedInterfaces(member, semanticModel); foreach (var classMember in member.Members) { var memberItem = SyntaxMapper.MapMember(classMember); if (memberItem != null && !InterfaceMapper.IsPartOfImplementedInterface(implementedInterfaces, memberItem) && !RegionMapper.AddToRegion(regions, memberItem)) { item.Members.Add(memberItem); } } // Add implemented interfaces to class or region if they have a interface member inside them if (implementedInterfaces.Any()) { foreach (var interfaceItem in implementedInterfaces) { if (interfaceItem.Members.Any()) { if (!RegionMapper.AddToRegion(regions, interfaceItem)) { item.Members.Add(interfaceItem); } } } } // Add regions to class if they have a region member inside them if (regions.Any()) { foreach (var region in regions) { if (region.Members.Any()) { item.Members.Add(region); } } } return(item); }