{"record":{"id":"97f5a1985687150c","repo":"Unity-Technologies/UnityCsReference","slug":"invalid-severity-severityspan-tostring-in-li","errorCode":null,"errorMessage":"Invalid severity '{severitySpan.ToString()}' in line '{line}'","messagePattern":"Invalid severity '(.+?)' in line '(.+?)'","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"Editor/Mono/Scripting/RestrictedApisValidation/RestrictedApisConfig.cs","lineNumber":201,"sourceCode":"        {\n            if (!_idToSignatureDetails.TryGetValue(intId, out var previousMappedId))\n                throw new Exception($\"Id ({intId}) overriden in configuration line '{line}' is not defined by any previous lines.\");\n\n            (referenceHashCode, isTypeSignature)  = previousMappedId;\n        }\n        else\n        {\n            isTypeSignature = line.AsSpan().IndexOf(\"::\") == -1; // member signatures must have a :: as a declaring type name/member name separator\n\n            //TODO: When we switch from netstandard to *any* .NET BCL, remove the ToString() and call String.GetHashCode(signature) : https://learn.microsoft.com/en-us/dotnet/api/system.string.gethashcode?view=net-9.0#system-string-gethashcode(system-readonlyspan((system-char)))\n            referenceHashCode = signature.ToString().GetHashCode();\n            _idToSignatureDetails[intId] = new (referenceHashCode, isTypeSignature);\n        }\n\n        var targetContainer = isTypeSignature ?  currentTypesConfig :  currentMembersConfig;\n        if (!Enum.TryParse<RestrictedApiSeverity>(severitySpan.ToString(), ignoreCase: true, out var severity))\n        {\n            throw new Exception($\"Invalid severity '{severitySpan.ToString()}' in line '{line}'\");\n        }\n\n        targetContainer[referenceHashCode] = new RestrictedApiConfigEntry(intId, severity, description, documentationUrl);\n\n        static ReadOnlySpan<char> NextToken(ref ReadOnlySpan<char> data, out int separatorIndex)\n        {\n            separatorIndex = data.IndexOf('|');\n            if (separatorIndex == -1)\n                return data;\n\n            var toReturn = data.Slice(0, separatorIndex).Trim();\n            data = data.Slice(separatorIndex + 1);\n            return toReturn;\n        }\n    }\n\n    public RestrictedApiConfigEntry RestrictedApiSeverityFor(MemberReference memberReference)\n    {","sourceCodeStart":183,"sourceCodeEnd":219,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/Scripting/RestrictedApisValidation/RestrictedApisConfig.cs#L183-L219","documentation":"Thrown when the severity field does not parse (case-insensitive) to the RestrictedApiSeverity enum. The severity token must be one of the valid enum names.","triggerScenarios":"A rule line whose severity token is not a valid RestrictedApiSeverity value (e.g. 'critical', 'fatal', or a typo like 'eror').","commonSituations":"Typos, guessing a severity name that isn't an enum member, or using a value from a different validation system.","solutions":["Use a valid RestrictedApiSeverity name (typically 'error', 'warning', 'info' — confirm against the enum).","Correct the typo shown in the message."],"exampleFix":"// before\n:1001 | System.IO.File::Open | critical\n// after\n:1001 | System.IO.File::Open | error","handlingStrategy":"validation","validationCode":"// Severity must parse to the RestrictedApiSeverity enum.\nif (!Enum.TryParse<RestrictedApiSeverity>(severitySpan.ToString(), ignoreCase: true, out _))\n    throw new FormatException($\"Unknown severity '{severitySpan}' in: '{line}'\");","typeGuard":"static bool IsValidSeverity(string s) =>\n    Enum.TryParse<RestrictedApiSeverity>(s, ignoreCase: true, out _);","tryCatchPattern":"try { config = RestrictedApisConfig.Load(path); }\ncatch (Exception ex) when (ex.Message.Contains(\"Invalid severity\"))\n{ /* correct the severity token to a valid enum name */ }","preventionTips":["Restrict severities to the RestrictedApiSeverity enum names only.","Cross-check severity spellings against the enum definition."],"tags":["config","restricted-apis","validation","parsing"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}