// only one default argument per declaration for now svoid tok_defaultArguments(LS tok) { int i; while ((i = jfind(tok, " default")) >= 0) { int iOpening = lastIndexOf(tok, i, "("); int iClosing = indexOf(tok, i, ")"); //S args = joinSubList(tok, iOpening+2, iClosing-1); int iName = iOpening-2; S name = assertIdentifier(get(tok, iName)); int iType = tok_leftScanType(tok, iName); int iStart = tok_leftScanTypeArgsOpt(tok, iType); iStart = leftScanModifiers(tok, iStart); print("Found method head: " + joinSubList(tok, iStart, iClosing+1)); int iEndOfExpr = tok_findEndOfExpression(tok, i+4); // should point at comma or closing bracket clearTokens_reTok(tok, i+1, iEndOfExpr); LS args1 = tok_parseArgsDeclList2(subList(tok, iOpening+1, i-2)); LS args2 = tok_parseArgsDeclList2(subList(tok, iEndOfExpr+1, iClosing+2)); S rewrittenHead = joinSubList(tok, iStart, iOpening+1) + joinWithComma(concatLists(args1, args2)) + ")"; bool isVoid = eqGet(tok, iType, "void"); tokPrepend_reTok(tok, iStart, rewrittenHead + " { " + (isVoid ? "" : "return ") + name + "(" + joinWithComma(concatLists( map tok_lastIdentifier(args1), ll(joinSubList(tok, i+4, iEndOfExpr)), map tok_lastIdentifier(args2))) + "); }\n"); } }