internal Identifier GetIdentifier()
{
string manglingPrefix = this.disableNameMangling ? string.Empty : "___";
string name = null;
if (this.identifier.Length > 0)
{
name = this.identifier.ToString();
}
else
{
int start = this.startPos;
if (this.GetChar(start) == '@') start++;
int len = this.endPos - start;
if (this.sourceText != null && len <= 500)
{
Identifier id = new Identifier(manglingPrefix + this.sourceText.Substring(start, len));
id.SourceContext = this.CurrentSourceContext;
return id;
}
name = this.Substring(start, this.endPos - start);
}
if (name.Length > 500) //The EE sometimes gets into trouble if presented with a name > 1023 bytes, make this less likely
name = name.Substring(0, 500) + name.GetHashCode().ToString(CultureInfo.InvariantCulture);
Identifier identifier = new Identifier(manglingPrefix + name);
identifier.SourceContext = this.CurrentSourceContext;
return identifier;
}