X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fmbas%2Fargument.cs;h=8c36e39f835ebbfd60872e204283c74a23eae2f3;hb=15bd9360bc877ca0c1fc0f95e985a180976c0ee4;hp=518c15a355a895d7447dce1a4c8215805a8bbc94;hpb=08d80f71299141d5e98d3d5cbaf6b00632b4ed86;p=mono.git diff --git a/mcs/mbas/argument.cs b/mcs/mbas/argument.cs index 518c15a355a..8c36e39f835 100644 --- a/mcs/mbas/argument.cs +++ b/mcs/mbas/argument.cs @@ -25,7 +25,8 @@ namespace Mono.MonoBASIC { Expression, Ref, Out, - NoArg + NoArg, + AddressOf }; public AType ArgType; @@ -86,6 +87,7 @@ namespace Mono.MonoBASIC { { return true; } + /* if (ArgType == AType.Ref) { Expr = Expr.Resolve (ec); @@ -93,12 +95,31 @@ namespace Mono.MonoBASIC { return false; Expr = Expr.ResolveLValue (ec, Expr); - } else */if (ArgType == AType.Out) + } else */ + + if (ArgType == AType.Out) Expr = Expr.ResolveLValue (ec, new EmptyExpression ()); - else - Expr = Expr.Resolve (ec); + else if (ArgType == AType.AddressOf) { + Expression temp_expr = Expr; + + if (temp_expr is SimpleName) { + SimpleName sn = temp_expr as SimpleName; + temp_expr = sn.DoResolveAllowStatic(ec); + } + else if (temp_expr is MemberAccess) { + MemberAccess ma = temp_expr as MemberAccess; + temp_expr = ma.DoResolve(ec); + } + if (temp_expr is MethodGroupExpr) + return true; + ArgType = AType.Expression; + Expr = Expr.Resolve (ec); + } + else + Expr = Expr.Resolve (ec); + if (Expr == null) return false;