internal static bool IsArrayTypeNameIdentifier([NotNull] string id) { if (TypeUtils.IsUnknownTypeIdentifier(id)) { return(false); } if (UnknownArrayMatcher.IsMatch(id)) { return(true); } if (id.StartsWith("d:")) { var idx = id.LastIndexOf(')'); return(idx != -1 && id.FindNext(idx, '[') != -1); } if (TypeParameterName.IsTypeParameterNameIdentifier(id)) { return(false); } if (id.StartsWith("p:")) { return(false); } return(FindArrayMarkerIndex(id) != -1); }
public static bool IsTypeNameIdentifier(string id) { if (TypeUtils.IsUnknownTypeIdentifier(id) || PredefinedTypeName.IsPredefinedTypeNameIdentifier(id) || TypeParameterName.IsTypeParameterNameIdentifier(id) || ArrayTypeName.IsArrayTypeNameIdentifier(id) || DelegateTypeName.IsDelegateTypeNameIdentifier(id)) { return(false); } // unbalanced brackets foreach (var pair in new[] { "[]", "()" }) { if (Count(id, pair[0]) != Count(id, pair[1])) { return(false); } } if (MissingTickForGenericsMatcher.IsMatch(id)) { return(false); } return(true); }
public static ITypeName CreateTypeName([NotNull] string identifier) { // checked first, because it's a special case if (IsUnknownTypeIdentifier(identifier)) { return(UnknownTypeInstance); } if (PredefinedTypeName.IsPredefinedTypeNameIdentifier(identifier)) { return(new PredefinedTypeName(identifier)); } if (TypeParameterName.IsTypeParameterNameIdentifier(identifier)) { return(new TypeParameterName(identifier)); } if (ArrayTypeName.IsArrayTypeNameIdentifier(identifier)) { return(new ArrayTypeName(identifier)); } if (DelegateTypeName.IsDelegateTypeNameIdentifier(identifier)) { return(new DelegateTypeName(identifier)); } if (TypeName.IsTypeNameIdentifier(identifier)) { return(new TypeName(identifier)); } return(UnknownTypeInstance); }