• RonSijm@programming.dev
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    1 year ago

    preemptively running source as it was written

    It’s not preemptively running source as it’s being written, it’s preemptively evaluating methods as you’re debugging it

    This looks like it’s preemptive compiling, which isn’t just unwise, it’s potentially dangerous.

    So I think what you might mean is preemptively evaluating methods at runtime? - which would be unwise / potentially dangerous - since it could cause side effect

    For example, evaluating a method that increments something and modifies the state. So if it’s preemptively called by the debugger, the state would be modified, and the actual invocation would be different

    I installed the Resharper RC, and this is how it looks like in a small project that parses an excel file: https://i.imgur.com/g4s0P3h.png

    So, in the example my debugger is still on the allTheFieldsEmpty line and hasn’t ran it yet, but resharper already evaluated it to false. Then it also greyed out everything in the if(allTheFieldsEmpty) block, since it knows it wouldn’t hit that

    The next line you can see there was a warning, “Possible impure evaluation” - which is that I assume you were talking about, and it didn’t evaluate that yet. I can click the box and make it evaluation it.

    The debugger inspects the method, as the article mentions, it check for the PureAttribute - indicating that it’s safe to use

    After I marked that GetMappingField method as Pure, it actually did evaluate it without any interaction, and it predicted it would throw an exception https://i.imgur.com/zQ0K3Ge.png - seems pretty useful so far