asyncViolationCannot use {{asyncType}} between '{{opener}}' and '{{closer}}' (requireSync: true)small-rules/require-paired-callsEnforces balanced opener/closer function calls across all execution paths
asyncViolationCannot use {{asyncType}} between '{{opener}}' and '{{closer}}' (requireSync: true)conditionalOpenerConditional opener '{{opener}}' at {{location}} may not have matching closer on all pathsmaxNestingExceededMaximum nesting depth of {{max}} exceeded for paired callsmultipleOpenersMultiple consecutive calls to '{{opener}}' without matching closers (allowMultipleOpeners: false)robloxYieldViolationYielding function '{{yieldingFunction}}' auto-closes all profiles - subsequent '{{closer}}' will errorunexpectedCloserUnexpected call to '{{closer}}' - expected one of: {{expected}}unpairedCloserUnexpected call to '{{closer}}' - no matching opener on stackunpairedOpenerUnpaired call to '{{opener}}' - missing '{{closer}}' on {{paths}}wrongOrderCloser '{{closer}}' called out of order - expected to close '{{expected}}' but '{{actual}}' is still openThis rule accepts one options object after the severity.
function test() { debug.profilebegin("task"); doWork();}function test() { debug.profilebegin("task"); doWork(); debug.profileend();}