Exemplo n.º 1
0
 private void passStacktraceParams(
     final Multimap<ImFunction, ImFunctionCall> calls, Set<ImFunction> affectedFuncs) {
   // pass the stacktrace parameter at all cals
   for (ImFunction f : affectedFuncs) {
     for (ImFunctionCall call : calls.get(f)) {
       ImFunction caller = call.getNearestFunc();
       ImExpr stExpr;
       if (isMainOrConfig(caller)) {
         stExpr = str("   " + f.getName());
       } else {
         ImVar stackTraceVar = getStackTraceVar(caller);
         WPos source = call.attrTrace().attrSource();
         String callPos;
         if (source.getFile().startsWith("<")) {
           callPos = "";
         } else {
           callPos = "\n   " + source.printShort();
         }
         stExpr =
             JassIm.ImOperatorCall(
                 WurstOperator.PLUS,
                 JassIm.ImExprs(str(callPos), JassIm.ImVarAccess(stackTraceVar)));
       }
       call.getArguments().add(stExpr);
     }
   }
 }