/// <summary> /// </summary> /// <param name="anonimClass"></param> /// <param name="anonymousObjectCreastionExpression"></param> /// <returns></returns> private Class FillClassProperties(INamedTypeSymbol anonimClass, AnonimClass anonymousObjectCreastionExpression) { var limClass = anonimClass.ConvertToLimNode( ) as Class; limClass.Accessibility = Types.AccessibilityKind.ackInternal; limClass.Name = anonimClass.ToString( ); var parent = ( Scope )MainDeclaration.Instance.LimFactory.getRef(MainDeclaration.Instance.MethodStack.Peek( ).Id); limClass.MangledName = limClass.DemangledName = parent.MangledName + "." + anonimClass; limClass.IsCompilerGenerated = true; limClass.IsAnonymous = true; limClass.ClassKind = Types.ClassKind.clkClass; Commons.Common.Safe_Edge(parent, "HasMember", limClass.Id); MainDeclaration.Instance.LimOrigin.addCompIdCsharpIdLimIdToMap(MainDeclaration.Instance.Component.Id, map[anonymousObjectCreastionExpression], limClass.Id); MainDeclaration.Instance.ClassStack.Push(new ClassInfo(limClass.Id)); LLOC.CollectLineInfos(anonymousObjectCreastionExpression); MainDeclaration.Instance.ClassStack.Pop( ); limClass.SetCLOC(anonymousObjectCreastionExpression); Commons.Common.AddIsContainedInEdge(limClass, anonymousObjectCreastionExpression); Commons.Common.Safe_Edge(limClass, "BelongsTo", MainDeclaration.Instance.Component.Id); return(limClass); }
public AnonimClassBuilder(INamedTypeSymbol anonimClass, ref Dictionary <CSharpSyntaxNode, uint> map, AnonimClass anonymousObjectCreastionExpression) { this.map = map; this.anonimClass = anonimClass; this.anonymousObjectCreastionExpression = anonymousObjectCreastionExpression; limClass = FillClassProperties(anonimClass, anonymousObjectCreastionExpression); }