X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fmcs%2Feval.cs;h=bc36a672b3f50a107c47347cd0f4cd8a33909aab;hb=b68b65ad17932bbe2d1fd565456063d90e08aaa5;hp=bab4244161c1ac5aadd305078b8e6c6267bf5942;hpb=632de6a042ca4cad26f108a17e6a39afcd286df6;p=mono.git diff --git a/mcs/mcs/eval.cs b/mcs/mcs/eval.cs index bab4244161c..bc36a672b3f 100644 --- a/mcs/mcs/eval.cs +++ b/mcs/mcs/eval.cs @@ -56,7 +56,7 @@ namespace Mono.CSharp { static Thread invoke_thread; static ArrayList using_alias_list = new ArrayList (); - static ArrayList using_list = new ArrayList (); + internal static ArrayList using_list = new ArrayList (); static Hashtable fields = new Hashtable (); static Type interactive_base_class = typeof (InteractiveBase); @@ -105,7 +105,6 @@ namespace Mono.CSharp { if (inited) return new string [0]; - RootContext.Version = LanguageVersion.Default; driver = Driver.Create (args, false); if (driver == null) throw new Exception ("Failed to create compiler driver with the given arguments"); @@ -373,14 +372,16 @@ namespace Mono.CSharp { bool partial_input; CSharpParser parser = ParseString (ParseMode.GetCompletions, input, out partial_input); if (parser == null){ - Console.WriteLine ("DEBUG: No completions available"); + if (CSharpParser.yacc_verbose_flag != 0) + Console.WriteLine ("DEBUG: No completions available"); return null; } Class parser_result = parser.InteractiveResult as Class; if (parser_result == null){ - Console.WriteLine ("Do not know how to cope with !Class yet"); + if (CSharpParser.yacc_verbose_flag != 0) + Console.WriteLine ("Do not know how to cope with !Class yet"); return null; } @@ -404,11 +405,10 @@ namespace Mono.CSharp { if (method == null) throw new InternalErrorException ("did not find the the Host method"); - EmitContext ec = method.CreateEmitContext (method.Parent, null); - bool unreach; + EmitContext ec = method.CreateEmitContext (null); try { - ec.ResolveTopBlock (null, method.Block, method.ParameterInfo, method, out unreach); + method.Block.Resolve (null, ec, method.ParameterInfo, method); } catch (CompletionResult cr){ prefix = cr.BaseText; return cr.Result; @@ -636,7 +636,7 @@ namespace Mono.CSharp { parser.Lexer.CompleteOnEOF = true; bool disable_error_reporting; - if (mode == ParseMode.Silent && CSharpParser.yacc_verbose_flag == 0) + if ((mode == ParseMode.Silent || mode == ParseMode.GetCompletions) && CSharpParser.yacc_verbose_flag == 0) disable_error_reporting = true; else disable_error_reporting = false; @@ -814,6 +814,14 @@ namespace Mono.CSharp { } } + static internal ICollection GetUsingList () + { + ArrayList res = new ArrayList (using_list.Count); + foreach (object ue in using_list) + res.Add (ue.ToString ()); + return res; + } + static internal string [] GetVarNames () { lock (evaluator_lock){ @@ -1072,8 +1080,8 @@ namespace Mono.CSharp { TypeContainer container; string name; - public LocalVariableReferenceWithClassSideEffect (TypeContainer container, string name, Block current_block, string local_variable_id, Location loc) - : base (current_block, local_variable_id, loc) + public LocalVariableReferenceWithClassSideEffect (TypeContainer container, string name, Block current_block, string local_variable_id, LocalInfo li, Location loc) + : base (current_block, local_variable_id, loc, li, false) { this.container = container; this.name = name;