{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "com.cloudbees.jenkins.GitHubPushCause",
          "shortDescription" : "Started by GitHub push by Geolykt"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/main" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 102,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85",
            "branch" : [
              {
                "SHA1" : "dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85",
                "name" : "refs/remotes/origin/main"
              }
            ]
          },
          "revision" : {
            "SHA1" : "dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85",
            "branch" : [
              {
                "SHA1" : "dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85",
                "name" : "refs/remotes/origin/main"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85",
        "branch" : [
          {
            "SHA1" : "dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85",
            "name" : "refs/remotes/origin/main"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/stianloader/Micromixin.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : false,
  "description" : null,
  "displayName" : "#102",
  "duration" : 80783,
  "estimatedDuration" : 42691,
  "executor" : null,
  "fullDisplayName" : "micromixin #102",
  "id" : "102",
  "inProgress" : false,
  "keepLog" : false,
  "number" : 102,
  "queueId" : 401,
  "result" : "SUCCESS",
  "timestamp" : 1775266468721,
  "url" : "https://stianloader.org/jenkins/job/micromixin/102/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/targets/InjectMixinsTarget.java",
          "micromixin-annotations/src/main/java/org/spongepowered/asm/mixin/injection/Inject.java",
          "micromixin-transformer/src/main/java/org/stianloader/micromixin/transform/internal/annotation/VirtualConstructorMergeAnnotation.java",
          "micromixin-testing-suite-neo/build.gradle",
          ".gitignore",
          "micromixin-transformer/build.gradle",
          "micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/mixins/LocalCaptureMixins.java",
          "micromixin-backports/build.gradle",
          "micromixin-test-j8/pom.xml",
          "gradle/wrapper/gradle-wrapper.properties",
          "micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/targets/LocalCaptureMixinsTarget.java",
          "micromixin-transformer/src/main/java/org/stianloader/micromixin/transform/internal/MixinStub.java",
          "micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/MicromixinTestNeo.java",
          "micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/mixins/InjectMixins.java",
          "micromixin-annotations/build.gradle",
          "micromixin-testing-suite-neo/src/main/java/module-info.java",
          "micromixin-transformer/src/test/java/org/stianloader/micromixin/test/RedirectTest.java",
          "micromixin-transformer/src/main/java/org/stianloader/micromixin/transform/internal/annotation/MixinInjectAnnotation.java",
          "micromixin-testing-suite-neo/micromixin-test-config-gradle.json",
          "micromixin-testing-suite-neo/src/main/resources/micromixin-test-neo-mixins.json"
        ],
        "commitId" : "dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85",
        "timestamp" : 1775266447000,
        "author" : {
          "absoluteUrl" : "https://stianloader.org/jenkins/user/geolykt",
          "fullName" : "Geolykt"
        },
        "authorEmail" : "admin@geolykt.de",
        "comment" : "Correctly handle local capture\u000a\u000aIt's a bit strange because some of this logic should have historically worked,\u000abut apparently not? I guess there might have been one or the other blunder in the\u000aold test suite for local capture - I'd have to look into it anew maybe,\u000athough I suppose it's partially down to a regression within how local variable detection\u000ais performed in conjunction to when the CallbackInfos are injected into the code\u000a(in other words, we now inject it earlier than we used to, so now can capture the CallbackInfo\u000awhich made this regression apparent - though it went uncaught because the old test\u000asuite wasn't run since then).\u000a\u000aRegardless, this solves following issues with local capture:\u000a- Argument capture could be omitted when capturing locals is enabled. But only when not capturing any locals.\u000aThis was incorrect behaviour. All arguments must get captured when local capture is enabled.\u000a- Local capture overflow would produce a cryptic ArrayIndexOutOfBoundsException\u000aThis has been replaced with a more descriptive exception message.\u000a- Local capture underflow wasn't supported, even though it was specified in the specs.\u000aThis has been amended: Trailing locals can now be omitted.\u000a- Not capturing arguments when capturing locals would cause seemingly unrelated errors.\u000aThis has been amended: Proper hints are now added to the exception message detailing possible causes.\u000a- The inability to capture local variables without capturing arguments was not documented.\u000aThis has also been amended: The javadocs now properly state that argument capture is necessary for local capture.\u000a\u000aAlso solves a few issues within the test suite regarding failing tests.\u000a",
        "date" : "2026-04-04 03:34:07 +0200",
        "id" : "dbc31fd12fb4bbe972e7550b7b16d24e9e79bf85",
        "msg" : "Correctly handle local capture",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/targets/InjectMixinsTarget.java"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-transformer/build.gradle"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-transformer/src/main/java/org/stianloader/micromixin/transform/internal/MixinStub.java"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-annotations/build.gradle"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/MicromixinTestNeo.java"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/mixins/InjectMixins.java"
          },
          {
            "editType" : "add",
            "file" : "micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/mixins/LocalCaptureMixins.java"
          },
          {
            "editType" : "edit",
            "file" : "gradle/wrapper/gradle-wrapper.properties"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-transformer/src/test/java/org/stianloader/micromixin/test/RedirectTest.java"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-transformer/src/main/java/org/stianloader/micromixin/transform/internal/annotation/VirtualConstructorMergeAnnotation.java"
          },
          {
            "editType" : "add",
            "file" : "micromixin-testing-suite-neo/src/main/java/org/stianloader/micromixin/testneo/testenv/targets/LocalCaptureMixinsTarget.java"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-annotations/src/main/java/org/spongepowered/asm/mixin/injection/Inject.java"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-transformer/src/main/java/org/stianloader/micromixin/transform/internal/annotation/MixinInjectAnnotation.java"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-testing-suite-neo/build.gradle"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-testing-suite-neo/src/main/resources/micromixin-test-neo-mixins.json"
          },
          {
            "editType" : "edit",
            "file" : ".gitignore"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-test-j8/pom.xml"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-testing-suite-neo/micromixin-test-config-gradle.json"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-backports/build.gradle"
          },
          {
            "editType" : "edit",
            "file" : "micromixin-testing-suite-neo/src/main/java/module-info.java"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://stianloader.org/jenkins/user/geolykt",
      "fullName" : "Geolykt"
    }
  ]
}