ЙажаСценарий / Говнокод #27720 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
function main4() {

    let i = 0;

    try {
        try {
            throw 1.0;
        }
        catch (e: number) {
            i++;
            print("asd1");
            throw 2.0;
        }
        finally {
            print("finally");
        }
    }
    catch (e2: number) {
        i++;
        print("asd3");
    }

    assert(i == 2);
}

function main() {
    main4();
    print("done.");
}

Ну вот и все.. шах и мат С/C++ девелоперы... последняя хитровые...аная инструкция finally сделана. (надо еще для линуха сделать .. а то они разные)

Запостил: ASD_77 ASD_77, (Updated )

Комментарии (13) RSS

  • а еще результат работы проги

    asd1
    finally
    asd3
    done.
    Ответить
  • > а то они разные

    Я понимаю почему в крестах так -- тяжелое наследие прошлого и совместимость. А у тебя в новом языке почему такие сложности? Или это просто побочка от использования LLVM?
    Ответить
    • ну да. это же не я это все LLVM ... шас покажу код в LLVM

      static const DenseMap<unsigned, StringRef> opcMap = {
            // Ret is handled specially.
            // Br is handled specially.
            // FIXME: switch
            // FIXME: indirectbr
            // FIXME: invoke
            INST(Resume, Resume),
            // FIXME: unreachable
            // FIXME: cleanupret
            // FIXME: catchret
            // FIXME: catchswitch
            // FIXME: callbr
            // FIXME: fneg
            INST(Add, Add), INST(FAdd, FAdd), INST(Sub, Sub), INST(FSub, FSub),
            INST(Mul, Mul), INST(FMul, FMul), INST(UDiv, UDiv), INST(SDiv, SDiv),
            INST(FDiv, FDiv), INST(URem, URem), INST(SRem, SRem), INST(FRem, FRem),
            INST(Shl, Shl), INST(LShr, LShr), INST(AShr, AShr), INST(And, And),
            INST(Or, Or), INST(Xor, XOr), INST(Alloca, Alloca), INST(Load, Load),
            INST(Store, Store),
            // Getelementptr is handled specially.
            INST(Ret, Return), INST(Fence, Fence),
            // FIXME: atomiccmpxchg
            // FIXME: atomicrmw
            INST(Trunc, Trunc), INST(ZExt, ZExt), INST(SExt, SExt),
            INST(FPToUI, FPToUI), INST(FPToSI, FPToSI), INST(UIToFP, UIToFP),
            INST(SIToFP, SIToFP), INST(FPTrunc, FPTrunc), INST(FPExt, FPExt),
            INST(PtrToInt, PtrToInt), INST(IntToPtr, IntToPtr),
            INST(BitCast, Bitcast), INST(AddrSpaceCast, AddrSpaceCast),
            // FIXME: cleanuppad
            // FIXME: catchpad
            // ICmp is handled specially.
            // FIXME: fcmp
            // PHI is handled specially.
            INST(Freeze, Freeze), INST(Call, Call),
            // FIXME: select
            // FIXME: vaarg
            // FIXME: extractelement
            // FIXME: insertelement
            // FIXME: shufflevector
            // FIXME: extractvalue
            // FIXME: insertvalue
            // FIXME: landingpad
        };
      Ответить
      • Да уж... А как шланг тогда работает? У него своя реализация этих опкодов, а в общей либе её нету?
        Ответить
        • ну да.. clang себе сами все сделали .. а тем кто юзает MLIR там этого не реализовали.. типа а кому оно надо.. приходиться самому добавлять "проход кода" для патчинга такой лажи
          Ответить
  • Нет необходимости плюсовать вне оффтопов - так уж и быть, амнистирую нарушителей.
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8