Ejemplo n.º 1
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);
            }
        }
Ejemplo n.º 2
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();
        }