@@ -1027,7 +1027,12 @@ private Arguments transformArgumentList(ArgumentListContext al) {
10271027 private ExprMemberMethod transformMemberMethodCall2 (WPos source ,
10281028 ExprContext receiver , Token dots , Token funcName ,
10291029 TypeArgsContext typeArgs , ArgumentListContext args ) {
1030- Expr left = transformExpr (receiver );
1030+ return transformMemberMethodCall2 (source , transformExpr (receiver ), dots , funcName , typeArgs , args );
1031+ }
1032+
1033+ private ExprMemberMethod transformMemberMethodCall2 (WPos source ,
1034+ Expr left , Token dots , Token funcName ,
1035+ TypeArgsContext typeArgs , ArgumentListContext args ) {
10311036 if (dots .getType () == WurstParser .DOT ) {
10321037 return Ast .ExprMemberMethodDot (source , left , text (funcName ),
10331038 transformTypeArgs (typeArgs ), transformArgumentList (args ));
@@ -1091,6 +1096,12 @@ private Expr transformExpr(ExprContext e) {
10911096 } else if (e .castToType != null ) {
10921097 return Ast .ExprCast (source , transformTypeExpr (e .castToType ),
10931098 transformExpr (e .left ));
1099+ } else if (e .dotsTypeCall != null ) {
1100+ TypeExpr receiverType = Ast .TypeExprSimple (source (e .receiverTypeName ),
1101+ Ast .NoTypeExpr (), e .receiverTypeName .getText (), transformTypeArgs (e .receiverTypeTypeArgs ));
1102+ Expr left = Ast .ExprTypeRef (receiverType .getSource (), receiverType );
1103+ return transformMemberMethodCall2 (source , left , e .dotsTypeCall ,
1104+ e .typeFuncName , e .typeCallTypeArgs , e .typeCallArgs );
10941105 } else if (e .dotsVar != null ) {
10951106 return transformExprMemberVarAccess2 (source , e .receiver , e .dotsVar ,
10961107 e .varName , e .indexes ());
@@ -1379,6 +1390,14 @@ private TypeExprList transformTypeArgs(TypeArgsContext typeArgs) {
13791390 return result ;
13801391 }
13811392
1393+ private TypeExprList transformTypeArgs (TypeArgsNonEmptyContext typeArgs ) {
1394+ TypeExprList result = Ast .TypeExprList ();
1395+ for (TypeExprContext e : typeArgs .args ) {
1396+ result .add (transformTypeExpr (e ));
1397+ }
1398+ return result ;
1399+ }
1400+
13821401 private WParameters transformFormalParameters (FormalParametersContext ps ,
13831402 boolean makeConstant ) {
13841403 WParameters result = Ast .WParameters ();
0 commit comments