private List <string> ParseModuleForOptions(List <string> ctx, ref int idx, InteractiveState state) { if (idx >= ctx.Count) { // end of the parse, return all loaded modules return(new List <string>(state.m.m.al.LoadedAssemblies)); } // else, make the new module our current scope var mod_list = new List <string>(state.m.m.al.LoadedAssemblies); var new_mod = ctx[idx++]; if (mod_list.Contains(new_mod)) { var new_m = new InteractiveMetadataStream { m = state.m.m.al.GetAssembly(new_mod) }; state.m = new_m; } if (idx++ >= ctx.Count) { // must terminate a module with closing bracket return(new List <string> { "]" }); } return(ParseTypeForOptions(ctx, ref idx, state)); }
internal Interactive(metadata.MetadataStream metadata, libtysila5.target.Target target) { s.m = new InteractiveMetadataStream { m = metadata }; t = target; corlib = new InteractiveMetadataStream { m = metadata.al.GetAssembly("mscorlib") }; }