}\r
| BANG BANG int32\r
{\r
- // access method type parameter by number\r
+ MVar mvar = new MVar ((int) $3);\r
+ $$ = new GenericTypeRef (mvar, $3.ToString ());\r
}\r
| K_CLASS slashed_name OPEN_ANGLE_BRACKET BANG int32 CLOSE_ANGLE_BRACKET\r
{\r
}\r
;\r
\r
-method_ref : call_conv type type_spec DOUBLE_COLON method_name \r
- OPEN_PARENS type_list CLOSE_PARENS\r
+method_ref : call_conv type type_spec DOUBLE_COLON method_name\r
+ OPEN_PARENS type_list CLOSE_PARENS \r
{\r
ITypeRef owner = (ITypeRef) $3;\r
ArrayList arg_list = (ArrayList) $7;\r
ITypeRef[] param_list;\r
- \r
+ IMethodRef methref;\r
+\r
if (arg_list != null)\r
param_list = (ITypeRef[]) arg_list.ToArray (typeof (ITypeRef));\r
else\r
param_list = new ITypeRef[0];\r
\r
if (owner.UseTypeSpec) {\r
- $$ = new TypeSpecMethodRef (owner, (ITypeRef) $2,\r
+ methref = new TypeSpecMethodRef (owner, (ITypeRef) $2,\r
(CallConv) $1, (string) $5, param_list);\r
} else {\r
- $$ = owner.GetMethodRef ((ITypeRef) $2,\r
+ methref = owner.GetMethodRef ((ITypeRef) $2,\r
(CallConv) $1, (string) $5, param_list);\r
}\r
+\r
+ $$ = methref;\r
}\r
| call_conv type method_name \r
OPEN_PARENS type_list CLOSE_PARENS\r
$$ = new GlobalMethodRef ((ITypeRef) $2, (CallConv) $1,\r
(string) $3, param_list);\r
}\r
+ | call_conv type type_spec DOUBLE_COLON method_name\r
+ typars_clause OPEN_PARENS type_list CLOSE_PARENS \r
+ {\r
+ ITypeRef owner = (ITypeRef) $3;\r
+ ArrayList arg_list = (ArrayList) $8;\r
+ ITypeRef[] param_list;\r
+ IMethodRef methref;\r
+\r
+ if (arg_list != null)\r
+ param_list = (ITypeRef[]) arg_list.ToArray (typeof (ITypeRef));\r
+ else\r
+ param_list = new ITypeRef[0];\r
+\r
+ if (owner.UseTypeSpec) {\r
+ methref = new TypeSpecMethodRef (owner, (ITypeRef) $2,\r
+ (CallConv) $1, (string) $5, param_list);\r
+ } else {\r
+ methref = owner.GetMethodRef ((ITypeRef) $2,\r
+ (CallConv) $1, (string) $5, param_list);\r
+ }\r
+\r
+ if ($6 != null) {\r
+ ArrayList tp = (ArrayList) $6;\r
+ ITypeRef[] ta = (ITypeRef[]) tp.ToArray (typeof (ITypeRef));\r
+ \r
+ methref = new GenericMethodRef (methref, new GenericMethodSig (ta));\r
+ }\r
+ Console.WriteLine ("methodref: {0}", methref);\r
+ $$ = methref;\r
+ }\r
;\r
\r
labels : /* EMPTY */\r