<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='com.cloudbees.jenkins.GitHubPushCause'><shortDescription>Started by GitHub push by Geolykt</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>102</buildNumber><marked><SHA1>dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85</SHA1><branch><SHA1>dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85</SHA1><branch><SHA1>dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85</SHA1><branch><SHA1>dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/stianloader/Micromixin.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#102</displayName><duration>80783</duration><estimatedDuration>42691</estimatedDuration><fullDisplayName>micromixin #102</fullDisplayName><id>102</id><inProgress>false</inProgress><keepLog>false</keepLog><number>102</number><queueId>401</queueId><result>SUCCESS</result><timestamp>1775266468721</timestamp><url>https://stianloader.org/jenkins/view/all/job/micromixin/102/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/targets/InjectMixinsTarget.java</affectedPath><affectedPath>micromixin-annotations/src/main/java/org/spongepowered/asm/mixin/injection/Inject.java</affectedPath><affectedPath>micromixin-transformer/src/main/java/org/stianloader/micromixin/transform/internal/annotation/VirtualConstructorMergeAnnotation.java</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>micromixin-testing-suite-neo/build.gradle</affectedPath><affectedPath>micromixin-transformer/build.gradle</affectedPath><affectedPath>micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/mixins/LocalCaptureMixins.java</affectedPath><affectedPath>micromixin-backports/build.gradle</affectedPath><affectedPath>micromixin-test-j8/pom.xml</affectedPath><affectedPath>gradle/wrapper/gradle-wrapper.properties</affectedPath><affectedPath>micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/targets/LocalCaptureMixinsTarget.java</affectedPath><affectedPath>micromixin-transformer/src/main/java/org/stianloader/micromixin/transform/internal/MixinStub.java</affectedPath><affectedPath>micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/MicromixinTestNeo.java</affectedPath><affectedPath>micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/mixins/InjectMixins.java</affectedPath><affectedPath>micromixin-annotations/build.gradle</affectedPath><affectedPath>micromixin-testing-suite-neo/src/main/java/module-info.java</affectedPath><affectedPath>micromixin-transformer/src/test/java/org/stianloader/micromixin/test/RedirectTest.java</affectedPath><affectedPath>micromixin-transformer/src/main/java/org/stianloader/micromixin/transform/internal/annotation/MixinInjectAnnotation.java</affectedPath><affectedPath>micromixin-testing-suite-neo/micromixin-test-config-gradle.json</affectedPath><affectedPath>micromixin-testing-suite-neo/src/main/resources/micromixin-test-neo-mixins.json</affectedPath><commitId>dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85</commitId><timestamp>1775266447000</timestamp><author><absoluteUrl>https://stianloader.org/jenkins/user/geolykt</absoluteUrl><fullName>Geolykt</fullName></author><authorEmail>admin@geolykt.de</authorEmail><comment>Correctly handle local capture

It's a bit strange because some of this logic should have historically worked,
but apparently not? I guess there might have been one or the other blunder in the
old test suite for local capture - I'd have to look into it anew maybe,
though I suppose it's partially down to a regression within how local variable detection
is performed in conjunction to when the CallbackInfos are injected into the code
(in other words, we now inject it earlier than we used to, so now can capture the CallbackInfo
which made this regression apparent - though it went uncaught because the old test
suite wasn't run since then).

Regardless, this solves following issues with local capture:
- Argument capture could be omitted when capturing locals is enabled. But only when not capturing any locals.
This was incorrect behaviour. All arguments must get captured when local capture is enabled.
- Local capture overflow would produce a cryptic ArrayIndexOutOfBoundsException
This has been replaced with a more descriptive exception message.
- Local capture underflow wasn't supported, even though it was specified in the specs.
This has been amended: Trailing locals can now be omitted.
- Not capturing arguments when capturing locals would cause seemingly unrelated errors.
This has been amended: Proper hints are now added to the exception message detailing possible causes.
- The inability to capture local variables without capturing arguments was not documented.
This has also been amended: The javadocs now properly state that argument capture is necessary for local capture.

Also solves a few issues within the test suite regarding failing tests.
</comment><date>2026-04-04 03:34:07 +0200</date><id>dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85</id><msg>Correctly handle local capture</msg><path><editType>edit</editType><file>.gitignore</file></path><path><editType>edit</editType><file>micromixin-testing-suite-neo/build.gradle</file></path><path><editType>add</editType><file>micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/mixins/LocalCaptureMixins.java</file></path><path><editType>edit</editType><file>micromixin-testing-suite-neo/src/main/resources/micromixin-test-neo-mixins.json</file></path><path><editType>edit</editType><file>micromixin-transformer/src/test/java/org/stianloader/micromixin/test/RedirectTest.java</file></path><path><editType>edit</editType><file>micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/MicromixinTestNeo.java</file></path><path><editType>edit</editType><file>gradle/wrapper/gradle-wrapper.properties</file></path><path><editType>edit</editType><file>micromixin-transformer/src/main/java/org/stianloader/micromixin/transform/internal/annotation/VirtualConstructorMergeAnnotation.java</file></path><path><editType>edit</editType><file>micromixin-transformer/build.gradle</file></path><path><editType>edit</editType><file>micromixin-test-j8/pom.xml</file></path><path><editType>edit</editType><file>micromixin-transformer/src/main/java/org/stianloader/micromixin/transform/internal/MixinStub.java</file></path><path><editType>edit</editType><file>micromixin-transformer/src/main/java/org/stianloader/micromixin/transform/internal/annotation/MixinInjectAnnotation.java</file></path><path><editType>add</editType><file>micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/targets/LocalCaptureMixinsTarget.java</file></path><path><editType>edit</editType><file>micromixin-annotations/build.gradle</file></path><path><editType>edit</editType><file>micromixin-testing-suite-neo/src/main/java/module-info.java</file></path><path><editType>edit</editType><file>micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/targets/InjectMixinsTarget.java</file></path><path><editType>edit</editType><file>micromixin-annotations/src/main/java/org/spongepowered/asm/mixin/injection/Inject.java</file></path><path><editType>edit</editType><file>micromixin-testing-suite-neo/micromixin-test-config-gradle.json</file></path><path><editType>edit</editType><file>micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/mixins/InjectMixins.java</file></path><path><editType>edit</editType><file>micromixin-backports/build.gradle</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://stianloader.org/jenkins/user/geolykt</absoluteUrl><fullName>Geolykt</fullName></culprit></freeStyleBuild>