public override void WriteIdentifier(Identifier identifier) { if (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier)) { output.Write('@'); } var definition = GetCurrentDefinition(); string name = TextWriterTokenWriter.EscapeIdentifier(identifier.Name); switch (definition) { case IType t: output.WriteReference(t, name, true); return; case IMember m: output.WriteReference(m, name, true); return; } var member = GetCurrentMemberReference(); switch (member) { case IType t: output.WriteReference(t, name, false); return; case IMember m: output.WriteReference(m, name, false); return; } var localDefinition = GetCurrentLocalDefinition(); if (localDefinition != null) { output.WriteLocalReference(name, localDefinition, isDefinition: true); return; } var localRef = GetCurrentLocalReference(); if (localRef != null) { output.WriteLocalReference(name, localRef); return; } if (firstUsingDeclaration && !lastUsingDeclaration) { output.MarkFoldStart(defaultCollapsed: !settings.ExpandUsingDeclarations); firstUsingDeclaration = false; } output.Write(name); }
public override void WriteIdentifier(Identifier identifier, TextTokenType tokenType) { if (tokenType == TextTokenType.Text) { tokenType = TextTokenHelper.GetTextTokenType(identifier.AnnotationVT <TextTokenType>() ?? identifier.Annotation <object>()); } if (tokenType != TextTokenType.Keyword && (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier))) { output.Write('@', TextTokenType.Operator); } var definition = GetCurrentDefinition(identifier); if (definition != null) { output.WriteDefinition(IdentifierEscaper.Escape(identifier.Name), definition, tokenType, false); return; } object memberRef = GetCurrentMemberReference(); if (memberRef != null) { output.WriteReference(IdentifierEscaper.Escape(identifier.Name), memberRef, tokenType); return; } definition = GetCurrentLocalDefinition(); if (definition != null) { output.WriteDefinition(IdentifierEscaper.Escape(identifier.Name), definition, tokenType); return; } memberRef = GetCurrentLocalReference(); if (memberRef != null) { output.WriteReference(IdentifierEscaper.Escape(identifier.Name), memberRef, tokenType, true); return; } if (firstUsingDeclaration) { output.MarkFoldStart(defaultCollapsed: true); firstUsingDeclaration = false; } var s = identifier.Name; if (identifier.Annotation <IdentifierFormatted>() == null) { s = IdentifierEscaper.Escape(s); } output.Write(s, tokenType); }
public override void WriteIdentifier(Identifier identifier) { if (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier)) { output.Write('@'); } var definition = GetCurrentDefinition(); if (definition != null) { MemberReference cecil = SymbolToCecil(definition); if (cecil != null) { output.WriteDefinition(identifier.Name, cecil, false); return; } } var member = GetCurrentMemberReference(); if (member != null) { MemberReference cecil = SymbolToCecil(member); if (cecil != null) { output.WriteReference(identifier.Name, cecil); return; } } var localDefinition = GetCurrentLocalDefinition(); if (localDefinition != null) { output.WriteDefinition(identifier.Name, localDefinition); return; } var localRef = GetCurrentLocalReference(); if (localRef != null) { output.WriteReference(identifier.Name, localRef, true); return; } if (firstUsingDeclaration) { output.MarkFoldStart(defaultCollapsed: true); firstUsingDeclaration = false; } output.Write(identifier.Name); }
public override void WriteIdentifier(Identifier identifier, TextTokenKind tokenKind) { if (tokenKind == TextTokenKind.Text) { tokenKind = TextTokenKindUtils.GetTextTokenType(identifier.AnnotationVT <TextTokenKind>() ?? identifier.Annotation <object>()); } if (tokenKind != TextTokenKind.Keyword && (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier))) { output.Write("@", TextTokenKind.Operator); } var definition = GetCurrentDefinition(identifier); if (definition != null) { output.WriteDefinition(IdentifierEscaper.Escape(identifier.Name), definition, tokenKind, false); return; } object memberRef = GetCurrentMemberReference(); if (memberRef != null) { output.WriteReference(IdentifierEscaper.Escape(identifier.Name), memberRef, tokenKind); return; } definition = GetCurrentLocalDefinition(); if (definition != null) { output.WriteDefinition(IdentifierEscaper.Escape(identifier.Name), definition, tokenKind); return; } memberRef = GetCurrentLocalReference(); if (memberRef != null) { output.WriteReference(IdentifierEscaper.Escape(identifier.Name), memberRef, tokenKind, true); return; } if (firstUsingDeclaration) { firstUsingDeclaration = false; } var s = identifier.Name; if (identifier.Annotation <IdentifierFormatted>() == null) { s = IdentifierEscaper.Escape(s); } output.Write(s, tokenKind); }
public override void WriteIdentifier(Identifier identifier, object data) { WriteIndentation(); if (!BoxedTextColor.Keyword.Equals(data) && (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier))) { textWriter.Write('@'); column++; } textWriter.Write(identifier.Name); column += identifier.Name.Length; isAtStartOfLine = false; }
public override void WriteIdentifier(Identifier identifier) { WriteIndentation(); if (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier)) { textWriter.Write('@'); column++; } textWriter.Write(identifier.Name); column += identifier.Name.Length; isAtStartOfLine = false; }
public override void WriteIdentifier(Identifier identifier) { if (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier)) { if (lastWritten == LastWritten.KeywordOrIdentifier) { // this space is not strictly required, so we call Space() Space(); } } else if (lastWritten == LastWritten.KeywordOrIdentifier) { // this space is strictly required, so we directly call the formatter base.Space(); } base.WriteIdentifier(identifier); lastWritten = LastWritten.KeywordOrIdentifier; }
public void WriteToken(string token) { // Attach member reference to token only if there's no identifier in the current node. IMemberRef memberRef = GetCurrentMemberReference(); var node = nodeStack.Peek(); if (memberRef != null && HasNoIdentifier(node)) { output.WriteReference(token, memberRef); } else if (CSharpOutputVisitor.IsKeyword(token, node)) { output.WriteKeyword(token); } else if (node is PrimitiveExpression) { output.WriteLiteral(token); } else { output.Write(token); } }
public override void WriteIdentifier(Identifier identifier) { if (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier)) { output.Write('@'); } var definition = GetCurrentDefinition(); if (definition != null) { output.WriteDefinition(identifier.Name, definition, false); return; } var member = GetCurrentMemberReference(); if (member != null) { MemberReference cecil; if (member is IType type) { cecil = typeSystem.GetCecil(type.GetDefinition()); } else if (member is IMember) { cecil = typeSystem.GetCecil((IMember)member); } else { cecil = null; } if (cecil != null) { output.WriteReference(identifier.Name, cecil); return; } } definition = GetCurrentLocalDefinition(); if (definition != null) { output.WriteDefinition(identifier.Name, definition); return; } var memberRef = GetCurrentLocalReference(); if (memberRef != null) { output.WriteReference(identifier.Name, memberRef, true); return; } if (firstUsingDeclaration) { output.MarkFoldStart(defaultCollapsed: true); firstUsingDeclaration = false; } output.Write(identifier.Name); }