internal static bool TrySplitNamespaceAndType(TagHelperDescriptor tagHelperDescriptor, out StringSegment @namespace, out StringSegment typeName) { if (tagHelperDescriptor.ParsedTypeInfo is { } value) { @namespace = value.Namespace; typeName = value.TypeName; return(value.Success); } var success = TrySplitNamespaceAndType(tagHelperDescriptor.GetTypeName(), out @namespace, out typeName); tagHelperDescriptor.ParsedTypeInfo = new(success, @namespace, typeName); return(success); }
// We need to filter out the duplicate tag helper descriptors that come from the // open file in the editor. We mangle the class name for its generated code, so using that here to filter these out. internal static bool IsTagHelperFromMangledClass(TagHelperDescriptor tagHelper) { var typeName = tagHelper.GetTypeName(); if (tagHelper.IsChildContentTagHelper()) { // If this is a child content tag helper, we want to look at it's original type. // E.g, if the type name is `Test.__generated__MyComponent.ChildContent`, we want to look at `Test.__generated__MyComponent`. TrySplitNamespaceAndType(typeName, out typeName, out var _); } if (!TrySplitNamespaceAndType(typeName, out var _, out var className)) { return(false); } return(ComponentMetadata.IsMangledClass(className)); }