+ {\r
+ // print function call\r
+ auto f = findFunction(e._func.functionName, e._func.namespacePrefixes, globalCtx);\r
+\r
+ if (std::get<0>(*f).defined)\r
+ out << vectorStr(std::get<1>(*f), "_", true);\r
+\r
+ out << e._func.functionName;\r
+ if (!e._func.genericInstantiation.empty())\r
+ out << genericAppendix(e._func.genericInstantiation);\r
+ out <<"(" << vectorStr(e._func.arguments, ", ") << ")"; break;\r
+ }\r
+ case ExprType::Method:\r
+ {\r
+ // get TypeInfo on the Expression that the method is called on\r
+ // then print method call\r
+ TypeInfo ti = typeExpr(globalCtx, *e._method.expr);\r
+ out <<\r
+ vectorStr(ti.type.namespacePrefixes, "_", true) <<\r
+ ti.type.name << genericAppendix(ti.type.genericInstantiation) << "_" << e._method.methodName;\r
+ if (!e._method.genericInstantiation.empty())\r
+ out << genericAppendix(e._method.genericInstantiation);\r
+ out << "(";\r
+ if (e._method.expr->type == ExprType::Identifier)\r
+ out << "&";\r
+ out << *e._method.expr << (e._method.arguments.empty() ? "" : ", ") <<\r
+ vectorStr(e._method.arguments, ", ") << ")"; break;\r
+ }\r