2004-08-03 Martin Baulig <martin@ximian.com>
[mono.git] / mcs / mbas / expression.cs
index 4f06273919bbcff30bf10b2b3e0dbb468acc43a8..ceed21db3885a84b2039a265a8b3ad9f82db3eef 100644 (file)
@@ -3619,7 +3619,6 @@ namespace Mono.MonoBASIC {
 
                        ParameterData pd = GetParameterData (candidate);
                        Parameters ps = GetFullParameters (candidate);
-                       
                        if (ps == null) {
                                ps_count = 0;
                                po_count = 0;
@@ -3661,9 +3660,10 @@ namespace Mono.MonoBASIC {
                                                                        a = new Argument ((Expression) a.Expr, Argument.AType.Expression);
                                                                        ArrayList args = new ArrayList();
                                                                        args.Add (a);
-                                                                       string param_name = param_type.Name;
+                                                                       string param_name = pd.ParameterDesc(i).Replace('+', '.');
                                                                        Expression pname = MonoBASIC.Parser.DecomposeQI (param_name, Location.Null);
 
+
                                                                        New temp_new = new New ((Expression)pname, args, Location.Null);
                                                                        Expression del_temp = temp_new.DoResolve(ec);
 
@@ -3740,7 +3740,7 @@ namespace Mono.MonoBASIC {
                                        a = new Argument ((Expression) a.Expr, Argument.AType.Expression);
                                        ArrayList args = new ArrayList();
                                        args.Add (a);
-                                       string param_name = param_type.Name;
+                                       string param_name = pd.ParameterDesc(i).Replace('+', '.');
                                        Expression pname = MonoBASIC.Parser.DecomposeQI (param_name, Location.Null);
                                                                
                                        New temp_new = new New ((Expression)pname, args, Location.Null);
@@ -5902,10 +5902,13 @@ namespace Mono.MonoBASIC {
 
                        if (expr is SimpleName){
                                SimpleName child_expr = (SimpleName) expr;
-                               
+
                                Expression new_expr = new SimpleName (child_expr.Name + "." + Identifier, loc);
 
-                               return new_expr.Resolve (ec, flags | ResolveFlags.MethodGroup);
+                               if ((flags & ResolveFlags.MaskExprClass) == ResolveFlags.Type)
+                                       return new_expr.Resolve (ec, flags);
+                               else
+                                       return new_expr.Resolve (ec, flags | ResolveFlags.MethodGroup | ResolveFlags.VariableOrValue);
                        }
                                        
                        int errors = Report.Errors;