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); } }
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(); }