Esempio n. 1
0
        public IKaVEList <Query> Extract(ISST sst)
        {
            var queries = Lists.NewList <Query>();

            foreach (var method in sst.Methods)
            {
                var context = new UsageContext
                {
                    Enclosings =
                    {
                        Type   = sst.EnclosingType,
                        Method = method.Name
                    }
                };

                AddDefaultQueries(sst, context);

                Extract(method, context);

                foreach (var query in context.AllQueries)
                {
                    queries.Add(query);
                }
            }

            return(queries);
        }
Esempio n. 2
0
 protected virtual void ProcessMethodBody(IMethodDeclaration methodDecl, UsageContext context)
 {
     foreach (var stmt in methodDecl.Body)
     {
         stmt.Accept(_collectorVisitor, context);
     }
 }
Esempio n. 3
0
        protected override void ProcessMethodBody(IMethodDeclaration methodDecl, UsageContext context)
        {
            base.ProcessMethodBody(methodDecl, context);

            if (context.TargetType != null)
            {
                _matchingQuery = context.AllQueries.First(q => context.TargetType.Equals(q.type));

                // prevent traversion of the complete SST
                throw new CompletionPointFoundException();
            }
        }
Esempio n. 4
0
        private void Extract(IMethodDeclaration methodDecl, UsageContext context)
        {
            context.EnterNewScope();

            var parameters = methodDecl.Name.Parameters;

            for (var argIndex = 0; argIndex < parameters.Count; argIndex++)
            {
                var parameter = parameters[argIndex];

                var id   = parameter.Name;
                var type = parameter.ValueType;
                var def  = DefinitionSites.CreateDefinitionByParam(methodDecl.Name, argIndex);

                context.DefineVariable(id, type, def);
            }

            ProcessMethodBody(methodDecl, context);

            context.LeaveCurrentScope();
        }
Esempio n. 5
0
        private static void AddDefaultQueries(ISST sst, UsageContext context)
        {
            context.DefineVariable("this", sst.EnclosingType, DefinitionSites.CreateDefinitionByThis());
            context.DefineVariable("base", sst.EnclosingType, DefinitionSites.CreateDefinitionByThis());

            foreach (var field in sst.Fields)
            {
                var id         = field.Name.Name;
                var type       = field.Name.ValueType;
                var definition = DefinitionSites.CreateDefinitionByField(field.Name);
                context.DefineVariable(id, type, definition);
            }

            foreach (var property in sst.Properties)
            {
                var id         = property.Name.Name;
                var type       = property.Name.ValueType;
                var definition = DefinitionSites.CreateDefinitionByField(Names.UnknownField);
                context.DefineVariable(id, type, definition);
            }
        }