public override void WriteId(EscapingTextWriter trapFile) { trapFile.WriteSubId(DeclaringType); trapFile.Write('.'); trapFile.Write(Name); trapFile.Write(";cil-field"); }
public override void WriteId(EscapingTextWriter trapFile) { trapFile.WriteSubId(method); trapFile.Write('_'); trapFile.Write(index); trapFile.Write(";cil-local"); }
private static void BuildOrWriteId(this ISymbol?symbol, Context cx, EscapingTextWriter trapFile, ISymbol symbolBeingDefined, bool constructUnderlyingTupleType) { if (symbol is null) { cx.ModelError(symbolBeingDefined, "Missing symbol. Couldn't build some part of the ID."); return; } // We need to keep track of the symbol being defined in order to avoid cyclic labels. // For example, in // // ```csharp // class C<T> : IEnumerable<T> { } // ``` // // when we generate the label for ``C`1``, the base class `IEnumerable<T>` has `T` as a type // argument, which will be qualified with `__self__` instead of the label we are defining. // In effect, the label will (simplified) look like // // ``` // #123 = @"C`1 : IEnumerable<__self___T>" // ``` if (SymbolEqualityComparer.Default.Equals(symbol, symbolBeingDefined)) { trapFile.Write("__self__"); } else if (symbol is ITypeSymbol type && type.IdDependsOn(cx, symbolBeingDefined)) { type.BuildTypeId(cx, trapFile, symbolBeingDefined, constructUnderlyingTupleType); }
public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) { unmodifiedType.WriteId(trapFile, gc); trapFile.Write(isRequired ? " modreq(" : " modopt("); modifier.WriteId(trapFile, gc); trapFile.Write(")"); }
protected static void AddParametersToId(Context cx, EscapingTextWriter trapFile, IMethodSymbol method) { trapFile.Write('('); var index = 0; var @params = method.Parameters; foreach (var param in @params) { trapFile.WriteSeparator(",", ref index); param.Type.BuildOrWriteId(cx, trapFile, method); trapFile.Write(" "); trapFile.Write(param.Name); switch (param.RefKind) { case RefKind.Out: trapFile.Write(" out"); break; case RefKind.Ref: trapFile.Write(" ref"); break; } } if (method.IsVararg) { trapFile.WriteSeparator(",", ref index); trapFile.Write("__arglist"); } trapFile.Write(')'); }
public static void AddExplicitInterfaceQualifierToId(Context cx, EscapingTextWriter trapFile, IEnumerable <ISymbol> explicitInterfaceImplementations) { if (explicitInterfaceImplementations.Any()) { trapFile.AppendList(",", explicitInterfaceImplementations.Select(impl => cx.CreateEntity(impl.ContainingType))); } }
public override void WriteId(EscapingTextWriter trapFile) { parent.WriteId(trapFile); trapFile.Write('.'); trapFile.Write(Context.ShortName(ed.Name)); trapFile.Write(";cil-event"); }
private static void WritePostfix(Method m, EscapingTextWriter trapFile) { switch (m.Symbol.MethodKind) { case MethodKind.PropertyGet: trapFile.Write(";getter"); break; case MethodKind.PropertySet: trapFile.Write(";setter"); break; case MethodKind.EventAdd: trapFile.Write(";adder"); break; case MethodKind.EventRaise: trapFile.Write(";raiser"); break; case MethodKind.EventRemove: trapFile.Write(";remover"); break; default: trapFile.Write(";method"); break; } }
public override void WriteId(EscapingTextWriter trapFile) { string kind; IEntity containingEntity; switch (Symbol.TypeParameterKind) { case TypeParameterKind.Method: kind = "methodtypeparameter"; containingEntity = Method.Create(Context, (IMethodSymbol)Symbol.ContainingSymbol); break; case TypeParameterKind.Type: kind = "typeparameter"; containingEntity = Create(Context, Symbol.ContainingType); break; default: throw new InternalError(Symbol, $"Unhandled type parameter kind {Symbol.TypeParameterKind}"); } trapFile.WriteSubId(containingEntity); trapFile.Write('_'); trapFile.Write(Symbol.Ordinal); trapFile.Write(';'); trapFile.Write(kind); }
public override void WriteId(EscapingTextWriter trapFile) { trapFile.WriteSubId(parameterizable); trapFile.Write('_'); trapFile.Write(index); trapFile.Write(";cil-parameter"); }
public override void WriteId(EscapingTextWriter trapFile) { trapFile.Write(FullName); trapFile.Write("#file:///"); trapFile.Write(Context.AssemblyPath.Replace("\\", "/")); trapFile.Write(";assembly"); }
public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) { FunctionPointerType.WriteName( trapFile.Write, t => t.WriteId(trapFile, gc), signature ); }
public override void WriteId(EscapingTextWriter trapFile, bool inContext) { Unmodified.WriteId(trapFile, inContext); trapFile.Write(IsRequired ? " modreq" : " modopt"); trapFile.Write("("); Modifier.WriteId(trapFile, inContext); trapFile.Write(")"); }
public override void WriteId(EscapingTextWriter trapFile) { trapFile.WriteSubId(Context.CreateLocation(ReportingLocation)); trapFile.Write(Symbol.IsActive); trapFile.Write(','); trapFile.Write(Symbol.BranchTaken); trapFile.Write(";trivia"); }
public override void WriteId(EscapingTextWriter trapFile, bool inContext) { WriteName( trapFile.Write, t => t.WriteId(trapFile, inContext), signature ); }
public override void WriteId(EscapingTextWriter trapFile) { trapFile.WriteSubId(ContainingType !); trapFile.Write('.'); Method.AddExplicitInterfaceQualifierToId(Context, trapFile, Symbol.ExplicitInterfaceImplementations); trapFile.Write(Symbol.Name); trapFile.Write(";event"); }
public void WriteId(EscapingTextWriter trapFile, IGenericContext outerGc) { if (!ReferenceEquals(innerGc, outerGc) && innerGc is Method method) { trapFile.WriteSubId(method); } trapFile.Write("M!"); trapFile.Write(index); }
public override void WriteId(EscapingTextWriter trapFile) { trapFile.WriteSubId(ContainingType !); trapFile.Write('.'); trapFile.Write(Symbol.MetadataName); trapFile.Write('('); trapFile.BuildList(",", Symbol.Parameters, p => trapFile.WriteSubId(Type.Create(Context, p.Type))); trapFile.Write(");indexer"); }
public override void WriteId(EscapingTextWriter trapFile) { trapFile.WriteSubId(Type); trapFile.Write(" "); trapFile.WriteSubId(ContainingType !); trapFile.Write('.'); trapFile.Write(Symbol.Name); trapFile.Write(";field"); }
public override void WriteId(EscapingTextWriter trapFile, bool inContext) { if (!(inContext && method == gc)) { trapFile.WriteSubId(method); } trapFile.Write("!"); trapFile.Write(index); }
public override void WriteId(EscapingTextWriter trapFile) { if (!Symbol.IsGlobalNamespace) { trapFile.WriteSubId(Create(Context, Symbol.ContainingNamespace)); trapFile.Write('.'); trapFile.Write(Symbol.Name); } trapFile.Write(";namespace"); }
public override void WriteId(EscapingTextWriter trapFile) { if (ParentNamespace is not null && !ParentNamespace.IsGlobalNamespace) { ParentNamespace.WriteId(trapFile); trapFile.Write('.'); } trapFile.Write(Name); trapFile.Write(";namespace"); }
public void WriteId(EscapingTextWriter trapFile) { trapFile.Write(Annotation); trapFile.Write('('); foreach (var s in NullableParameters) { s.WriteId(trapFile); } trapFile.Write(')'); }
/// <summary> /// Returns the friendly qualified name of types, such as /// ``"System.Collection.Generic.List`1"`` or /// ``"System.Collection.Generic.List<System.Int32>"``. /// /// Note that method/type generic type parameters never show up in the returned name. /// </summary> public string GetQualifiedName() { using var writer = new EscapingTextWriter(); WriteId(writer, false); var name = writer.ToString(); return(name.Substring(name.IndexOf(AssemblyTypeNameSeparator) + 2). Replace(";namespace", ""). Replace(";cil-type", "")); }
public override void WriteId(EscapingTextWriter trapFile, bool inContext) { elementType.WriteId(trapFile, inContext); trapFile.Write('['); for (var i = 1; i < rank; ++i) { trapFile.Write(','); } trapFile.Write(']'); }
public override void WriteId(EscapingTextWriter trapFile) { trapFile.Write(assembly.ToString()); if (!(assemblyPath is null)) { trapFile.Write("#file:///"); trapFile.Write(assemblyPath.Replace("\\", "/")); } trapFile.Write(";assembly"); }
public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) { elementType.WriteId(trapFile, gc); trapFile.Write('['); for (var i = 1; i < shape.Rank; ++i) { trapFile.Write(','); } trapFile.Write(']'); }
public sealed override void WriteQuotedId(EscapingTextWriter trapFile) { if (ReportingLocation?.IsInSource == true) { base.WriteQuotedId(trapFile); } else { trapFile.Write('*'); } }
public override void WriteId(EscapingTextWriter trapFile) { if (ReportingLocation?.IsInSource == true) { trapFile.WriteSubId(Location); trapFile.Write(";attribute"); } else { trapFile.Write('*'); } }
public override void WriteId(EscapingTextWriter trapFile) { unboundMethod.WriteId(trapFile); trapFile.Write('<'); var index = 0; foreach (var param in typeParams) { trapFile.WriteSeparator(",", ref index); trapFile.WriteSubId(param); } trapFile.Write('>'); }