예제 #1
0
        /// <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);
        }
예제 #2
0
 public AnonimClassBuilder(INamedTypeSymbol anonimClass, ref Dictionary <CSharpSyntaxNode, uint> map,
                           AnonimClass anonymousObjectCreastionExpression)
 {
     this.map         = map;
     this.anonimClass = anonimClass;
     this.anonymousObjectCreastionExpression = anonymousObjectCreastionExpression;
     limClass = FillClassProperties(anonimClass, anonymousObjectCreastionExpression);
 }