readonly ReflectionImporter importer;
readonly CompilationSourceFile source_file;
- public Evaluator (CompilerSettings settings, Report report)
+ public Evaluator (CompilerContext ctx)
{
- ctx = new CompilerContext (settings, report);
+ this.ctx = ctx;
module = new ModuleContainer (ctx);
module.Evaluator = this;
- source_file = new CompilationSourceFile ("{interactive}", "", 1);
- source_file.NamespaceContainer = new NamespaceContainer (null, module, null, source_file);
- module.AddTypeContainer (source_file.NamespaceContainer);
+ source_file = new CompilationSourceFile (module, null);
+ module.AddTypeContainer (source_file);
startup_files = ctx.SourceFiles.Count;
- ctx.SourceFiles.Add (source_file);
// FIXME: Importer needs this assembly for internalsvisibleto
module.SetDeclaringAssembly (new AssemblyDefinitionDynamic (module, "evaluator"));
Location.Initialize (ctx.SourceFiles);
+ var parser_session = new ParserSession ();
for (int i = 0; i < startup_files; ++i) {
- var sf = ctx.Settings.SourceFiles [i];
- d.Parse (sf, module);
+ var sf = ctx.SourceFiles [i];
+ d.Parse (sf, module, parser_session, ctx.Report);
}
}
bool partial_input;
CSharpParser parser = ParseString (ParseMode.GetCompletions, input, out partial_input);
if (parser == null){
- if (CSharpParser.yacc_verbose_flag != 0)
- Console.WriteLine ("DEBUG: No completions available");
return null;
}
//
InputKind ToplevelOrStatement (SeekableStreamReader seekable)
{
- Tokenizer tokenizer = new Tokenizer (seekable, source_file, ctx);
+ Tokenizer tokenizer = new Tokenizer (seekable, source_file, new ParserSession ());
int t = tokenizer.token ();
switch (t){
{
partial_input = false;
Reset ();
- Tokenizer.LocatedToken.Initialize ();
var enc = ctx.Settings.Encoding;
var s = new MemoryStream (enc.GetBytes (input));
}
seekable.Position = 0;
- source_file.NamespaceContainer.DeclarationFound = false;
- CSharpParser parser = new CSharpParser (seekable, source_file);
+ source_file.DeclarationFound = false;
+ CSharpParser parser = new CSharpParser (seekable, source_file, new ParserSession ());
if (kind == InputKind.StatementOrExpression){
parser.Lexer.putback_char = Tokenizer.EvalStatementParserCharacter;
parser.Lexer.CompleteOnEOF = true;
ReportPrinter old_printer = null;
- if ((mode == ParseMode.Silent || mode == ParseMode.GetCompletions) && CSharpParser.yacc_verbose_flag == 0)
+ if ((mode == ParseMode.Silent || mode == ParseMode.GetCompletions))
old_printer = ctx.Report.SetPrinter (new StreamReportPrinter (TextWriter.Null));
try {
}
module.CreateContainer ();
- ((NamespaceContainer) module.Containers[0]).EnableUsingClausesRedefinition ();
+ source_file.EnableUsingClausesRedefinition ();
module.Define ();
if (Report.Errors != 0){
//foreach (object x in ns.using_alias_list)
// sb.AppendFormat ("using {0};\n", x);
- foreach (var ue in source_file.NamespaceContainer.Usings) {
+ foreach (var ue in source_file.Usings) {
sb.AppendFormat ("using {0};", ue.ToString ());
sb.Append (Environment.NewLine);
}
{
var res = new List<string> ();
- foreach (var ue in source_file.NamespaceContainer.Usings) {
+ foreach (var ue in source_file.Usings) {
if (ue.Alias != null || ue.ResolvedExpression == null)
continue;
static public string help {
get {
return "Static methods:\n" +
+#if !NET_2_1
" Describe (object); - Describes the object's type\n" +
+#endif
" LoadPackage (package); - Loads the given Package (like -pkg:FILE)\n" +
" LoadAssembly (assembly); - Loads the given assembly (like -r:ASSEMBLY)\n" +
" ShowVars (); - Shows defined local variables.\n" +
{
}
- public override void EmitSymbolInfo ()
- {
- }
-
protected override FieldExpr GetFieldExpression (EmitContext ec)
{
return new FieldExpr (field, field.Location);